Основанное на требованиях тестирование на разработку моделей

Протестируйте подсистему автопилота против требований.

Этот пример демонстрирует тестирование подсистемы против требования, с помощью менеджера по тесту, тестовой обвязки, блока Test Sequence и блока Test Assessment. Ссылки на документ требований на тест и тестовую обвязку и операторы verify оценивают компонент под тестом.

Когда вы создаете свою модель, можно добавить тесты, чтобы проверить модель по требованиям. Следующие пользователи могут запустить те же тесты, затем добавить тесты, чтобы выполнить дальнейшие цели верификации, такие как достижение 100%-го покрытия или проверка сгенерированного кода.

Этот пример тестирует подсистему Roll Reference против требования с помощью трех сценариев. Блок Test Sequence обеспечивает входные параметры, и блок Test Assessment оценивает компонент. Подсистема Roll Reference является одним компонентом системы управления автопилота. Roll Reference управляет опорным углом системы управления списка самолета. Подсистема приводит одну оценку к сбою, запрашивая конструктивное изменение, которое ограничивает подсистему вывод под высокими входными углами.

Пути и файлы в качестве примера

Введите следующее, чтобы сохранить пути и имена файлов для примера:

filePath = fullfile(matlabroot,'toolbox','simulinktest','simulinktestdemos');
topModel = 'TestAndVerificationAutopilotExample';
rollModel = 'RollAutopilotMdlRef';
testHarness = 'RollReference_Requirement1_3';
testFile = 'AutopilotTestFile.mldatx';

Откройте тестовый файл и модель

Откройте тестовый файл в менеджере по Тесту. Можно также открыть менеджера по Тесту путем выбора Analysis> Test Manager из меню Simulink.

tf = sltest.testmanager.load(fullfile(filePath,testFile));
sltest.testmanager.view;

Откройте модель RollAutopilotMdlRef.

open_system(fullfile(filePath,rollModel));

Просмотрите тест и образцовые требования

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

В тесте расширьте раздел Requirements, чтобы просмотреть ссылки на набор требования.

Тестовые воздействия

Тест создает три сценария, чтобы протестировать нормальные условия, и исключения в Списке Содержат Ссылочные требования. Тестовые векторы созданы в блоке Test Sequence.

Откройте блок Test Sequence.

sltest.harness.load([rollModel '/Roll Reference'],testHarness)
open_system('RollReference_Requirement1_3/Test Sequence')

Для каждого сценария тестовая последовательность устанавливает уровень сигнала, затем затрагивает автопилот. Тестовая последовательность проверяет, что PhiRef стабилен в течение минимального времени DurationLimit, прежде чем это перейдет к следующему уровню сигнала. Для первых двух сценариев тестовая последовательность устанавливает локальную переменную EndTest на 1, инициировав переход к следующему сценарию.

Протестируйте оценки

Откройте блок Test Assessment. %

open_system('RollReference_Requirement1_3/Test Assessment')

Блок Test Assessment оценивает Roll Reference. Блок оценки является соединенной подсистемой библиотеки, которая упрощает тестовое повторное использование оценки между несколькими тестовыми обвязками. Блок содержит соответствие операторов verify:

  • Требование, что PhiRef = Phi, когда Phi действует в низких и высоких пределах.

  • Требование, что PhiRef = 0, когда степени Phi < 6.

  • Требование, что PhiRef = 30, когда степени Phi > 30.

  • Требование это, когда TurnKnob занят, PhiRef = TurnKnob если степени TurnKnob >= 3.

Запустите тест

В менеджере по Тесту панель инструментов нажмите Run.

Симуляция возвращает результаты оператора verify и симуляцию вывод в менеджере по Тесту. Сбои оператора verify_high_pos.

  1. Нажмите Results и Artifacts в менеджере по тесту.

  2. В дереве результатов расширьтесь, Проверяют Операторы. Нажмите Simulink: verify_high_pos. Трассировка показывает, когда оператор перестал работать.

  1. Во вкладке Data Inspector нажмите Subplots и выберите два графика, расположенные вертикально. Выберите более низкий график в Визуализировать панели.

  2. В дереве результатов расширьте Результаты, Тест Требования 1.3 и Сима Аутпута.

  3. Выберите PhiRef и Phi. Выходные трассировки выравниваются с результатами verify в вышеупомянутом графике. Заметьте, что PhiRef превышает 30 градусов, когда Phi превышает 30 градусов.

Обновите RollReference, чтобы ограничить сигнал PhiRef:

  1. Добавьте блок Saturation как показано.

  2. Установите нижний предел на -30 и верхний предел 30.

  3. Соедините блок с его требованием. От браузера Требований перетащите требование 1.1.2 к блоку Saturation. Значок появляется на блоке, и требование подсвечено.

Запустите тест снова. Передачи оператора verify и вывод в менеджере по тесту показывают, что PhiRef не превышает 30 градусов.

close_system(rollModel,0);
close_system(topModel,0);
close_system('RollRefAssessLib',0);
sltest.testmanager.clear;
sltest.testmanager.clearResults;
sltest.testmanager.close;
clear filePath topModel reqDoc rollModel testHarness testFile