В этом примере показано, как использовать Simulink ® Design Verifier™ для расширения существующего тестового набора, чтобы получить отсутствующее покрытие модели.
Вы анализируете модель примера и генерируете тестовый набор, чтобы достичь полного покрытия. Затем измените модель так, чтобы тесты больше не достигли полного покрытия. Наконец, вы анализируете измененную модель, чтобы получить недостающее покрытие с помощью Verifier™ Simulink ® Design.
Анализируйте sldvdemo_cruise_control
моделировать и сгенерировать тестовый набор, которое достигает полного покрытия модели. Чтобы проанализировать модель, чтобы сгенерировать тесты, которые обеспечивают покрытие модели, используйте sldvrun
функция. Установите параметры верификации проекта с sldvoptions
.
open_system 'sldvdemo_cruise_control'; opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'MCDC'; opts.SaveHarnessModel = 'off'; opts.SaveReport = 'off'; [ status, files ] = sldvrun('sldvdemo_cruise_control', opts, true);
Результат анализа генерации тестов появляется в окне Simulink Design Verifier Results Summary.
close_system('sldvdemo_cruise_control',0);
The sldvruntest
Функция моделирует модель с существующим тестовым набором. The cvhtml
функция создает отчет о покрытии, который указывает на начальный охват sldvdemo_cruise_control
модель.
open_system 'sldvdemo_cruise_control'; [ outData, initialCov ] = sldvruntest('sldvdemo_cruise_control', files.DataFile, [], true); cvhtml('Initial coverage',initialCov); close_system('sldvdemo_cruise_control',0);
Загрузите измененный sldvdemo_cruise_control_mod
модель. Целевое значение скорости контроллера ограничено 70 при помощи Saturation
блок.
load_system 'sldvdemo_cruise_control_mod'; load_system 'sldvdemo_cruise_control_mod/Controller';
The sldvruntest
функция моделирует измененные sldvdemo_cruise_control_mod
модель с существующим тестовым набором и входами, идентичными sldvdemo_cruise_control
модель. The cvhtml
функция создает отчет о покрытии, который указывает на измененную sldvdemo_cruise_control_mod
модель больше не достигает полного покрытия.
[ outData, startCov ] = sldvruntest('sldvdemo_cruise_control_mod', files.DataFile, [], true); cvhtml('Coverage with the original testsuite',startCov);
Чтобы достичь полного покрытия модели, sldvgencov
функция анализирует модель и расширяет существующий тестовый набор.
[ status, covData, files ] = sldvgencov('sldvdemo_cruise_control_mod', opts, true, startCov);
Проверьте, что новый тестовый набор достигает полного покрытия для sldvdemo_cruise_control_mod
модифицированная модель. The sldvruntest
Функция симулирует измененную модель с расширенным тестовым набором. The cvhtml
отчет показывает общее покрытие, достигнутое sldvdemo_cruise_control_mod
модель.
[ additionalOut, additionalCov ] = sldvruntest('sldvdemo_cruise_control_mod', files.DataFile, [], true); totalCov = startCov + additionalCov; cvhtml('With additional coverage',totalCov);
Чтобы завершить пример, закройте модель.
close_system('sldvdemo_cruise_control_mod');