Этот пример показывает, как 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');