Если у вас есть Simulink® Лицензия Test™, можно собрать покрытие непосредственно от менеджера по Тесту. Для получения дополнительной информации о Simulink Test, смотрите Начало работы с Simulink Test (Simulink Test).
Когда вы анализируете покрытие для модели, отчетов Simulink Coverage™ относительно, и подсвечивает объекты модели в вашем проекте, которые были осуществлены в процессе моделирования. Используйте менеджера по Тесту, чтобы исследовать тесты и агрегированное покрытие, чтобы видеть, какие тесты осуществляют определенные объекты модели. Можно запустить несколько тестов в тестовом наборе, анализировать покрытие для каждого теста, затем просмотреть агрегированные результаты для набора результатов в менеджере по Тесту. Используйте отчеты покрытия и выделение модели, чтобы учиться который части вашей модели, активированной во время заданных тестов.
Откройте slvnvdemo_powerwindow
модель. slvnvdemo_powerwindow
модель содержит контроллер окна со стеклоподъемником и модель объекта управления младшего разряда. Контроллер реализован с графиком Stateflow®.
На вкладке Apps нажмите Simulink Test, чтобы открыть вкладку Tests. Нажмите Simulink Test Manager.
Этот пример включает тестовый файл. В менеджере по Тесту нажмите Open. В окне Open File выберите powerwindow_tests.mldatx
.
В панели Test Browser нажмите powerwindow_tests
. Затем расширьте опции покрытия путем нажатия на Coverage Settings.
Чтобы включить покрытие для модели, под Coverage to Collect, выбирают Record coverage for system under test. Под Coverage Metrics можно выбрать метрики, о которых вы хотите сообщить. Для получения информации о метриках покрытия смотрите Метрики Структурного покрытия.
В данном примере выберите Decision, Condition и MCDC.
В powerwindow_tests
существует два теста тестовый файл. Test Case 1 установили сценарий Signal Editor на
Driver
, и настройка по умолчанию в модели. Test Case 2 установили сценарий Signal Editor на Passenger
.
В менеджере по Тесту можно запустить отдельные тесты или целые тестовые наборы путем выбора их в Test Browser и нажатия на Run. Выберите Test Case 1 и нажмите Run.
Когда тест заканчивается, вкладка Results and Artifacts открывается. Кликните по результатам для теста, чтобы видеть сводные данные результатов покрытия.
Тест 1 имеет место, где сценарий Signal Editor установлен в Driver
. Можно кликнуть по имени модели в столбце Analyzed Model таблицы Coverage Results, чтобы отобразить результаты покрытия в модели с включенным выделением модели. Панель Coverage Details также открывается в окне Simulink.
window_system
подсистема является зеленой, потому что каждый блок в подсистеме получил 100%-е покрытие. Другие подсистемы являются красными, потому что один или несколько блоков внутри не получили полный охват.
Можно указать на подсистему, чтобы видеть краткое изложение покрытия для каждой соответствующей метрики. Например, укажите на power_window_control_system
блок подсистемы.
Если вы щелкаете левой кнопкой по блоку, панель Coverage Details отображает раздел отчета для того блока. Например, нажмите на power_window_control_system
подсистема.
Можно ввести подсистему, чтобы просмотреть гранулированные результаты покрытия для содержимого той подсистемы. Дважды кликните power_window_control_system
подсистема и представление результаты покрытия для блоков это содержит. Дважды кликните на validate_passenger
, затем check_up
.
Кликните по блоку And allow_action
отобразить соответствующий раздел отчета.
Кликните по блоку And, чтобы видеть результаты MCDC и условие. Поскольку блок And выводит логическую комбинацию этих двух входных сигналов, если оба входных сигнала верны, выходной сигнал верен. Вы видите из таблицы условия, что входным сигналом 1 был false
на каждом временном шаге, в то время как входным сигналом 2 был true
для 878 временных шагов и false
для 884 временных шагов. Поскольку существует четыре результата условия, и один из них не произошел, allow_action
блокируйтесь получил 75%-е покрытие условия.
Аналитическая таблица MCDC приводит реверсирования решения, которые происходят, потому что один результат условия изменяется от true
к false
или от false
к true
. Эта таблица сообщает об этом только FF
случай произошел для первого условия и ни одного, какая цель MCDC произошла для второго условия, которое приводит к 0%-му MCDC, о котором сообщают.
В slvnvdemo_powerwindow
модель, блок And power_window_control_system/validate_passenger/check_up/allow_action
имеет 75%-е покрытие условия потому что блок Signal Editor Input
на корневом уровне модели установили Active scenario на Driver
. Это недостающее покрытие может быть разрешено включением Test Case 2 в анализе покрытия.
В менеджере по Тесту откройте вкладку Test Browser. Нажмите Powerwindow Test Suite, затем нажмите Run, чтобы запустить все тесты в тестовом наборе. Когда тесты заканчиваются, менеджер по Тесту открывает панель Results and Artifacts. Расширьте результаты для нового теста. Можно просмотреть результаты покрытия для каждого отдельного теста путем расширения каждого теста.
Выберите Powerwindow Test Suite, затем кликните по имени модели, slvnvdemo_powerwindow
, открыть модель с выделением покрытия. Перейдите к power_window_control_system/validate_passenger/check_up
и кликните по блоку And. В отчете покрытия покрытие условия - теперь 100%. Кроме того, T1 и ссылка T2 в условии и таблицах MCDC соединяются с тестом, который удовлетворяет каждой цели. Например, true
случаю первого условия удовлетворил тест 2, T2. Щелкните по ссылке, чтобы прокрутить к разделу Aggregated Tests отчета.
В менеджере по Тесту, в таблице Aggregated Coverage Results, полные улучшенные результаты покрытия. Когда вы нажимаете на тестовый набор или имя тестового файла, вы видите агрегированные результаты покрытия для всех тестов внутри.
Агрегированные результаты показывают более высокие проценты покрытия, чем любой из двух отдельных тестов, потому что тесты удовлетворяют различным целям в некоторых блоках.
Если вы анализируете доклад покрытия и находите, что вы - недостающее покрытие, которое не возможно зафиксировать путем изменения модели или теста, можно отфильтровать недостающие результаты так, чтобы о них не сообщали как недостающее покрытие. Несмотря на то, что вы не можете отфильтровать покрытие непосредственно от менеджера по Тесту, можно измерить влияние, которое фильтры покрытия оказывают на модель. Некоторые возможные причины вы можете хотеть отфильтровать результаты покрытия, включают:
Блок тестируется различным тестовым набором и не применим к текущему анализу покрытия.
Блок предназначается, чтобы отловить случаи ребра, что вы думаете, никогда не должен происходить так или иначе. Этот тип проекта модели иногда называется defensive coding.
Существует два типа фильтров покрытия:
Правило фильтра исключения может быть применено к элементу модели и заставляет тот элемент быть проигнорированным анализом покрытия. Исключенные элементы модели появляются, потускнел в подсвеченной модели, как другие элементы, которые не применимы к метрикам, которые вы выбрали.
Правило фильтра выравнивания может быть применено к результату покрытия, которому не удовлетворяют. Это правило фильтра позволяет Simulink Coverage анализировать остальную часть элемента модели, но не сообщает о выровненном по ширине результате как о недостающем покрытии. Это правило фильтра позволяет вам улучшать свое покрытие для объекта модели без исключения его полностью.
Предположим, что условие блока And 1 результат MCDC был протестирован различным тестовым набором и не применим для этого случая. Можно выровнять по ширине результат так, чтобы о нем не сообщали как недостающее покрытие.
В модели переместитесь к подсистеме по power_window_control_system/validate_passenger/check_up
и кликните по блоку And allow_action
прокручивать к соответствующему разделу в отчете покрытия. Условие MCDC C1 (allow_action In1)
является неполным потому что TF
случай не произошел. Выровнять по ширине C1 (allow_action In1)
Результат MCDC, нажмите значок правила выравнивания Add.
Проводник Результатов покрытия открывает панель Filter Editor с новым неназванным файлом фильтра. Файл фильтра содержит правило выравнивания для заданного результата. Можно добавить несколько правил фильтра в тот же файл фильтра.
В поле Name введите slvnvdemo_powerwindow_filter
. Под Filter Rules дважды кликните поле Rationale и введите Tested in a different test suite
. Нажмите Apply, затем сохраните файл. Модель и отчет покрытия автоматически обновляются, чтобы указать, что результат выравнивается по ширине.
В панели Coverage Details выровненный по ширине результат подсвечен в голубом цвете и соединяется с объяснением выравнивания. Нажатие на J1 приносит, вы к разделу отчета назвали Objects Filtered from Coverage Analysis. Этот раздел отчета только появляется, если существуют фильтры, применился к данным о покрытии.
Вернитесь к менеджеру по Тесту. Кликните по набору результатов. В разделе Aggregated Coverage Results фильтр покрытия был применен автоматически, и результат покрытия MCDC - теперь 50%.
Примечание
Необходимо нажать на результаты верхнего уровня видеть прикладные фильтры покрытия. Фильтр не включен в результаты теста или тестовый набор.
Чтобы применить другой файл фильтра покрытия, кликните по набору результатов, расширьте раздел Coverage Filters, и затем нажмите Add.
Чтобы создать отчет покрытия, кликните по стрелке в столбце Report. В качестве альтернативы можно нажать Export в соответствии с таблицей Aggregated Coverage Results. Затем используйте cvhtml
создать отчет покрытия. Например, экспортируйте результаты с именем переменной coverageData
и затем войдите:
cvhtml('testManager_covData',coverageData)