Если у вас есть подсистема или Stateflow® диаграмма, которая не достигает 100% покрытия, и вы не хотите преобразовывать подсистему или график в блок Model, следуйте этому примеру, чтобы достичь полного покрытия.
В примере используются модели контроллеров с обратной связью. Контроллер с обратной связью передает команды в управляемую систему и получает информацию от окружения по мере выполнения команд управления. Контроллер может адаптироваться и изменить свои инструкции по мере получения этой информации.
The sldvdemo_autotrans
модель является моделью симуляции с обратной связью. Диаграмма ShiftLogic Stateflow представляет часть контроллера этой модели. Тесты, разработанные в ManeuversGUI Signal Builder блокируют симуляцию замкнутой системы.
Чтобы симулировать модель, условие записи, решение и покрытие MCDC для контроллера ShiftLogic:
Откройте модель примера:
sldvdemo_autotrans
На вкладке Apps щелкните стреле справа от Apps раздела.
В разделе Model Verification, Validation, and Test нажмите Coverage Analyzer.
На вкладке Coverage нажмите Settings.
На панели Coverage в диалоговом окне Параметры конфигурации. установите следующие опции:
Выберите Enable coverage analysis.
Выберите Subsystem и нажмите Select Subsystem.
В диалоговом окне «Выбор подсистемы» выберите ShiftLogic
и нажмите OK.
В группе Coverage metrics выберите Modified Condition Decision Coverage (MCDC)
.
Очистить Other metrics, если они выбраны.
На панели Coverage > Results диалогового окна Параметров конфигурации установите следующие опции:
В cvdata object name поле введите covdata_original_controller
чтобы задать уникальное имя для переменной рабочей области данных о покрытии.
Выберите Generate report automatically after analysis.
Нажмите OK.
Запустите симуляцию sldvdemo_autotrans
модель для записи данных о покрытии.
После симуляции откроется отчет о покрытии. Отчет указывает, что для диаграммы ShiftLogic Stateflow достигается следующее покрытие:
Решение: 87% (27/31)
Условие: 67% (8/12)
MCDC: 33% (2/6) условия изменили результат
Симуляция сохраняет данные покрытия в MATLAB® переменная рабочей области covdata_original_controller
, а cvtest
объект, который содержит данные о покрытии.
Сохраните данные о покрытии в файле на пути MATLAB:
cvsave('existingcov',covdata_original_controller);
Чтобы найти недостающее покрытие для графика ShiftLogic, запустите анализ подсистемы на этом блоке. Используйте этот метод, чтобы сфокусировать анализ на отдельной части модели.
Чтобы достичь 100% покрытия для контроллера ShiftLogic, запустите анализ генерации тестов, который использует существующие данные покрытия.
Щелкните правой кнопкой мыши блок ShiftLogic и выберите Design Verifier > Options.
В диалоговом окне Параметров конфигурации под деревом Select выберите узел Design Verifier. Под Analysis options в поле Mode выберите Test generation
.
Под узлом Design Verifier выберите Test Generation. В разделе Existing coverage data выберите Ignore objectives satisfied in existing coverage data.
В поле Coverage data file введите имя файла, содержащего данные о покрытии, которые вы записали во время симуляции:
existingcov.cvt
Щелкните Apply, чтобы сохранить эти настройки.
В дереве Select нажмите Design Verifier.
На основной панели Design Verifier нажмите Generate Tests.
Анализ извлекает диаграмму Stateflow в новую модель с именем ShiftLogic0
. Анализ анализирует новую модель, игнорируя цели покрытия, ранее удовлетворенные и записанные в existingcov.cvt
файл.
Когда анализ генерации тестов будет завершен, в Simulink® Проектируйте Verifier™ логгируйте окно, выберите Simulate tests and produce a model coverage report.
Отчет указывает, что для графика ShiftLogic достигается следующее покрытие в симуляции с тестами, сгенерированными Simulink Design Verifier:
Решение: 84% (26/31)
Условие: 83% (10/12)
MCDC: 67% (4/6) условия изменили результат
В отчете Simulink Design Verifier перечислены шесть тесты для извлеченной модели, которые удовлетворяют целям, не охваченным existingcov.cvt
файл.
Отчет Simulink Design Verifier указывает, что две цели покрытия в ShiftLogic диаграммы Stateflow доказаны неудовлетворительными. Неявное tick события
никогда не false
поскольку график ShiftLogic обновляется в каждый временной шаг. Анализ не может удовлетворить условию или покрытию 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)
.