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

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

Этот пример демонстрирует тестирование подсистемы против требования, с помощью менеджера по тесту, тестовой обвязки, блока 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';
reqDoc = 'RollAutopilotRequirements.txt';

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

Откройте RollAutopilotMdlRef модель. Система полного контроля TestAndVerificationAutopilotExample ссылается на эту модель.

open_system(fullfile(filePath,rollModel));

Откройте тестовый файл в менеджере по Тесту.

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

Можно также открыть тестовый файл путем нажатия на Apps> Simulink Test (под Model Verification, Валидацией и Тестом). Затем нажмите Simulink Test Manager и откройте тестовый файл в filePath местоположение .

Откройте документ требований. В тестовом браузере расширьте Тесты AutopilotTestFile и Базовой конструкции в дереве и нажмите тест Requirement 1.3. В тестовой вкладке Требования 1.3 расширьте Требования. Дважды кликните на любой из ссылок требований, чтобы открыть Редактор Требований, где можно рассмотреть требования.

В документе, состояниях требования 1.3.1: То, когда список содержит режим, становится активным режимом, список содержат ссылку, буду установлен в фактический угол вращения самолета, кроме при условиях, описанных в дочерних требованиях.

  • Дочерние состояния требования 1.3.1.1: список содержит ссылку, буду обнулен, если фактический угол вращения будет меньше 6 градусов в любом направлении, во время списка содержат обязательство.

  • Дочерние состояния требования 1.3.1.2: список содержит ссылку, буду установлен в 30 градусов в области того же направления как фактический угол вращения, если фактический угол вращения будет больше, 30 градусов во время списка содержат обязательство.

  • Дочерние состояния требования 1.3.1.3: ссылка списка должна быть установлена в команду кнопки поворота кабины до 30 пределов степени, если кнопка поворота будет управлять 3 градусами или больше в любом направлении.

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

Документ требований прослеживает до тестовой обвязки с помощью URL, которые сопоставляют с блоком Test Sequence и тестируют шаги. Откройте тестовую обвязку и подсветите компонент, сопоставленный со ссылочным требованием 1.3.

sltest.harness.open([rollModel '/Roll Reference'],testHarness)
rmi('highlightModel','RollReference_Requirement1_3')

Блок Test Sequence, блок Test Assessment и компонент под тестом соединяются с документом требований. Подсветите ссылки требований путем выбора Apps> Requirements Manager и затем, нажатия на Highlight Links в модели тестовой обвязки. Можно также подсветить ссылки в Тестовом Редакторе Последовательности путем нажатия на выделение ссылок требований Toggle в панели инструментов.

Протестируйте последовательность

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

open_system('RollReference_Requirement1_3/Test Sequence')

Блок Test Sequence создает тестовые воздействия для трех сценариев:

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

Эти сценарии проверяют основную функцию компонента, но не обязательно достигают целей, таких как 100%-е покрытие.

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

Откройте блок 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 степени.

Проверьте подсистему

Чтобы запустить тест, в менеджере по Тесту, щелкают правой кнопкой по Тесту Requirement 1.3 по Тестовой панели Браузера и нажимают Run.

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

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

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

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

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

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

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

  1. Закройте тестовую обвязку.

  2. Добавьте блок Saturation в модель как показано.

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

  4. Соедините блок с его требованием. От браузера Требований перетащите требование 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 harnessLink