После того, как вы просматриваете свои результаты покрытия модели, вы можете найти, что ваша модель не имеет 100%-го покрытия. Можно обратиться к недостающему покрытию в модели.
В slvnvdemo_powerwindow
модель, блок And power_window_control_system/validate_passenger/check_up/allow_action
имеет 75%-е покрытие условия. true
случай первого условия не произошел потому что в блоке Signal Editor Input
на корневом уровне модели параметр Active scenario устанавливается на Driver
. Измените Active scenario в Passenger
. Симулируйте модель снова путем нажатия на Analyze Coverage.
Блок And allow_action
теперь получает 100%-е покрытие условия. Первое условие было верно для 595 временных шагов и лжи для 2 797 временных шагов. Кроме того, T1 и ссылки T2 в условии и таблицах MCDC соединяются с тестами, которые использовались, чтобы протестировать каждую цель. Например, true
случаю первого условия удовлетворил тестовый прогон 2, T2. Щелкните по ссылке, чтобы прокрутить к разделу Aggregated Tests отчета.
Можно также рассмотреть данные о покрытии при помощи Проводника Результатов покрытия. На вкладке Coverage нажмите Results Explorer. Данные о запуске находятся на левой панели под Current Cumulative Data. Нажмите Run 1 и Run 2, чтобы сравнить результаты покрытия.
Нажмите Current Cumulative Data, чтобы видеть агрегированные результаты этих двух запусков.
Агрегированные результаты показывают более высокие проценты покрытия, чем любой из двух отдельных тестов, потому что тесты удовлетворяют различным целям в некоторых блоках.
Если вы анализируете доклад покрытия и находите, что вы - недостающее покрытие, которое не возможно зафиксировать путем изменения модели или теста, можно отфильтровать недостающие результаты так, чтобы о них не сообщали как недостающее покрытие. Некоторые возможные причины вы можете хотеть отфильтровать результаты покрытия, включают:
Блок тестируется различным тестовым набором и не применим к текущему анализу покрытия.
Блок предназначается, чтобы отловить случаи ребра, что вы думаете, никогда не должен происходить так или иначе. Этот тип проекта модели иногда называется defensive coding.
Существует два типа фильтров покрытия:
Правило фильтра исключения может быть применено к элементу модели и заставляет тот элемент быть проигнорированным анализом покрытия. Исключенные элементы модели появляются, потускнел в подсвеченной модели, как другие элементы, которые не применимы к метрикам, которые вы выбрали.
Правило фильтра выравнивания может быть применено к результату покрытия, которому не удовлетворяют. Это правило фильтра позволяет Simulink® Coverage™, чтобы анализировать остальную часть элемента модели, но не сообщает о выровненном по ширине результате как о недостающем покрытии. Это правило фильтра позволяет вам улучшать свое покрытие для объекта модели без исключения его полностью.
Предположим, что условие блока And 1 результат MCDC был протестирован различным тестовым набором и не применим для этого случая. Можно выровнять по ширине результат так, чтобы о нем не сообщали как недостающее покрытие.
Кликните по блоку 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. Этот раздел отчета только появляется, если существуют фильтры, применился к данным о покрытии.
Программно добавить тест и совокупное покрытие, введите:
blockPath = [modelName,'/Input']; set_param(blockPath,'ActiveScenario','Passenger') simOut2 = sim(simIn); covDataRun2 = simOut2.covData; cvmodelview(covDataRun2); aggregatedCovData = covData + covDataRun2;
Программно отфильтровать результаты покрытия, введите:
filt = slcoverage.Filter; setFilterName(filt,'slvnvdemo_powerwindow_filter'); blockPath = [modelName,'/power_window_control_system/validate_passenger/check_up/allow_action']; sel = slcoverage.MetricSelector(slcoverage.MetricSelectorType.MCDCOutcome,blockPath,1,1); rule = slcoverage.FilterRule(sel,'Tested in a different test suite'); addRule(filt,rule); save(filt,'slvnvdemo_powerwindow_filter') aggregatedCovData.filter = 'slvnvdemo_powerwindow_filter';