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

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

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

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

  • Сколько раз каждое решение о переходе оценивалось как true или false

  • Сколько раз каждое условие оценивалось как true или false

Примечание

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

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

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

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

Задайте параметры записи покрытия из панели Coverage диалогового окна Параметры конфигурации.

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

Государство

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

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

Переход

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

График как триггерное решение по блокам Simulink

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

Диаграмма, содержащая решение об исключительных ИЛИ

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

Решение об исключительных ИЛИ

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

Примечание

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

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

Примечание

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

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

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

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

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

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

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

Неявный выход subsate

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

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

Субстатная запись с историческим соединением

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

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

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

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

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

Решение об условном переходе

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

Примечание

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

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

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

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

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

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

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

Опция Modified Condition Decision/Coverage (MCDC) сообщает о покрытии теста вхождений, в котором изменение отдельного подусловия в логическом выражении приводит к изменению всего выражения с true на false или false на true.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Раздел «Сводный отчет»

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

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

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

Разделы отчета по подсистемам и Графику

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

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

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

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

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

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

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

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

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

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

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

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

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

В sf_boiler модель, состояние On находится в поле Heater. On является суперштатом, который содержит:

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

  • Историческое соединение

  • Функция warm

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

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

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

  • В поле Substate executed, которые подсостоят для выполнения при On выполняет.

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

  • В поле Ранее активное подсостояние, введенное из-за истории, которые подсостоят для повторного ввода при On выполняет повторно. Историческое соединение регистрирует ранее активное подсостояние.

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

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

Примечание

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

Раздел «Сведения о переходе»

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

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

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

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

Таблица Conditions analysed показывает каждое условие как строку с записанным количеством вхождений для каждого результата (true или false). Строки решений, в которых возможный результат не произошел, затенены. Например, первая и третья строки не записали вхождение ложного результата.

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

  • Условие изменяется от true до false.

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

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

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

Условие проверено

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

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

1

TTT

Fxx

2

TTT

TFx

3

TTT

TTF

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

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

Для некоторых решений ценности некоторых условий не имеют значения при определенных обстоятельствах. Для примера в решении [C1 & C2 & C3 | C4 & C5] левая сторона | имеет значение false, если какое-либо из условий C1, C2, или 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) в график Mode Logic 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 диалогового окна Параметры конфигурации.

  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 truth, смотрите Получить совокупное покрытие для переиспользуемых подсистем и конструкций Stateflow ®.

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

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

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

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

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

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

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

Примечание

Описание графической функции для таблицы истинности см. в разделе Просмотр сгенерированного содержимого для Stateflow Truth Tables (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 true.

Нет (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 модель из Simulate Chart как блок Simulink с локальными событиями (Stateflow).

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

  3. На панели Coverage диалогового окна Параметры конфигурации выберите Enable coverage analysis.

  4. В Coverage metrics разделе установите Structural coverage level равным Modified Condition Decision Coverage (MCDC).

  5. Нажмите OK.

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

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

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

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

    • Зеленая граница для полного покрытия

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

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

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

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

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

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

Получение кумулятивного покрытия для переиспользуемых подсистем и конструкций Stateflow ®

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

Simulink ® Coverage™ обеспечивает совокупное покрытие для нескольких образцов идентично настроенных:

  • Переиспользуемые подсистемы

  • Stateflow™ конструкции

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

Откройте пример модели

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

model = 'slvnvdemo_cv_mutual_exclusion';
open_system(model);

Эта модель имеет два образцов переиспользуемой подсистемы. Образцы имеют имена Подсистема 1 и Подсистема 2.

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

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

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

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

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

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

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

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

covobj3 = covobj1 + covobj2;

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

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

cvhtml('subsystem1',covobj1)

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

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

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

cvhtml('subsystem2',covobj2)

Отчет указывает, что Decision Coverage составляет 50% для Подсистемы 2. The 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 анализируются.