Если у вас есть подсистема или диаграмма Stateflow ®, которая не достигает 100% покрытия, и вы не хотите преобразовывать подсистему или диаграмму в блок модели, следуйте этому примеру, чтобы достичь полного покрытия .
В примере используется модель контроллера с замкнутым контуром. Контроллер с замкнутым контуром передает команды в управляемую систему и принимает информацию из среды по мере выполнения команд управления. Контроллер может адаптировать и изменять свои инструкции по мере получения этой информации.
sldvdemo_autotrans модель является имитационной моделью с замкнутым контуром. Диаграмма ShireLogic Stateflow представляет часть контроллера этой модели. Тестовые примеры, разработанные в блоке ManuversGUI Signal Builder, управляют моделированием по замкнутому контуру.
Чтобы смоделировать модель, условие записи, решение и покрытие MCDC для контроллера SheyLogic:
Откройте пример модели:
sldvdemo_autotrans
На вкладке Приложения щелкните стрелку справа от раздела Приложения.
В разделе Проверка модели (Model Verification), Проверка (Validation) и Тест (Test) щелкните Анализатор покрытия (Coverage Analyzer).
На вкладке Покрытие щелкните Настройки.
На панели «Покрытие» диалогового окна «Параметры конфигурации». задайте следующие опции:
Выберите Включить анализ покрытия.
Выберите Подсистема и нажмите Выбрать подсистему.
В диалоговом окне «Выбор подсистемы» выберите ShiftLogic и нажмите кнопку ОК.
В разделе Метрики покрытия выберите Modified Condition Decision Coverage (MCDC).
Снимите флажок Другие метрики, если они выбраны.
На панели «Покрытие» > «Результаты» диалогового окна «Параметры конфигурации» задайте следующие параметры:
В поле имени объекта cvdata введите covdata_original_controller для указания уникального имени переменной рабочей области данных покрытия.
Выберите Генерировать отчет автоматически после анализа.
Нажмите кнопку ОК.
Запуск моделирования sldvdemo_autotrans модель для записи данных покрытия.
После моделирования открывается отчет о покрытии. Отчет указывает на то, что для диаграммы статусов SheyLogic достигается следующий охват:
Решение: 87% (27/31)
Состояние: 67% (8/12)
MCDC: 33% (2/6) условия изменили результат
При моделировании данные покрытия сохраняются в переменной рабочего пространства MATLAB ®.covdata_original_controller, a cvtest объект, содержащий данные покрытия.
Сохраните данные покрытия в файле по пути MATLAB:
cvsave('existingcov',covdata_original_controller);Чтобы найти недостающую зону покрытия для диаграммы SheyLogic, выполните анализ подсистемы для этого блока. Этот метод используется для фокусировки анализа на отдельной части модели.
Для достижения 100% покрытия для контроллера SheyLogic выполните анализ генерации тестов, в котором используются существующие данные покрытия.
Щелкните правой кнопкой мыши блок «SheyLogic» и выберите «Design Verifier» > «Options».
В диалоговом окне «Параметры конфигурации» в дереве «Выбор» выберите узел «Design Verifier». В разделе Опции анализа (Analysis options) в поле Режим (Mode) выберите Test generation.
В узле Design Verifier выберите Test Generation. В разделе Существующие данные покрытия выберите Игнорировать цели, удовлетворяющие существующим данным покрытия.
В поле Файл данных покрытия введите имя файла, содержащего данные покрытия, записанные во время моделирования:
existingcov.cvt
Нажмите кнопку Применить, чтобы сохранить эти настройки.
В дереве Выбрать (Select) щелкните Конструктор (Design) Верификатор (Verifier).
На главной панели Design Verifier нажмите кнопку Generate Tests.
Анализ извлекает диаграмму Stateflow в новую модель с именем ShiftLogic0. Анализ анализирует новую модель, игнорируя цели покрытия, ранее удовлетворенные и записанные в existingcov.cvt файл.
По завершении анализа генерации тестов в окне журнала Simulink ® Design Verifier™ выберите Simulate tests и создайте отчет об охвате модели .
Отчет показывает, что при моделировании диаграммы SheyLogic с тестовыми примерами, созданными Simulink Design Verifier, достигается следующий охват:
Решение: 84% (26/31)
Состояние: 83% (10/12)
MCDC: 67% (4/6) условия изменили результат
В отчете Simulink Design Verifier перечислены шесть тестовых примеров для извлеченной модели, которые удовлетворяют целям, не охваченным в existingcov.cvt файл.
Отчет Simulink Design Verifier указывает на то, что две цели покрытия в таблице Stateflow SheyLogic оказались неудовлетворительными. Неявное событие tick никогда false потому что диаграмма SheyLogic обновляется на каждом шаге времени. Анализ не может удовлетворить условию или покрытию MCDC для любого экземпляра временного события after(TWAIT, tick).
after(TWAIT, tick) семантически эквивалентен
Event == tick && temporalCount(tick) >= TWAIT
Если вы двигаетесь after(TWAIT, tick) в состояние, как в
[after(TWAIT, tick) && speed < down_th]
Simulink Design Verifier определяет, что tick всегда true, поэтому он только тестирует temporalCount(tick) >= TWAIT часть after(TWAIT, tick). Анализ позволяет найти цели тестирования, которые удовлетворяют условиям и охвату MCDC для after(TWAIT, tick).