Тестовое покрытие для основанного на требованиях тестирования

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

Пример показывает, как определение объема результатов покрытия к связанным требованиям может показать и несоответствующее соединение требования и тестирование разрывов. Это также показывает, как увеличить покрытие.

Моделью в этом примере является cruiseControlRBTCovExample, который представляет систему круиз-контроля. Эта модель реализации и соединена с требованиями. Тестовый файл был уже создан для этого примера.

Откройте модель круиз-контроля

cruiseControlRBTCovExample

Просмотрите связанные требования

Требования для этой системы круиз-контроля были получены в Редакторе Simulink Requirements. Чтобы просмотреть требования, используйте slreq.open('cruiseControlRBTCovReqs.slreqx').

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

Используйте sltestmgr открыть менеджера по Тесту.

Нажмите Open и выберите cruiseControlRBTCovTests.mldatx. Тесты были записаны, чтобы проверить, что поведение модели удовлетворяет заданные требования. Они были также настроены, чтобы записать покрытие Решения и Условия. Расширьте Настройки Покрытия, чтобы видеть выбранные метрики.

Каждый тест проверяет и соединяется с требованием. Например, Тест Дросселя проверяет ОТРЕГУЛИРОВАТЬ требование. Это требование указывает, что дроссель применяется гладко, если скорость отличается от цели. Тест проверяет это поведение с помощью логической оценки, которая проверяет, что скорость изменения дросселя между-1 и 1 радианом в секунду, как задано в описании требования.

Запустите тест и просмотрите результаты покрытия

Запустите тест.

Нажмите на Results в панели Результатов и Артефактов, когда тест закончит запускаться. Обратите внимание на то, что тестовая передача и что сообщают о 100% агрегированное покрытие.

Включите определение объема результатов испытаний к связанным требованиям

В Агрегированной панели Результатов покрытия нажмите Scope coverage results to linked requirements флажок. Определение объема результатов означает, что каждый тест только вносит покрытие для соответствующих элементов модели, которые реализуют требование, проверенное тем тестом. Определение объема проверок, что элементы модели покрыты намеченными тестами. Результаты покрытия, которые обновляются автоматически, теперь показывают агрегированное покрытие для Решения и Выполнения в 92% и 76%, соответственно.

Просмотрите результаты покрытия в модели

Нажмите на имя модели в Анализируемом столбце Модели, чтобы подсветить результаты покрытия в модели и отобразить детали Отчета Покрытия.

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

Откройте Подсистему контроллера. Блоки, которые не имеют 100%-го покрытия, появляются в красном. Два набора блоков Константа и Сума не соединяются с требованиями и никогда не выполнялись.

Соедините блоки с требованиями

В этом случае недостающее покрытие указывает на недостаточную связь с требованиями. Эти Постоянные блоки и блоки Суммы необходимы для реализации ШАГА и ДЕКРЕМЕНТНЫХ требований и должны быть соединены с соответствующими требованиями.

В таблице в Панели Requirements расширьте cruiseControlRbtCovReqs. Щелкните правой кнопкой по верхнему блоку Constant и выберите Requirements> Link to Selection in Requirements Browser. Затем нажмите на ИНКРЕМЕНТНОЕ требование в таблице Requirements. Повторите это для верхнего блока Sum.

Для более низких блоков Константа и Суммы повторите соединяющиеся шаги, но соединитесь с ДЕКРЕМЕНТНЫМ требованием.

Увеличьте покрытие с определенного теста

Откройте ПИ-контроллер и нажмите на блок Discrete-Time Integrator. Детали Покрытия показывают что true решение для верхнего предела выполнялось Инкрементным Тестом (T4), а не Тест Дросселя (T6). Поскольку блок является частью реализации ОТРЕГУЛИРОВАТЬ требования, это должно было быть протестировано Тестом Дросселя, который проверяет ОТРЕГУЛИРОВАТЬ требование. Инкрементный Тест не проверяет это требование и не вносит покрытие для этого блока когда Scope model coverage to linked requirements установка включена.

Чтобы разрешить недостающее покрытие для этого блока, Тест Дросселя должен быть обновлен, чтобы осуществить блок Discrete-Time Integrator больше.

В Тестовой панели Браузера менеджера по Тесту выберите Throttle Test. Под Входными параметрами выберите td_throttle_updated.mat как Внешний Входной файл. Этот обновленный входной файл данных дросселя имеет несколько дополнительных секунд тестовых данных, которые увеличивают целевую скорость более настойчиво при поддержании фактической скорости.

Выберите cruiseControlRBTCovTests в Тесте Браузер разделяют на области и повторно выполненный тест. Нажмите Scope coverage results to linked requirements флажок. Результаты покрытия показывают 100%-е покрытие, которое указывает, что тесты соответственно выполняют модель.

Пересмотренный тест показывает проблему в проекте

Пересмотренный Тест Дросселя теперь приводит верификацию к сбою. Отказ происходит, потому что дроссель увеличивается слишком настойчиво и находится вне необходимых контуров, заданных в тесте. Это указывает на проблему с проектом модели. Реализация блока PI Controller должна была бы быть обновлена, чтобы применить дроссель в необходимых пределах, включая то, когда целевые и фактические скорости значительно отличаются.

Заключение

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