Создавая и Используя фильтры покрытия

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

Фильтры покрытия

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

Фильтры покрытия хранятся в файлах .cvf. Файлы фильтра могут охватить многоуровневые модели. Каждый фильтр состоит из правил, которые задают объекты модели, которые будут исключены или выровнены по ширине в результатах покрытия. Можно отфильтровать любой объект модели, который получает покрытие или содержит другие элементы, такие как подсистема.

Фильтры покрытия могут быть созданы и применялись или прежде или после симуляции модели. Оба рабочих процесса описаны в этом примере.

Открытая модель

Этот пример использует модель slvnvdemo_covfilt. Модель показывает некоторые общие шаблоны, которые могут должны быть быть отфильтрованы от записи покрытия и создания отчетов.

Откройте модель, чтобы начаться.

Отфильтруйте определенный блок перед симуляцией

В модели slvnvdemo_covfilt блок Saturation имеет нижний предел 0 и верхний предел 200. Вход к этому блоку является сигналом rate, который никогда не может быть меньше чем или равен 0. Это приведет к недостающему покрытию, когда нижний предел блока Saturation не полностью осуществлен. По сути, исключите блок Saturation от покрытия.

В Редакторе Simulink щелкните правой кнопкой по блоку Saturation и выберите Coverage> Exclude этот блок.

Список текущих правил фильтра показывает в Проводнике Результатов покрытия. Щелкните в поле Rationale для этого нового правила и введите текст, описывающий, почему этот блок исключен, такие как "Input never <= lower limit (0)". Нажмите Apply по окончании.

Отфильтруйте на основе справочного руководства по библиотеке

Блок slvnvdemo_covfilt_lib/protected division библиотеки является защитой от деления на нуль и может быть не важным в отчете покрытия. Контекстное меню щелчка правой кнопкой на этом блоке предоставляет возможности для фильтрации определенного экземпляра библиотеки или всех ссылок на эту библиотеку. Выберите ссылочную библиотеку Exclude: деление slvnvdemo_covfilt_lib/protected.

Под вкладкой Filter Проводника Результатов покрытия введите Объяснение для этого правила, такого как "division by zero protection". Нажмите Apply по окончании.

Отфильтруйте событие в Stateflow®

Обычно отфильтруйте правила, устраняют целый блок или объект Stateflow® от записи покрытия. События Stateflow® являются исключением, где можно устранить покрытие для части перехода и записать покрытие для остатка от перехода.

В этом примере существует переход, который задает временное событие tick, которое никогда не является ложным, предотвращая полное условие и покрытие MCDC.

Чтобы исключить временное событие tick, выберите Coverage> Exclude временное событие 'метка деления' в контекстном меню щелчка правой кнопкой этого перехода.

Под вкладкой Filter Проводника Результатов покрытия введите Объяснение для этого правила, такого как "tick". Нажмите Apply по окончании.

Моделируйте и рассмотрите фильтрованные результаты покрытия

Моделируйте модель. Проводник Результатов покрытия откроется, когда симуляция завершится. Щелкните по ссылке отчета Generate, чтобы создать и открыть отчет покрытия для этого выполнения.

Отчет покрытия показывает, что раздел назвал Объекты, Фильтрованные от Анализа покрытия, перечисляющего каждый из исключенных элементов и их соответствующих объяснений. Результаты покрытия исключают эти элементы.

Отфильтруйте подсистему после симуляции

В определенных случаях у вас может быть ожидание, что определенные элементы в модели не достигнут полного охвата. Вы поэтому фильтруете эти элементы прежде, чем моделировать для покрытия, как был сделан в предыдущих разделах этого примера. Можно также создать и применить фильтр к результатам покрытия после симуляции. Это позволяет вам рассматривать результаты покрытия, создавать или настраивать фильтр, как желаемый и генерировать новый отчет покрытия с помощью этого фильтра, не имея необходимость повторно выполнять симуляцию.

Считайте, например, подсистему Switchable config. Используя постоянные значения, чтобы управлять подсистемой включают порты для изменения настроек модели, общий шаблон в проектах; однако, разрешать логика и содержимое подсистемы могут привести к недостающему покрытию. Эта настройка не используется в этой модели, поэтому добавьте подсистему Switchable config в фильтр покрытия.

В Редакторе Simulink щелкните правой кнопкой по подсистеме Switchable config и выберите Coverage> подсистема Exclude со всеми потомками.

Под вкладкой Filter Проводника Результатов покрытия введите Объяснение для этого правила, такого как "unused config". Нажмите Apply по окончании.

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

В отчете покрытия перейдите к подробным результатам для Stateflow® Transition" [! на]" от Соединения № 0 к "прочь" в соответствии с графиком Mode Logic. Этот переход никогда не является ложным, потому что он только оценивает, когда Переход" [на]" от Соединения № 0 к "на" является ложным.

Как альтернатива навигации назад к модели и фильтрации этого перехода через контекстное меню щелчка правой кнопкой, можно отфильтровать этот элемент непосредственно из отчета.

Нажмите Justify или ссылку Exclude под подробными результатами для этого перехода.

Вкладка Filter Проводника Результатов покрытия открывается, и правило, фильтрующее этот переход, добавляется.

Измените Режим фильтрации для этого правила к Выровненному по ширине и введите описание для Объяснения, такого как "expression can't be false". Нажмите Apply по окончании.

Выровняйте по ширине отдельный объективный результат из отчета покрытия

В предыдущих примерах были отфильтрованы все цели, сопоставленные с заданными объектами модели. Можно также выровнять по ширине отдельные результаты цели покрытия непосредственно из отчета. Это допускает больше гранулярности в определении правил выравнивания.

В отчете покрытия перейдите к подробным результатам для Stateflow® Transition" [высоко]" от Соединения № 3 к Соединению № 4 в соответствии с графиком Mode Logic. Этот переход в настоящее время никогда не выполняется, и поэтому ни ложь, ни истинные результаты цели Decision Coverage не удовлетворены.

Нажмите значок правила выравнивания Add рядом с ложным результатом, чтобы выровнять по ширине этот отдельный объективный результат.

Вкладка Filter Проводника Результатов покрытия открывается, и правило, фильтрующее этот объективный результат, добавляется.

Введите описание для Объяснения, такого как "justify false outcome only". Нажмите Apply по окончании.

Сгенерируйте обновленный отчет покрытия

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

Новый отчет покрытия перечисляет все исключенные и выровненные по ширине элементы под Объектами, Фильтрованными от Анализа покрытия, включая те элементы, которые были отфильтрованы после симуляции. Ссылки в столбце Объяснения перешли к соответствующим правилам во вкладке Filter Проводника Результатов покрытия. Кроме того, выровненным по ширине объектам модели предшествует идентификатор (например, J6 и J7 в отчете ниже), каждый из которых соединяется с подробными результатами для выровненного по ширине объекта модели или объективного результата.

Выровненные по ширине цели раскрашены голубые и обработаны, как удовлетворено при создании отчетов о процентах покрытия.

Подробные результаты для Перехода" [! на]" от Соединения № 0 к "от" показа, что недостающее покрытие для этого перехода было выровнено по ширине. Обратите внимание на то, что ссылка Выровненный по ширине J6 перешла к соответствующему правилу выравнивания в разделе Objects Filtered from Coverage Analysis отчета.

Точно так же подробные результаты для Перехода" [высоко]" от Соединения № 3 к Соединению № 4 показывают, что недостающее покрытие для ложного результата решения было выровнено по ширине. Однако, потому что правило выравнивания было создано только для этого отдельного результата, об истинном результате решения все еще сообщают как неудовлетворенном. Обратите внимание на то, что ссылка J7, показанный рядом с ложным результатом решения, перешла к соответствующему правилу выравнивания в разделе Objects Filtered from Coverage Analysis отчета.

Очистка

Чтобы завершить пример, закройте модель.