exponenta event banner

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

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

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

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

sldvdemo_sbr_extend_design модель включает диаграмму Stateflow ®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 создает модель электрического жгута с блоком, который генерирует входные значения для тестовой модели, включенной в блок привязки модели.

Можно изменить тестовые данные в модели кабельных трасс, отредактировав значения данных вручную с помощью интерфейса пользователя Построитель сигналов (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 - путь к блоку модели, второй вход - индекс группы (групп) сигналов в модели кабельных трасс. При вызовеsldvlogsignals, моделируется родительская модель, содержащая блок «Модель».

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

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

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

Прежде чем использовать существующие тестовые данные во время генерации теста, их необходимо сохранить в MAT-файл. Расширение тестового случая включается на панели «Создание теста» параметров конфигурации Simulink Design Verifier. Выберите Расширение существующих тестовых примеров и укажите файл 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%. Покрытие по решению достигается с помощью сгенерированных тестовых векторов.

[~, 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');