Покрытие модели для диаграмм Stateflow

Как покрытие модели сообщает о работе для диаграмм Stateflow

Отчет покрытия модели сгенерирован автоматически, если вы симулируете свою модель с помощью кнопки Run. Если вы не использовали кнопку Run, или вы загрузили данные о покрытии, не симулируя модель, сгенерируйте использование отчета Покрытия модели cvhtml. Для графиков Stateflow® Simulink® Coverage™ записывает выполнение самого графика и выполнение состояний, решения перехода и отдельные условия, которые составляют каждое решение. После концов симуляции покрытие модели сообщает относительно того, как полностью модель была протестирована. Отчет показывает:

  • Сколько раз каждое исключительное подсостояние выполнено или выходится из его родительского сверхсостояния и введено должное породить историю сверхсостояния

  • Сколько раз каждое решение перехода было оценено как TRUE или FALSE

  • Сколько раз каждое условие было оценено как TRUE или FALSE

Примечание

Чтобы измерить данные о покрытии модели для диаграммы Stateflow, вы должны:

  • Имейте лицензию Stateflow.

  • Включите отладку/анимацию для графика.

Задайте настройки отчета покрытия для диаграмм Stateflow

Задайте настройки записи покрытия от панели Coverage диалогового окна Configuration Parameters.

Включение анализа покрытия также включает выбор различных метрик покрытия. Следующие разделы обращаются только к метрикам покрытия, которые влияют на отчеты для диаграмм Stateflow. Эти метрики включают Decision Coverage, покрытие условия и покрытие MCDC.

Цикломатическая сложность для диаграмм Stateflow

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

Вычисление цикломатической сложности следующие:

CC = E - N + p

где CC цикломатическая сложность, E количество ребер, N количество узлов и p количество компонентов.

В Инструменте model coverage каждое решение точно эквивалентно одному узлу потока управления, и каждый результат решения эквивалентен ребру потока управления. Любая дополнительная структура в графике потока управления проигнорирована, поскольку это вносит то же количество узлов как ребра и поэтому не оказывает влияния на вычисление сложности. Поэтому можно описать цикломатическую сложность можно следующим образом:

CC = OUTCOMES - DECISIONS + p

В аналитических целях каждый график рассчитывает как один компонент.

Decision Coverage для диаграмм Stateflow

Decision Coverage интерпретирует выполнение модели в терминах базовых решений, где поведение или выполнение должны взять один результат из набора взаимоисключающих результатов.

Примечание

Полный охват для объекта решения означает, что каждое решение имело по крайней мере одно вхождение каждого из его возможных исходов.

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

Объект

Возможные решения

График

Если графиком является инициированный блок Simulink, он должен решить, выполнить ли его блок.

Если график содержит исключительный (OR) подсостояния, это должно решить который из его состояний, чтобы выполниться.

Состояние

Если состояние является сверхсостоянием, содержащим исключительный (OR) подсостояния, это должно решить который подсостояние выполниться.

Если состояние имеет on event name действия (который может включать временные логические операторы), состояние должны решить, выполнить ли действия.

Переход

Если переход является условным переходом, он должен решить, выйти ли из его активного исходного состояния или соединения и ввести другое состояние или соединение.

Стройте диаграмму как инициированное решение блока Simulink

Если график является инициированным блоком в модели Simulink, решение выполнить блок тестируется. Если блок не инициирован, нет никакого решения выполнить блок, и измерение Decision Coverage не применимо (NA).

Стройте диаграмму содержащий исключающее ИЛИ, подутверждает решение

Если график содержит исключительный (OR) подсостояния, решение, на котором тестируется подсостояние выполниться. Если график содержит только параллельные подсостояния AND, это измерение покрытия не применимо (NA).

Сверхсостояние, содержащее исключающее ИЛИ, подутверждает решение

Поскольку график иерархически обрабатывается от верхней части вниз, процедуры такой как исключительный (OR) запись подсостояния, выход, и выполнение иногда решается сверхсостоянием порождения.

Примечание

Decision Coverage для сверхсостояний применяет только к исключительному (OR) подсостояния. Сверхсостояние не принимает решений для параллели (AND) подсостояния.

Поскольку сверхсостояние должно решить, который исключительный (OR) подсостояние к процессу, количество результатов решения для сверхсостояния является количеством исключительных (OR), подутверждает, что это содержит. В примерах, которые следуют, выбор которого подутверждают к процессу, может произойти в одном из трех возможных контекстов.

Примечание

Неявные переходы появляются как пунктирные линии в следующих примерах.

КонтекстПримерРешения, которые происходят

Активный вызов

Состояния A и A1 активны.

  • Родительский элемент состояний A и B должен решить который из этих состояний к процессу. Это решение принадлежит родительскому элементу. Поскольку A активен, он обрабатывается.

  • Состояние A, родительский элемент состояний A1 и A2, должен решить который из этих состояний к процессу. Это решение принадлежит состоянию A. Начиная с A1 активно, это обрабатывается.

Во время обработки A1 состояния, тестируются все исходящие переходы. Это решение принадлежит переходу а не родительскому состоянию A. В этом случае, переход, отмеченный условием C2 тестируется и решение принято, взять ли переход к A2 или нет.

Неявный выход подсостояния

Переход происходит, чей источник является сверхсостоянием A и чье место назначения является состоянием B.

Если сверхсостояние имеет два исключительных (OR) подсостояния, это - решение о сверхсостоянии, какое подсостояние выполняет неявный переход от подсостояния до сверхсостояния.

Запись подсостояния с соединением истории

Соединение истории записывает, какое подсостояние было в последний раз активно, прежде чем из сверхсостояния вышли.

Если то сверхсостояние становится местом назначения одного или нескольких переходов, соединение истории решает который ранее активное подсостояние войти.

Для получения дополнительной информации смотрите Раздел Отчета Деталей состояния.

Состояние с на решении оператора действия Event_Name

Состояние, которое имеет on event_name оператор действия должен решить, выполнить ли тот оператор на основе приема заданного события или на накоплении заданного события при использовании временных логических операторов.

Условное решение перехода

Условный переход является переходом с инициирующим событием и/или условием защиты. В условном переходе от одного состояния до другого решение выйти из одного состояния и ввести другого зачислено на сам переход.

Примечание

Только условные переходы получают Decision Coverage. Переходы без решений не применимы к Decision Coverage.

Покрытие условия для диаграмм Stateflow

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

Например, для решения [A & B & C] на переходе, покрытие условия сообщает относительно истинных и ложных случаев каждого из подусловий A, B, и C. Это приводит к восьми возможным исходам: истина и ложь для каждого из трех подусловий.

РезультатABC
1TTT
2TTF
3TFT
4TFF
5FTT
6FTF
7FFT
8FFF

Для получения дополнительной информации смотрите Раздел Отчета Деталей Перехода.

Покрытие MCDC для диаграмм Stateflow

Модифицированное Решение/Покрытие Условия (MCDC) опция сообщает о покрытии теста случаев, в которых изменение отдельного подусловия в логическом выражении приводит к изменению целого выражения от истинного до лжи или лжи к истине.

Например, если переход выполняет на условии [C1 & C2 & C3 | C4 & C5], отчет MCDC для того перехода показывает фактические случаи для каждого из этих пяти подусловий (C1, C2, C3, C4, C5) в котором изменение его результата верного для лжи может изменить результат целого условия от истинного до лжи.

Реляционное граничное покрытие для диаграмм Stateflow

Если переход в диаграмме Stateflow включает реляционную операцию, он получает реляционное граничное покрытие. Для получения дополнительной информации смотрите Реляционное Граничное Покрытие.

Покрытие Simulink Design Verifier для диаграмм Stateflow

Можно использовать следующие функции Simulink Design Verifier™ в диаграммах Stateflow:

Если у вас нет лицензии Simulink Design Verifier, можно собрать покрытие модели для диаграммы Stateflow, содержащей эти функции, но вы не можете анализировать модель с помощью программного обеспечения Simulink Design Verifier.

Когда вы задаете метрику покрытия Objectives and Constraints в панели Coverage диалогового окна Configuration Parameters, программное обеспечение Simulink Coverage записывает покрытие для этих функций.

Каждая из этих функций выполняет выражение expr, например, sldv.test (expr), где expr любое допустимое выражение Boolean MATLAB®. Покрытие Simulink Design Verifier измеряет количество временных шагов что выражение expr оценивает к true.

Если expr true по крайней мере для одного временного шага покрытие Simulink Design Verifier для этой функции составляет 100%. В противном случае программное обеспечение Simulink Coverage сообщает о покрытии для этой функции как 0%.

Рассмотрите модель, которая содержит эту диаграмму Stateflow:

Чтобы собрать покрытие для функций Simulink Design Verifier, на панели Coverage в диалоговом окне Configuration Parameters, выбирают Objectives and Constraints.

После симуляции отчет покрытия модели перечисляет покрытие для sldv.condition, sldv.assume, sldv.prove, и sldv.test функции.

Отчеты покрытия модели для диаграмм Stateflow

Следующие разделы отчета Покрытия модели были сгенерированы путем симуляции sf_boiler модель, которая включает график Bang-Bang Controller. Метрики покрытия для MCDC включены для этого отчета.

Раздел сводного отчета

Раздел Summary показывает результаты покрытия для целого теста и появляется в начале отчета Покрытия модели.

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

Верхний уровень, sf_boiler, сама модель Simulink. Вторым уровнем, Контроллером Скорострельного оружия, является диаграмма Stateflow. Следующие уровни являются сверхсостояниями в рамках графика, в порядке иерархического включения. Каждое сверхсостояние использует SF: префикс. Нижний уровень, модель Boiler Plant, является дополнительной подсистемой в модели.

Подсистема и разделы отчета деталей графика

При записи покрытия для диаграммы Stateflow программное обеспечение Simulink Coverage сообщает о двух типах покрытия для графика — Подсистема и График.

  • Подсистема — Этот раздел сообщает о покрытии для графика:

    • Покрытие (этот объект): данные о Покрытии для графика как контейнерный объект

    • Покрытие (inc). потомки: данные о Покрытии для графика и состояний и переходов в графике.

    Если вы кликаете по гиперссылке имени подсистемы в заголовке раздела, блок Bang-Bang Controller подсвечен в блок-схеме.

    Decision Coverage не применим (NA) потому что этот график не имеет явного триггера. Покрытие условия и MCDC не применимы (NA) для графика, но применяются к его потомкам.

  • График — Этот раздел сообщает о покрытии для графика:

    • Покрытие (этот объект): данные о Покрытии для графика и его входных параметров

    • Покрытие (inc). потомки: данные о Покрытии для графика и состояний и переходов в графике.

    Если вы кликаете по гиперссылке имени графика в заголовке раздела, график открывается в редакторе Stateflow.

    Decision Coverage перечислен, появляется для графика и его потомков. Покрытие условия и MCDC не применимы (NA) для графика, но применяются к его потомкам.

Раздел отчета деталей состояния

Для каждого состояния в графике отчет покрытия включает в себя раздел State с деталями о покрытии, зарегистрированном для того состояния.

В sf_boiler модель, On состояния находится в поле Heateron сверхсостояние, которое содержит:

  • Два подсостояния HIGH и NORM

  • Соединение истории

  • Функциональный warm

Отчет покрытия включает в себя раздел State по On состояния.

Decision Coverage для On утвердите тестирует решение, которого подутверждают, чтобы выполниться.

Эти три решения перечислены в отчете:

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

  • Под Подсостоянием, из которого выходят, когда родительский элемент, из которого выходят, какое подсостояние активно когда On выходы. NORM перечисляется как никогда являющийся активным когда On выходы, потому что инструмент покрытия видит суперпереход от NORM к Off как переход от On к Off.

  • Под Ранее активным подсостоянием, вводимым из-за истории, которые подутверждают, чтобы повторно вступить когда On повторно выполняется. Соединение истории записывает ранее активное подсостояние.

Поскольку каждое решение может привести к любому HIGH или NORM, общими возможными исходами являются 3 × 2 = 6. Результаты показывают, что пять из шести возможных исходов были протестированы в процессе моделирования.

Цикломатическая сложность и Decision Coverage также применяются к потомкам On состояние. Решение, требуемое условием [warm()] поскольку переход от HIGH до NORM приносит общие возможные результаты решения к 8. Покрытие условия и MCDC не применимы (NA) для состояния.

Примечание

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

Раздел отчета деталей перехода

Отчеты для переходов появляются под разделами отчета их объектов владения. Переходы не появляются в иерархии модели раздела Summary, поскольку иерархия основана на сверхсостояниях, которые владеют другими объектами Stateflow.

Решение для этого перехода зависит от задержки 40 секунд и условия [cold()]. Если после 40-секундной задержки среда является холодной (cold() = 1), решение выполнить этот переход и включить Нагреватель принято. Для других временных интервалов или условий среды, решение принято, чтобы не выполниться.

Для Decision Coverage произошли оба истинных и ложных результата. Поскольку два из двух результатов решения произошли, покрытие было полно или 100%.

Покрытие условия показывает, что только 4 из 6 результатов условия были протестированы. Временный логический оператор after(40,sec) представляет два условия: вхождение sec и after(40,sec) с временной задержкой. Поэтому три условия на переходе существуют: sec, after(40,sec), и cold(). Поскольку каждое из этих решений может быть TRUE или FALSE, шесть возможных результатов условия существуют.

Анализируемая таблица Условий показывает каждое условие строкой с записанным количеством случаев для каждого результата (TRUE или FALSE). Заштрихованы строки решения, в которых не произошел возможный исход. Например, первое и третьи строки не записывали вхождение ложного результата.

В отчете MCDC все наборы случаев условий перехода сканируются для конкретной пары решений для каждого условия, в котором следующее верны:

  • Условие варьируется от истинного до лжи.

  • Все другие условия, способствующие результату решения, остаются постоянными.

  • Результат решения варьируется от истинного до лжи или реверса.

Для трех условий, связанных подразумеваемой операцией И, этим критериям может удовлетворить вхождение этих условий.

Протестированное условие

Истинный результат

Ложный результат

1

TTT

Fxx

2

TTT

TFx

3

TTT

TTF

Заметьте, что в каждой линии, протестированное условие изменяется от истинного до лжи, в то время как другое условие остается постоянным. Несоответствующие факторы закодированы с "x" (обсужденный ниже). Если оба результата происходят во время тестирования, покрытие завершено (100%) для протестированного условия.

Предыдущий пример отчета показывает покрытие только для условия 2. Ложные результаты, требуемые для условий 1 и 3, не произошли и обозначаются круглыми скобками для обоих условий. Поэтому строки 1 и 3 условия заштрихованы. В то время как условие 2 было протестировано, условия 1 и 3 не имеют, и MCDC составляет 33%.

Для некоторых решений значения некоторых условий не важны при определенных обстоятельствах. Например, в решении [C1 & C2 & C3 | C4 & C5] левая сторона | является ложным если любое из условий C1C2 , или C3 является ложным. То же самое применяется к результату правой стороны если любой C4 или C5 является ложным. Когда поиск соответствия с парами, которые изменяют результат решения путем изменения одного условия, содержания некоторых остающихся постоянных условий, не важен. В этих случаях отчет MCDC отмечает эти условия "x", чтобы указать на их неуместность как на фактор результата. Эти условия появляются как показано.

Рассмотрите первую совпадающую пару. Поскольку условие 1 верно в Истинном столбце результата, это должно быть ложным в соответствующем Ложном столбце результата. Это делает условия C2 и C3 не важный для ложного результата начиная с C1 & C2 & C3 является всегда ложным если C1 является ложным. Кроме того, поскольку ложный результат требуется, чтобы оценивать ко лжи, оценке C4 & C5 должно также быть ложным. В этом случае соответствие было найдено с C4 = F, делая условие C5 не важный.

Покрытие модели для таблиц перехода состояния Stateflow

Таблицы переходов состояний являются альтернативным способом описать модальную логику в Stateflow. Диаграммы Stateflow представляют модальную логику графически, и таблицы переходов состояний могут представлять эквивалентную модальную логику в табличной форме. Для получения дополнительной информации смотрите Таблицы переходов состояний (Stateflow).

Результаты покрытия для таблиц переходов состояний совпадают с результатами покрытия для эквивалентных диаграмм Stateflow, за исключением незначительных различий, которые возникают в покрытии временной логики. Например, считайте временное логическое выражение after(4, tick) в Логической блок-схеме Режима slvnvdemo_covfilt модель в качестве примера.

В покрытии графика, after(4, tick) переход представляет два условия: вхождение tick и after(4, tick) с временной задержкой. Начиная с временного события tick никогда не является ложным, первое условие не выполнимо, и вы не можете записать 100%-е условие и покрытие MCDC для перехода after(4, tick).

В табличном покрытии изменения состояния, after(4, tick) переход представляет одно решение без подусловия для вхождения tick. Поэтому только Decision Coverage зарегистрирован.

Для таблиц переходов состояний, содержащих временные логические решения, как в вышеупомянутом примере, покрытии условия и MCDC, не зарегистрирован.

Покрытие модели для Stateflow атомарные субдиаграммы

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

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

Симулируйте doc_atomic_subcharts_map_iodata пример Decision Coverage записи и модели:

  1. Откройте doc_atomic_subcharts_map_iodata модель.

    Эта модель содержит два блока Sine Wave, которые предоставляют входные сигналы к диаграмме Stateflow. График содержит две атомарных субдиаграммы — A и B — которые соединяются из того же графика библиотеки, также названного A. График библиотеки содержит следующие объекты:

  2. В Редакторе Simulink выберите Model Settings на вкладке Modeling. Выберите панель Coverage диалогового окна Configuration Parameters.

  3. Выберите Enable coverage analysis и затем выберите Entire System.

  4. Нажмите OK, чтобы закрыть диалоговое окно Configuration Parameters.

  5. Симулируйте doc_atomic_subcharts_map_iodata модель.

    Когда симуляция завершается, отчет покрытия открывается.

Отчет обеспечивает данные о покрытии для атомарных субдиаграмм A и B в следующих формах:

  • Для атомарного экземпляра субдиаграммы и его содержимого. Decision Coverage не применим (NA) потому что этот график не имеет явного триггера.

  • Поскольку библиотека строит диаграмму A и его содержимого. Сам график достигает 100%-го покрытия на входе u1, и 88%-е покрытие на состояниях и переходах в графике библиотеки.

    Атомарная субдиаграмма B является копией того же A графика библиотеки. Покрытие содержимого субдиаграммы B идентично покрытию содержимого субдиаграммы A.

Покрытие модели для таблиц истинности Stateflow

Типы покрытия в таблицах истинности Stateflow

Программное обеспечение Simulink Coverage сообщает о покрытии модели для решений, которые объекты принимают в диаграмме Stateflow во время симуляции модели. Отчет включает в себя покрытие для решений, которые принимают функции таблицы истинности.

Для этого типа таблицы истинности...Отчет включает в себя данные о покрытии для...
Классика Stateflow

Условия только.

MATLAB

Условия и только те действия, которые имеют моменты принятия решения.

Примечание

С MATLAB для языка действия генерации кода можно задать моменты принятия решения в действиях с помощью построений потока управления, таких как циклы и операторы switch.

Примечание

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

Анализируйте покрытие в таблицах истинности Stateflow

Если у вас есть лицензия Stateflow, можно сгенерировать отчет покрытия модели для таблицы истинности.

Рассмотрите следующую модель.

Диаграмма Stateflow содержит следующую таблицу истинности:

Когда вы симулируете модель и собираете покрытие, отчет покрытия модели включает в себя следующие данные:

Столбец Coverage (this object) не показывает покрытия. Причина состоит в том, что контейнерный объект для функции таблицы истинности — диаграмма Stateflow — не решает, выполнить ли ttable таблица истинности.

Столбец Coverage (inc. descendants) показывает покрытие для графической функции. Графическая функция имеет логику решения, которая делает переходы для таблицы истинности. Переходы в графической функции содержат решения и условия таблицы истинности. Покрытие для потомков в столбце Coverage (inc. descendants) включает покрытие для этих условий и решений. Вызовы функции к таблице истинности тестируют покрытие модели этих условий и решений.

Примечание

Вид на море Сгенерированное Содержимое для Таблиц истинности Stateflow (Stateflow) для описания графической функции для таблицы истинности.

Покрытие для решений и их отдельных условий в ttable функция таблицы истинности следующие.

ПокрытиеОбъяснение

Никакое покрытие модели для решения по умолчанию, D4

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

17% (1/6) Decision Coverage

Три константы, которые являются входными параметрами к таблице истинности (1, 0, 0) заставьте только решение D1 быть верным. Эти входные параметры удовлетворяют только одному из этих шести решений (D1 через D3, T или F).

Поскольку каждое условие может иметь значение результата T или F, три условия могут иметь шесть возможных значений.

3 из 18 (17%-х) покрытий условия

Три решения D1, D2 и D3 имеют покрытие условия, потому что набор входных параметров (1, 0, 0) примите только решение верный D1.

Никакой (0/9) MCDC покрытие

Покрытие MCDC ищет реверсирования решения, которые происходят, потому что один результат условия изменяется от T к F или F к T. Симуляция тестирует только один набор входных параметров, таким образом, модель не инвертирует решений.

Недостающее покрытие

Красные буквы T и F укажите, что покрытие модели отсутствует для тех условий. Для решения D1, только T решению удовлетворяют. Для решений D2, D3 и D4, ни одному из условий не удовлетворяют.

Отображение покрытия модели для диаграмм Stateflow

Simulink Coverage отображает результаты покрытия модели для отдельных блоков непосредственно в диаграммах Stateflow. Когда вы симулируете свою модель с включенным покрытием, отображения модели:

  • Выделение для элементов Stateflow, которые получают покрытие модели в процессе моделирования

  • Контекстно-зависимое отображение итоговой информации о покрытии модели для каждого объекта

Для получения дополнительной информации при включении выделения покрытия, смотрите, Включают Выделение Покрытия.

Покрытие модели дисплея с окраской модели

Когда вы включаете покрытие и симулируете модель с кнопкой Run, модель подсвечивает отдельные элементы Stateflow, получающие покрытие. Если при запуске свое использование модели sim модель не отображает результаты покрытия по умолчанию. В этом случае вы видите, что модель подсвечивает при помощи cvmodelview.

  1. Откройте sf_car модель от Симулирует График как блок Simulink С Локальными Событиями (Stateflow).

  2. Во вкладке Modeling нажмите Model Settings.

  3. В панели Coverage диалогового окна Configuration Parameters выберите Enable coverage analysis.

  4. В разделе Coverage metrics, набор Structural coverage level к Modified Condition Decision Coverage (MCDC).

  5. Нажмите OK.

  6. Симулируйте модель путем нажатия кнопки Run (Coverage).

  7. Откройте диаграмму Stateflow shift_logic.

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

    Цвета указывают на полноту анализа покрытия:

    • Зеленая граница для полного охвата

    • Красная граница для частичного или недостающего покрытия

    • Светло-серый для элементов, не анализируемых для покрытия

Состояния, которые включают исполняемый код и условные переходы, которые используют MATLAB в качестве языка действия, отображают гранулированный текст, окрашивающий, на основе которого удовлетворяют результатам. Грин указывает, что результаты, которым удовлетворяют, и красный указывают на неудовлетворенные результаты. Например, рассмотрите следующий график:

В этом примере, if оператор оценил и к истине и лжи и к поэтому имеет полный Decision Coverage. В операторе, условие a > 0 оцененный и к истине и лжи и имеет полное покрытие условия. Условие b > 0, однако, оцененный к истине, но не ложный и поэтому имеет только частичное покрытие условия.

Покрытие кода для кода C/C++ в диаграммах Stateflow

Simulink Coverage может записать покрытие кода, если ваша диаграмма Stateflow содержит пользовательский код C/C++. Для получения дополнительной информации смотрите Покрытие для Пользовательского Кода C/C++ в Моделях Simulink.

Получите совокупное покрытие для допускающих повторное использование подсистем и Stateflow® Constructs

В этом примере показано, как создать и просмотреть совокупные результаты покрытия для модели с допускающей повторное использование подсистемой.

Simulink® Coverage™ предоставляет совокупную страховую защиту нескольким экземплярам тождественно сконфигурированного:

  • Допускающие повторное использование подсистемы

  • Построения Stateflow™

Чтобы получить совокупное покрытие, вы добавляете отдельные результаты покрытия в командной строке. Можно получить совокупные результаты покрытия для нескольких экземпляров через модели и тестовые обвязки путем добавления отдельных результатов покрытия.

Открытая модель в качестве примера

В командной строке MATLAB® введите:

model = 'slvnvdemo_cv_mutual_exclusion';
open_system(model);

Эта модель имеет два экземпляра допускающей повторное использование подсистемы. Экземпляры называют Подсистемой 1 и Подсистемой 2.

Получите Decision Coverage для Подсистемы 1

Выполните команды для Подсистемы 1 Decision Coverage:

testobj1 = cvtest([model '/Subsystem 1']);
testobj1.settings.decision = 1;
covobj1 = cvsim(testobj1);

Получите Decision Coverage для Подсистемы 2

Выполните команды для Подсистемы 2 Decision Coverage:

testobj2 = cvtest([model '/Subsystem 2']);
testobj2.settings.decision = 1;
covobj2 = cvsim(testobj2);

Добавьте результаты покрытия для Подсистемы 1 и Подсистемы 2

Выполните команду, чтобы создать совокупный Decision Coverage для Подсистемы 1 и Подсистемы 2:

covobj3 = covobj1 + covobj2;

Сгенерируйте отчет покрытия для Подсистемы 1

Создайте отчет HTML для Подсистемы 1 Decision Coverage:

cvhtml('subsystem1',covobj1)

Отчет указывает, что Decision Coverage составляет 50% для Подсистемы 1. true условие для enable logical value не анализируется.

Сгенерируйте отчет покрытия для Подсистемы 2

Создайте отчет HTML для Подсистемы 2 Decision Coverage:

cvhtml('subsystem2',covobj2)

Отчет указывает, что Decision Coverage составляет 50% для Подсистемы 2. false условие для enable logical value не анализируется.

Сгенерируйте отчет покрытия для совокупного покрытия Подсистемы 1 и Подсистемы 2

Создайте отчет HTML для совокупного Decision Coverage для Подсистемы 1 и Подсистемы 2:

cvhtml('cum_subsystem',covobj3)

Совокупный Decision Coverage для допускающей повторное использование Подсистемы подсистем 1 и Подсистемы 2 составляет 100%. Оба true и false условия для enable logical value анализируются.