Расширьте существующий тестовый набор

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