Протестируйте подсистему автопилота против требования.
Этот пример демонстрирует тестирование подсистемы против требования, с помощью менеджера по тесту, тестовой обвязки, блока 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 (под верификацией модели, Валидацией и Тестом). Затем нажмите 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
сбои оператора.
Нажмите Results и Artifacts в менеджере по тесту.
В дереве результатов расширьтесь, Проверяют Операторы. Нажмите Simulink: verify_high_pos. Трассировка показывает, когда оператор перестал работать.
Нажмите Subplots в панели инструментов и выберите два графика, расположенные вертикально. Выберите более низкий график в Визуализировать панели.
В дереве результатов расширьте Результаты, Тест Требования 1.3 и Сима Аутпута.
Выберите PhiRef
и Phi
. Выходные трассировки выравниваются с verify
результаты в вышеупомянутом графике. Наблюдайте тот PhiRef
превышает 30 градусов когда Phi
превышает 30 градусов.
Обновите RollReference
ограничить PhiRef
сигнал.
Закройте тестовую обвязку.
Добавьте блок Saturation в модель как показано.
Установите нижний предел на -30
и верхний предел 30
.
Соедините блок с его требованием. От браузера Требований перетащите требование 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