Этот пример использует sldvdemo_sbr_extend_design
модель. Эта модель включает Stateflow® график SBR
который использует временную логику. Переход от KEY_OFF
состояние в KEY_ON
состояние происходит после моделирования диаграммы Stateflow 500 раз. Для тестирования этого перехода требуется тест с 500 временными шагами.
В этом примере вы создаете тест, которая заставляет переход к KEY_ON
путем установки KEY
вход в 1
на время теста. Вы симулируете модель, используя этот тест, удовлетворяя целям для KEY_OFF/KEY_ON
переход. Затем вы анализируете модель, игнорируя цели, уже удовлетворенные созданной вами тестом.
Откройте модель примера:
Откройте SBR
Диаграмма Stateflow, чтобы увидеть KEY_OFF
/ KEY_ON
переход.
Создайте модель-ссылку модели тестовой обвязки:
[~, harnessModelFilePath] = ... sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);
Модель тестовой обвязки, sldvdemo_sbr_extend_design_harness
, включает в себя:
Блок Model с именем Test Unit, который ссылается на исходную модель, sldvdemo_sbr_extend_design
.
Блок Signal Builder с именем Входы, который содержит входные параметры теста в модель, на которую ссылаются в блоке Model.
Первоначально блок Signal Builder содержит только тест по умолчанию, со всеми тремя входами, установленными на 0
.
Блок DocBlock с именем Тест Explanation, который документирует тест.
Первоначально блок Test Case Explanation не имеет содержимого для теста по умолчанию.
sldvmakeharness
возвращает путь к файлу модели тестовой обвязки в harnessModelFilePath
. Извлеките имя файла модели тестовой обвязки в harnessModel
, для дальнейшего использования:
[~, harnessModel] = fileparts(harnessModelFilePath);
Для порядка KEY_OFF
на KEY_ON
переход состояния, создайте тест, которая выполняет переход к KEY_ON
состояние в 500 временных шагах:
Откройте диалоговое окно Signal Builder для модели тестовой обвязки.
Выберите Axes > Change Time Range.
Временная область значений Signal Builder определяет промежуток времени, в течение которого его выход явно задан. В диалоговом окне Set the total time range установите в поле Max time значение 5
секунд, создавая 500 временных шагов по 0,01 секунды длительности каждого.
Установите KEY
вход в 1
на время этого стартового теста, форсировав переход к KEY_ON
состояние. Выбор Inputs.KEY
Для сигнала требуется два нажатий кнопки. Сначала щелкните сигнал, чтобы точки появились на обоих концах сигнала.
Нажмите на Inputs.KEY
снова сигнал. Signal Builder утолщает сигнал, чтобы указать, что он выбран.
В нижней части диалогового окна Signal Builder, под Left Point, введите 1
для Y.
Нажмите Enter, чтобы применить изменение.
The Inputs.KEY
сигнал устанавливается на 1
на время теста.
Закройте диалоговое окно Signal Builder.
Следующим шагом является регистрация созданного вами начального теста. Затем можно задать, что Simulink® Проектируйте Verifier™ игнорируйте цели, удовлетворенные этим тестом при выполнении анализа.
sldvlogsignals
функция записывает данные теста в MAT-файл, который содержит sldvData
структура. Эта структура хранит все данные, которые собирает и производит программное обеспечение во время анализа.
Для регистрации начальных тестов:
Сохраните имя блока Model в модели тестовой обвязки, которая ссылается на sldvdemo_sbr_extend_design
модель:
[~, modelBlock] = find_mdlrefs(harnessModel, false);
Симулируйте модель, на которую ссылается блок Model, используя новый тест и записывайте входные сигналы в переменную рабочей области loggeddata
:
loggeddata = sldvlogsignals(modelBlock{1});
Сохраните записанные данные в MAT-файле с именем existingtestcase.mat
:
save('existingtestcase.mat', 'loggeddata');
Этот файл будет задан при анализе sldvdemo_sbr_extend_design
модель.
Теперь можно анализировать sldvdemo_sbr_extend_design
моделировать и указать, что анализ расширяет уже удовлетворенные тесты. Анализ использует данные существующие тесты как начальная точка и не пытается сгенерировать тесты для KEY_OFF
на KEY_ON
переход на графике SBR Stateflow.
Задайте стартовый тест и проанализируйте модель:
Откройте модель.
open_system('sldvdemo_sbr_extend_design');
На вкладке Design Verifier нажмите Test Generation Settings.
В диалоговом окне Параметров конфигурации на панели Test Generation под Existing test cases выберите Extend existing test cases.
В поле Data file введите имя MAT-файла, который содержит записанные данные:
existingtestcase.mat
Очистить Ignore objectives satisfied by existing test cases.
Когда вы снимаете эту опцию, программное обеспечение включает начальный тест в окончательный тестовый набор. Вы увидите, что полный тестовый набор достигает 100% покрытия модели.
Чтобы закрыть диалоговое окно Параметры конфигурации, нажмите OK.
Сохраните sldvdemo_sbr_extend_design
модель на MATLAB® путь с именем sldvdemo_sbr_extend_design_test
.
Нажмите Generate Tests.
Сначала в окне журнала перечисляются цели, которые выполнил начальный тест.
Затем в окне журнала перечисляются цели, сгенерированные после начального теста.
Чтобы убедиться, что этот анализ создает полный тестовый набор, сгенерируйте модель тестовой обвязки, чтобы можно было симулировать модель с сгенерированными тестовыми примерами:
На вкладке Design Verifier, в разделе Review Results, нажмите Create Test Harness Model.
В модели тестовой обвязки sldvdemo_sbr_extend_design_test_harness
, откройте блок Signal Builder с именем Inputs.
Чтобы симулировать модель с помощью всех тестов, нажмите кнопку Run all and produce coverage.
Когда симуляция завершена, отображается отчет о покрытии модели.
Просмотрите информацию о покрытии для sldvdemo_sbr_extend_design_test
модель, чтобы увидеть, что полный тестовый набор достигает 100% покрытия.