Анализируйте покрытие модели при помощи менеджера по Simulink Test

Если у вас есть Simulink® Лицензия Test™, можно собрать покрытие непосредственно от менеджера по Тесту. Для получения дополнительной информации о Simulink Test, смотрите Начало работы с Simulink Test (Simulink Test).

Когда вы анализируете покрытие для модели, отчетов Simulink Coverage™ относительно, и подсвечивает объекты модели в вашем проекте, которые были осуществлены в процессе моделирования. Используйте менеджера по Тесту, чтобы исследовать тесты и агрегированное покрытие, чтобы видеть, какие тесты осуществляют определенные объекты модели. Можно запустить несколько тестов в тестовом наборе, анализировать покрытие для каждого теста, затем просмотреть агрегированные результаты для набора результатов в менеджере по Тесту. Используйте отчеты покрытия и выделение модели, чтобы учиться который части вашей модели, активированной во время заданных тестов.

Откройте модель

Откройте slvnvdemo_powerwindow модель. slvnvdemo_powerwindow модель содержит контроллер окна со стеклоподъемником и модель объекта управления младшего разряда. Контроллер реализован с графиком Stateflow®.

Выберите Your Coverage Metrics

На вкладке Apps нажмите Simulink Test, чтобы открыть вкладку Tests. Нажмите Simulink Test Manager.

Этот пример включает тестовый файл. В менеджере по Тесту нажмите Open. В окне Open File выберите powerwindow_tests.mldatx.

В панели Test Browser нажмите powerwindow_tests. Затем расширьте опции покрытия путем нажатия на Coverage Settings.

Simulink Test Manager showing an open test file, which contains one test suite titled Powerwindow Test Suite. The test suite contains two test cases.

Чтобы включить покрытие для модели, под 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 открывается. Кликните по результатам для теста, чтобы видеть сводные данные результатов покрытия.

Simulink Test Manager showing results for test case 1. Coverage reported is: 71% decision, 79% condition, 32% MCDC, and 100% execution.

Тест 1 имеет место, где сценарий Signal Editor установлен в Driver. Можно кликнуть по имени модели в столбце Analyzed Model таблицы Coverage Results, чтобы отобразить результаты покрытия в модели с включенным выделением модели. Панель Coverage Details также открывается в окне Simulink.

Simulink window after simulation with coverage enabled. The model is highlighted, some blocks are green, red, and grey. On the right side of the model, a coverage report is open, docked in the Simulink window.

window_system подсистема является зеленой, потому что каждый блок в подсистеме получил 100%-е покрытие. Другие подсистемы являются красными, потому что один или несколько блоков внутри не получили полный охват.

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

Coverage results popup. Decision 100% (2/2), Condition 79% (62/78), MCDC 32% (7/22), Execution 100% (39/39).

Если вы щелкаете левой кнопкой по блоку, панель Coverage Details отображает раздел отчета для того блока. Например, нажмите на power_window_control_system подсистема.

Simulink window after clicking on a subsystem. The docked coverage report shows the section of the report that details coverage results for the subsystem.

Можно ввести подсистему, чтобы просмотреть гранулированные результаты покрытия для содержимого той подсистемы. Дважды кликните power_window_control_system подсистема и представление результаты покрытия для блоков это содержит. Дважды кликните на validate_passenger, затем check_up.

Кликните по блоку And allow_action отобразить соответствующий раздел отчета.

Simulink window after clicking on the And block. The And block is red and the coverage report is displayed on the right.

Кликните по блоку 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, полные улучшенные результаты покрытия. Когда вы нажимаете на тестовый набор или имя тестового файла, вы видите агрегированные результаты покрытия для всех тестов внутри.

Simulink Test Manager on the Results and Artifacts tab with Powerwindow Test Suite selected. Coverage results are: 86% decision, 92% condition, 45% MCDC, and 100% execution.

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

Отфильтруйте результаты покрытия

Если вы анализируете доклад покрытия и находите, что вы - недостающее покрытие, которое не возможно зафиксировать путем изменения модели или теста, можно отфильтровать недостающие результаты так, чтобы о них не сообщали как недостающее покрытие. Несмотря на то, что вы не можете отфильтровать покрытие непосредственно от менеджера по Тесту, можно измерить влияние, которое фильтры покрытия оказывают на модель. Некоторые возможные причины вы можете хотеть отфильтровать результаты покрытия, включают:

  • Блок тестируется различным тестовым набором и не применим к текущему анализу покрытия.

  • Блок предназначается, чтобы отловить случаи ребра, что вы думаете, никогда не должен происходить так или иначе. Этот тип проекта модели иногда называется 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 с новым неназванным файлом фильтра. Файл фильтра содержит правило выравнивания для заданного результата. Можно добавить несколько правил фильтра в тот же файл фильтра.

The Filter Editor showing the new Untitled filter.

В поле Name введите slvnvdemo_powerwindow_filter. Под Filter Rules дважды кликните поле Rationale и введите Tested in a different test suite. Нажмите Apply, затем сохраните файл. Модель и отчет покрытия автоматически обновляются, чтобы указать, что результат выравнивается по ширине.

Simulink window after clicking on the And block. The docked coverage report shows the section of the report that details coverage results for the And block, and the C1 MCDC outcome is highlighted cyan to indicate that it is justified.

В панели 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)

Похожие темы