Определение и расширение существующих тестовых случаев

В этом примере показано, как Simulink® Design Verifier™ может расширить тесты с дополнительными временными шагами, чтобы эффективно сгенерировать полные тестовые наборы.

Пример запускается с модели, содержащей характеристики с временной задержкой, которые делают оспаривание генерации тестов. Путем создания модели тестовой обвязки по умолчанию и вручную авторской разработки одного теста, удалено критическое препятствие эффективной генерации тестов. Simulink Design Verifier принимает как вход регистрируемые значения от модели тестовой обвязки и эффективно расширяет этот тест, чтобы создать полный тестовый набор.

Характеристики модели, которые мотивируют расширение теста

sldvdemo_sbr_extend_design модель включает Stateflow® Chart SBR это использует временную логику так, чтобы очень длинные тесты потребовались, чтобы делать переход от KEY_OFF утвердите к KEY_ON состояние. Этот тип характеристики с временной задержкой распространен в проектах, где задержка используется, чтобы отклонить побочное поведение или ожидать физической системы или пользователя, чтобы ответить. В этом проекте, удовлетворяя временной логике в этом переходе общее препятствие тестированию любого из состояний и переходов в KEY_ON состояние.

К счастью, этот тип характеристики с временной задержкой обычно легко идентифицировать и удовлетворить вручную созданным тестом.

open_system('sldvdemo_sbr_extend_design');
sf('Open',sldvdemo_ssid_to_sfid('sldvdemo_sbr_extend_design/SBR',11));

Создание модели тестовой обвязки и определение стартовых тестов

Функция Simulink Design Verifier sldvmakeharness создает модель тестовой обвязки с блоком, который генерирует входные значения к тестовой модели, включенной посредством блока Model.

Можно изменить тестовые данные в модели тестовой обвязки путем ручного редактирования значений данных с помощью пользовательского интерфейса Signal Builder. Можно также добавить больше тестов путем создания новых групп сигнала в блоке. В качестве альтернативы можно использовать signalbuilder команда, чтобы программно выполнить то же самое.

В этом примере вы задаете тест, который сохраняет систему в KEY_OFF состояние в течение 5 секунд:

[~, harnessModelFilePath] = sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);
[~, harnessModel] = fileparts(harnessModelFilePath);

startingTestTime = 0:0.5:5;
startingTestData = cell(3, 1);
lengthStartingTest = length(startingTestTime);
startingTestData{1} = zeros(1,lengthStartingTest);
startingTestData{2} = zeros(1,lengthStartingTest);
startingTestData{3} = ones(1,lengthStartingTest);

signalBuilderBlock = sldvdemo_signalbuilder_block(harnessModel);
signalbuilder(signalBuilderBlock,'Append',...
    startingTestTime, startingTestData,...
    {'Inputs.Speed','Inputs.SeatBeltFasten','Inputs.KEY'},'Starting Test Case');

signalbuilder(signalBuilderBlock, 'ActiveGroup', 2);
open_system(signalBuilderBlock);

Логгирование стартовых тестов

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

Первый вход к sldvlogsignals путь к блоку Model, и второй вход является индексом группы (групп) сигнала в модели тестовой обвязки. Когда вы вызываете sldvlogsignals, родительская модель, которая содержит блок Model, симулирована.

Родительская модель не ограничивается моделями тестовой обвязки Simulink Design Verifier. В качестве альтернативы вы можете данные логов от имитационной модели с обратной связью, которая использует блок Model, чтобы включать контроллер так, чтобы тесты контроллера более реалистично отразили непрерывное поведение времени, ожидаемое в системе с обратной связью.

[~, modelBlock] = find_mdlrefs(harnessModel, false);
loggeddata = sldvlogsignals(modelBlock{1},2);

Расширение существующих тестов во время генерации тестов

Прежде чем можно будет использовать существующие тестовые данные во время генерации тестов, данные должны быть сохранены в MAT-файл. Вы включаете расширение теста в панели Генерации тестов параметров конфигурации Simulink Design Verifier. Выберите существующие тесты Extend и задайте файл MAT в поле Файла данных.

Сгенерированные тесты или расширяют один из стартовых тестов с одним или несколькими новыми временными шагами или зададут один или несколько временных шагов, начинающих с начальной буквы, или значения по умолчанию, настройки.

save('existingtestcase.mat', 'loggeddata');

opts = sldvoptions;
opts.ExtendExistingTests = 'on';
opts.ExistingTestFile = 'existingtestcase.mat';
opts.SaveHarnessModel = 'off';
opts.SaveReport = 'off';

[~, fileNames] = sldvrun('sldvdemo_sbr_extend_design', opts, true);

Проверка полного обзора

sldvruntest функция проверяет, что новый тестовый набор достигает полного покрытия модели. cvhtml функция представляет отчет покрытия, который указывает, что 100% Decision Coverage достигаются со сгенерированными тестовыми векторами.

[~, finalCov] = sldvruntest('sldvdemo_sbr_extend_design', fileNames.DataFile, [], true);
cvhtml('Final Coverage', finalCov);

Очистка

Чтобы завершить демонстрацию, закройте все модели и удалите сохраненный файл записанных данных.

close_system(harnessModel,0);
close_system('sldvdemo_sbr_extend_design');
delete('existingtestcase.mat');