Обратитесь к недостающему покрытию

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

Simulink window after clicking the And block allow_action. The Coverage Details pane shows detailed coverage results for the block.

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

Side-by-side comparison of Run 1 and Run 2 coverage results summary in the Coverage Results Explorer.

Нажмите Current Cumulative Data, чтобы видеть агрегированные результаты этих двух запусков.

Coverage Results Explorer cumulative data view.

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

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

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

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

  • Блок предназначается, чтобы отловить случаи ребра, что вы думаете, никогда не должен происходить так или иначе. Этот тип проекта модели иногда называется defensive coding.

Существует два типа фильтров покрытия:

  • Правило фильтра исключения может быть применено к элементу модели и заставляет тот элемент быть проигнорированным анализом покрытия. Исключенные элементы модели появляются, потускнел в подсвеченной модели, как другие элементы, которые не применимы к метрикам, которые вы выбрали.

  • Правило фильтра выравнивания может быть применено к результату покрытия, которому не удовлетворяют. Это правило фильтра позволяет Simulink® Coverage™, чтобы анализировать остальную часть элемента модели, но не сообщает о выровненном по ширине результате как о недостающем покрытии. Это правило фильтра позволяет вам улучшать свое покрытие для объекта модели без исключения его полностью.

Предположим, что условие блока And 1 результат MCDC был протестирован различным тестовым набором и не применим для этого случая. Можно выровнять по ширине результат так, чтобы о нем не сообщали как недостающее покрытие.

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

Информация о командной строке

Программно добавить тест и совокупное покрытие, введите:

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';

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте