Используйте команды покрытия в скрипте

Следующий скрипт демонстрирует некоторые общие команды покрытия модели.

Этот скрипт:

  • Создает два файла данных, чтобы загрузить перед симуляцией.

  • Создает два объекта cvtest, testObj1 и testObj2, и моделирует их использующий параметры модели по умолчанию. Каждый объект cvtest использует свойство setupCmd загрузить файл данных перед симуляцией.

  • Включает решение, условие и покрытие MCDC.

  • Получает результаты Decision Coverage для подсистемы Adjustable Rate Limited.

  • Использование cvhtml, чтобы отобразить результаты покрытия для двух тестов и совокупного покрытия.

  • Вычислите совокупное покрытие с оператором + и сохраните результаты

mdl = 'slvnvdemo_ratelim_harness';
mdl_subsys = 'slvnvdemo_ratelim_harness/Adjustable Rate Limiter';

open_system(mdl);
open_system(mdl_subsys);

t_gain = (0:0.02:2.0)'; u_gain = sin(2*pi*t_gain);
t_pos = [0;2]; u_pos = [1;1]; t_neg = [0;2]; u_neg = [-1;-1];
save('within_lim.mat','t_gain','u_gain','t_pos','u_pos', ...
    't_neg', 'u_neg');
t_gain = [0;2]; u_gain = [0;4]; t_pos = [0;1;1;2]; 
u_pos = [1;1;5;5]*0.02; t_neg = [0;2]; u_neg = [0;0];
save('rising_gain.mat','t_gain','u_gain','t_pos','u_pos', ...
    't_neg', 'u_neg');

testObj1               = cvtest(mdl_subsys);
testObj1.label         = 'Gain within slew limits';
testObj1.setupCmd      = 'load(''within_lim.mat'');';
testObj1.settings.mcdc = 1;
testObj1.settings.condition = 1;
testObj1.settings.decision = 1;

testObj2          = cvtest(mdl_subsys);
testObj2.label    = 'Rising gain that temporarily exceeds slew limit';
testObj2.setupCmd = 'load(''rising_gain.mat'');';
testObj2.settings.mcdc = 1;
testObj2.settings.condition = 1;
testObj2.settings.decision = 1;

[dataObj1,simOut1] = cvsim(testObj1);
decision_cov1 = decisioninfo(dataObj1,mdl_subsys);
percent_cov1 = 100 * decision_cov1(1) / decision_cov1(2)
cc_cov2 = complexityinfo(dataObj1, mdl_subsys);

[dataObj2,simOut2] = cvsim(testObj2,[0 2]);
decision_cov2 = decisioninfo(dataObj2,mdl_subsys);
percent_cov2 = 100 * decision_cov2(1) / decision_cov2(2)
cc_cov2 = complexityinfo(dataObj1, mdl_subsys);


cvhtml('ratelim_report',dataObj1,dataObj2);
cumulative = dataObj1+dataObj2;

cvsave('ratelim_testdata',cumulative);

close_system('slvnvdemo_ratelim_harness',0);