exponenta event banner

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

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

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

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

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

Пути и файлы примеров

Для сохранения путей и имен файлов в примере введите следующее:

topModel = 'TestAndVerificationAutopilotExample';
rollModel = 'RollAutopilotMdlRef';
testHarness = 'RollReference_Requirement1_3';
testFile = 'AutopilotTestFile.mldatx';
reqDoc = 'RollAutopilotRequirements.txt';

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

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

open_system(rollModel)

Откройте тестовый файл в диспетчере тестов.

tf = sltest.testmanager.load(testFile);
sltest.testmanager.view;

Откройте документ потребности. В обозревателе тестов разверните в дереве АвтопилотТестиФайл и Основные примеры испытаний конструкции и щелкните Требование 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-адресов, которые сопоставляются с блоком тестовой последовательности и шагами тестирования. Откройте тестовый электрический жгут и выделите компонент, связанный с ссылочным требованием 1.3.

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

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

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

Откройте блок тестовой последовательности.

open_system('RollReference_Requirement1_3/Test Sequence')

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

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

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

Оценка испытаний

Откройте блок оценки тестирования.

open_system('RollReference_Requirement1_3/Test Assessment')

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

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

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

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

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

Проверка подсистемы

Для запуска теста в диспетчере тестов щелкните правой кнопкой мыши на элементе «Requirement 1.3 Test» на панели «Test Browser» и выберите «Run».

Результаты моделирования verify результаты операторов и результаты моделирования в диспетчере тестов. verify_high_pos не удается выполнить инструкцию.

  1. Щелкните Результаты и артефакты в диспетчере тестов.

  2. В дереве результатов разверните пункт Проверить инструкции. Щелкните Simulink: verify_high_pos. Трассировка показывает, когда инструкция завершается неуспешно.

  1. Щелкните Вложенные графики (Subplots) на панели инструментов и выберите два графика, расположенных вертикально. Выберите нижний график на панели Визуализация (Visualize).

  2. В дереве результатов разверните «Results», «Requirement 1.3 Test» и «Sim Output».

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

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

  1. Закройте тестовый жгут.

  2. Добавьте в модель блок насыщения, как показано на рисунке.

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

  4. Свяжите блок с его требованием. Из браузера «Требования» перетащите требование 1.1.2 в блок «Насыщение». На блоке появляется значок, и требование подсвечивается.

Запустите тест еще раз. 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 topModel reqDoc rollModel testHarness testFile harnessLink