Этот пример показывает, как использовать Simulink® Design Verifier™, чтобы расширить существующий тестовый набор, чтобы получить недостающее покрытие модели.
Вы анализируете модель в качестве примера и генерируете тестовый набор, чтобы достигнуть полного охвата. Затем измените модель, таким образом, что тесты больше не достигают полного охвата. Наконец, вы анализируете измененную модель, чтобы получить недостающее покрытие при помощи Simulink® Design Verifier™.
Анализируйте модель 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);
Функция sldvruntest
моделирует модель с существующим тестовым набором. Функция 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';
Функция sldvruntest
моделирует измененную модель sldvdemo_cruise_control_mod
с существующим тестовым набором и вводит идентичный модели sldvdemo_cruise_control
. Функция 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
измененная модель. Функция sldvruntest
моделирует измененную модель с расширенным тестовым набором. Отчет 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');