exponenta event banner

Расширение существующего набора тестов

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