Используйте модель спецификации для основанного на требованиях тестирования

В этом примере показано, как использовать модель спецификации, чтобы выполнить основанное на требованиях тестирование. В этом примере вы следуете за систематическим подходом, чтобы проверить вашу модель проекта по требованиям. Для подробного описания модели спецификации смотрите то, Что Модель Спецификации?.

Шаг 1: требования автора в редакторе требований

Этот пример использует контроллер автопилота крена, RollAutopilotMdlRef который является моделью проекта, которая управляет углом вращения самолета. Контроллер автопилота крена действует в двух высокоуровневых режимах:

1. Крен содержит режим: Этот режим или обеспечивает текущий угол вращения самолета или изменяет его согласно заданному пользователями углу.

2. Заголовок содержит режим: Этот режим или обеспечивает текущий заголовок или прокручивает самолет, чтобы достигнуть заданного пользователями направляющегося значения. Для получения дальнейшей информации на Контроллере Автопилота Крена система, смотрите Основанное на требованиях Тестирование на Разработку моделей (Simulink Test).

Для контроллера автопилота требования описывают системные интерфейсы, высокоуровневые системные режимы и ожидаемое поведение контроллера. Эти требования созданы в Редакторе Требований и сохраненные в AP_Controller.slreqx файл. Для получения дополнительной информации о Редакторе Требований смотрите работу с Требованиями в Редакторе Simulink (Simulink Requirements). Чтобы просмотреть требования, откройте Редактор Требований путем ввода:

slreq.open('AP_Controller');

Редактор Требований отображает требования высокого уровня для режимов Roll Hold и Heading Hold. Когда вы нажимаете на каждое требование, вкладка перечисляет детали для требования.

Шаг 2: создайте модель спецификации

Когда вы создаете модель спецификации, необходимо рассмотреть несколько факторов, таких как тип требований, выбор блоков модели и уровень abstraction.Follow инструкции описанный в Создании Модели Спецификации.

Откройте sldvexSpecPartial модель спецификации, которая покрывает набор требований автопилота:

spec_model = 'sldvexSpecPartial';
open_system(spec_model);

sldvexSpecPartial модель состоит из интерфейсов ввода и вывода. Таблица истинности получает требования.

Открыть таблицу истинности, введите:

open_system('sldvexSpecPartial/AP Controller Requirements');

Шаг 3. Соедините требования с моделью спецификации

Выполните эти шаги, чтобы соединить требования с моделью спецификации.

1. Щелкните правой кнопкой по таблице истинности под названием AP Controller Requirements в модели спецификации. В контекстном меню нажмите Requirements> Select для соединения с Simulink.

2. Откройте требования в Редакторе Требований. Щелкните правой кнопкой по требованию, которое вы хотите соединить с таблицей истинности и нажать Link from AP Controller Requirements (Truth Table). Если вы имеете несколько таблиц истинности, каждый задающий группу требований, соединяете их также.

Шаг 4: сгенерируйте тесты для модели спецификации

Используйте sldvoptions сгенерировать тесты для модели спецификации. Каждое требование было сопоставлено с отдельной целью генерации тестов использование sldv.test().

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'None';
[~, files] = sldvrun(spec_model,opts,true);

После того, как анализ завершается, отображения окна Results Summary, которым шесть из шести из целей удовлетворяют.

Шаг 5: создайте тестовую систему преобразования, чтобы запустить тесты на модели проекта

Модель спецификации контроллера автопилота и модель проекта имеют различные интерфейсы, что означает, что тесты, сгенерированные на шаге 4, не поддерживаются для выполнения симуляции на модели проекта.

Например, Угол вращения Самолета имеет тип области значений перечисления в спецификации, но имеет двойной тип в модели проекта.

Во время тестового процесса преобразования, если значение сигналов, такое как RA_Horizontal, является областью значений, можно выбрать любое значение, которое падает в той области значений. Может использоваться различная эвристика, такая как средняя точка (где можно выбрать среднюю точку области значений), граничное значение (где можно выбрать нижнюю или верхнюю границу области значений), или даже случайная стратегия (где вы выбираете случайное значение в области значений). Для контроллера автопилота, подсистема sldvexDesignHarness/Test Conversion реализует стратегию средней точки в модели тестовой обвязки как показано ниже:

design_model = 'sldvexDesignHarness';
load_system(design_model);
open_system('sldvexDesignHarness/Test Conversion');

Шаг 6: симулируйте тесты на модели проекта и идентифицируйте недостающие требования

Модель проекта разрабатывается независимо при помощи документа требований. Чтобы проверить проект, создайте модель тестовой обвязки, которая содержит эти четыре подсистемы:

(i) Модель спецификации.

(ii) Модель проекта.

(iii) Тестовая подсистема преобразования описана на шаге 5.

(iv) Блок верификации во время выполнения. Это проверки блока, является ли значение сигналов проекта в диапазоне, указанном моделью спецификации.

Запустите тесты от шага 5 на модели проекта при помощи sldvruntest и сгенерируйте отчет покрытия модели.

cvopts = sldvruntestopts;
cvopts.coverageEnabled =  true;
[~, initCov] = sldvruntest(design_model,files.DataFile,cvopts);
cvhtml('InitialCov',initCov);

Результаты анализа сообщают, что полный охват не достигается для roll_ap_mod, и покрытие подсистемы достигается для модели проекта.

Шаг 7: обновите модель спецификации путем добавления недостающих требований

Добавьте, что требование добавляется к sldvexSpecFull модель спецификации для анализа.

spec_model = 'sldvexSpecFull';
open_system(spec_model);

(a) Сгенерируйте тесты на обновленной модели спецификации

Используйте sldvoptions сгенерировать тесты.

opts = sldvoptions;
opts.Mode = 'TestGeneration';
opts.ModelCoverageObjectives = 'None';
[~, files] = sldvrun(spec_model,opts,true);

(b) Симулируйте тесты на модели проекта и сгенерируйте отчет покрытия

Откройте 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;

Похожие темы