В этом примере показано, как Simulink® Design Verifier™ может предназначаться для своего анализа к одной подсистеме в течение непрерывного времени симуляция с обратной связью и сгенерировать тесты для недостающего покрытия в той подсистеме.
Пример запускается путем измерения покрытия подсистемы в имитационной модели с обратной связью. Simulink Design Verifier находит новые тесты, которые достигают недостающего покрытия подсистемы.
sldvdemo_autotrans
модель является имитационной моделью с обратной связью. Подсистема ShiftLogic
график Stateflow® и представляет часть контроллера этой модели. Тесты спроектировали в блоке Signal Builder ManeuversGUI
управляйте симуляцией с обратной связью. Можно использовать cvtest
и cvsim
функции, чтобы измерить покрытие модели, достигнутое для этой подсистемы в имитационной модели с обратной связью. В этом примере, задавая вход к cvtest
когда путь к подсистеме, а не к имени модели приводит к измерению покрытия для подсистемы только. Кроме того, второй вход к cvsim
задает временной интервал, чтобы симулировать модель, и это выведено из области значений времени текущей панели в блоке ManeuversGUI
.
cvhtml
функция представляет отчет, который указывает, что 87%-е Решение, 67%-е Условие и 33%-е покрытие MCDC достигаются путем симуляции теста, созданного в блоке ManeuversGUI
.
open_system('sldvdemo_autotrans'); open_system('sldvdemo_autotrans/ManeuversGUI'); test = cvtest('sldvdemo_autotrans/ShiftLogic'); test.settings.decision = 1; test.settings.condition = 1; test.settings.mcdc = 1; signalBuilderBlock = sldvdemo_signalbuilder_block('sldvdemo_autotrans'); signalBuilderTime = signalbuilder(signalBuilderBlock); simulationStopTime = signalBuilderTime{1,1}(end); existingCovData = cvsim(test,[0 simulationStopTime]); cvhtml('Existing Coverage', existingCovData);
Чтобы использовать существующие данные о покрытии во время генерации тестов, сохраните существующие данные о покрытии к .cvt файлу данных покрытия. Можно использовать существующие данные о покрытии путем определения информационного канала покрытия в параметре файла данных Покрытия и целях установки Ignore, которым удовлетворяют в существующем параметре данных о покрытии к on
в панели Генерации тестов параметров конфигурации Simulink Design Verifier.
В этом примере, первом входе к sldvrun
задает подсистему, чтобы анализировать. Инструктирование Simulink Design Verifier анализировать подсистему выгодно, когда часть контроллера модели должна быть протестирована отдельно или, когда это необходимо, разделить анализ большой модели в меньшие, управляемые части.
Как вы видите в отчете, Simulink Design Verifier только находит тесты для целей покрытия, которые не покрыты существующим файлом покрытия. Заметьте что 4 цели покрытия в подсистеме ShiftLogic
как доказывают, невыполнимы. Это ожидается потому что логика в диаграмме Stateflow ShiftLogic
использует временные события и начиная с этого графика обновления в каждом шаге расчета, использование временных условий должно быть удовлетворительным. Также обратите внимание, что, мертвый код в подсистеме всегда будет мертвым кодом в модели, содержащей ту подсистему.
Чтобы сгенерировать модель тестовой обвязки, Simulink Design Verifier извлекает содержимое подсистемы ShiftLogic
на Тестовый Модульный компонент, питаемый блоком Signal Builder, содержащим сгенерированные тесты.
cvsave('existingcov',existingCovData); opts = sldvoptions; opts.IgnoreCovSatisfied = 'on'; opts.CoverageDataFile = 'existingcov.cvt'; opts.ModelCoverageObjectives = 'MCDC'; opts.SaveHarnessModel = 'on'; opts.SaveReport = 'on'; [status, fileNames] = sldvrun('sldvdemo_autotrans/ShiftLogic',opts,true); [~, harnessModel] = fileparts(fileNames.HarnessModel); open_system(harnessModel);
Чтобы завершить демонстрацию, закройте все модели и удалите сохраненный файл данных покрытия.
close_system('sldvdemo_autotrans'); close_system(fileNames.ExtractedModel,0); close_system(fileNames.HarnessModel,0); delete('existingcov.cvt');