В этом примере показано, как использовать модель спецификации для выполнения тестирования на основе требований. В этом примере используется систематический подход для проверки проектной модели на соответствие требованиям. Подробное описание модели спецификации см. в разделе Что такое модель спецификации?.
В этом примере используется контроллер автопилота, RollAutopilotMdlRef которая представляет собой конструкторскую модель, которая управляет углом крена летательного аппарата. Контроллер автопилота крена работает в двух режимах высокого уровня:
1. Режим удержания крена: этот режим либо поддерживает текущий угол крена самолета, либо изменяет его в соответствии с заданным пользователем углом.
2. Режим удержания курса: этот режим либо поддерживает текущий курс, либо катит самолет для достижения заданного пользователем значения курса. Подробные сведения о системе контроллера автопилота рулона см. в разделе Тестирование на основе требований для разработки модели (Simulink Test).
Для контроллера автопилота требования описывают системные интерфейсы, режимы системы высокого уровня и ожидаемое поведение контроллера. Эти требования создаются в редакторе требований и сохраняются в AP_Controller.slreqx файл. Дополнительные сведения о редакторе требований см. в разделе Работа с требованиями в редакторе Simulink (Simulink Requirements). Для просмотра требований откройте Редактор требований путем ввода следующих данных:
slreq.open('AP_Controller');

Редактор требований отображает высокоуровневые требования для режимов «Удержание рулона» и «Удержание заголовка». При щелчке по каждому требованию на закладке отображается подробная информация о требовании.
При создании модели спецификации необходимо учитывать несколько факторов, таких как тип требований, выбор блоков модели и уровень абстракции. Следуйте инструкциям, описанным в разделе Создание модели спецификации.
Откройте окно sldvexSpecPartial модель спецификации, охватывающая набор требований автопилота:
spec_model = 'sldvexSpecPartial';
open_system(spec_model);

sldvexSpecPartial модель состоит из интерфейсов ввода и вывода. Таблица истинности отражает требования.
Чтобы открыть таблицу истинности, введите:
open_system('sldvexSpecPartial/AP Controller Requirements');


Выполните следующие действия, чтобы связать требования с моделью спецификации.
1. Щелкните правой кнопкой мыши таблицу истинности с именем AP Controller Requirements в модели спецификации. В контекстном меню выберите «Требования» > «Выбрать» для связи с Simulink.
2. Откройте окно «Requirements Editor» (Редактор требований). Щелкните правой кнопкой мыши по требованию, которое требуется связать с таблицей истинности, и выберите "Link from AP Controller Requirements" ("Link from AP Controller Requirements" ("Link from Ap Если имеется несколько таблиц истинности, каждая из которых определяет группу требований, также свяжите их.
Использовать sldvoptions для создания тестовых примеров для модели спецификации. Каждое требование связано с отдельной целью создания теста с помощью sldv.test().
opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'None'; [~, files] = sldvrun(spec_model,opts,true);
После завершения анализа в окне Сводка результатов (Results Summary) отображается, что шесть из шести целей выполнены.
Модель спецификации контроллера автопилота и модель конструкции имеют различные интерфейсы, что означает, что тесты, созданные на шаге 4, не поддерживаются для выполнения моделирования модели конструкции.
Например, «Угол крена самолета» относится к типу диапазона перечисления в спецификации, но имеет двойной тип в конструкторской модели.
При тестовом преобразовании, если значение сигнала, например RA_Horizontal, является диапазоном, можно выбрать любое значение, которое попадает в этот диапазон. Могут использоваться различные эвристики, такие как средняя точка (где можно выбрать среднюю точку диапазона), граничное значение (где можно выбрать нижнюю или верхнюю границу диапазона) или даже случайная стратегия (где вы выбираете случайное значение в диапазоне). Для контроллера автопилота подсистема sldvexDesignHarness/Test Conversion реализует стратегию средней точки в модели электрического жгута, как показано ниже:
design_model = 'sldvexDesignHarness'; load_system(design_model); open_system('sldvexDesignHarness/Test Conversion');

Проектная модель разрабатывается независимо с использованием документа требований. Для проверки конструкции создайте модель кабельных трасс, содержащую следующие четыре подсистемы:
(i) модель спецификации.
модель конструкции.
тестовая подсистема преобразования, описанная на этапе 5.
блок проверки времени выполнения. Этот блок проверяет, находится ли значение расчетного сигнала в диапазоне, указанном в модели спецификации.
Выполните тесты с шага 5 для конструкторской модели с помощью sldvruntest и сформировать отчет о покрытии модели.
cvopts = sldvruntestopts;
cvopts.coverageEnabled = true;
[~, initCov] = sldvruntest(design_model,files.DataFile,cvopts);
cvhtml('InitialCov',initCov);

Результаты анализа показывают, что полный охват не достигнут для roll_ap_modи обеспечивается покрытие подсистемы для конструкторской модели.
Добавить требование добавлено в sldvexSpecFull модель спецификации для анализа.
spec_model = 'sldvexSpecFull';
open_system(spec_model);

Использовать sldvoptions для создания тестовых примеров.
opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'None'; [~, files] = sldvrun(spec_model,opts,true);
Откройте окно sldvexDesignHarness модель, которая содержит модель конструкции, модель спецификации и подсистему преобразования тестов.
design_model = 'sldvexDesignHarness';
open_system(design_model);

Моделирование тестовых примеров с помощью sldvruntest и сформировать отчет о покрытии модели.
cvopts = sldvruntestopts;
cvopts.coverageEnabled = true;
[~, FinalCov] = sldvruntest(design_model,files.DataFile,cvopts);
cvhtml('FinalCov', FinalCov);

Отчет об охвате показывает, что достигается полный охват проектной модели.
bdclose('all');
slreq.clear;