exponenta event banner

Охват модели для диаграмм потока состояний

Работа отчетов о покрытии модели для диаграмм потока состояний

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

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

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

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

Примечание

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

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

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

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

Укажите параметры записи покрытия на панели «Покрытие» диалогового окна «Параметры конфигурации».

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

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

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

Расчет цикломатической сложности выглядит следующим образом:

CC = E - N + p

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

В инструменте «Покрытие модели» каждое решение в точности эквивалентно одному узлу потока управления, а результат каждого решения эквивалентен краю потока управления. Любая дополнительная структура в управляющей блок-схеме игнорируется, поскольку она вносит то же количество узлов, что и кромки, и поэтому не влияет на вычисление сложности. Таким образом, цикломатическую сложность можно выразить следующим образом:

CC = OUTCOMES - DECISIONS + p

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

Охват решений для диаграмм статофлоу

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

Примечание

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

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

Объект

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

Диаграмма

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

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

Государство

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

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

Переход

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

Диаграмма как инициированное решение блока Simulink

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

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

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

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

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

Примечание

Покрытие решений для сверхгосударств применяется только к исключительным подстанциям (ИЛИ). Сверхсостояние не принимает решений для параллельных подсостояний (И).

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

Примечание

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

КонтекстПримерПринимаемые решения

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

Государства A и A1 активны.

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

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

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

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

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

Если сверхсостояние имеет два исключительных (ИЛИ) подсостояния, то решение сверхсостояния А заключается в том, какое подсостояние выполняет неявный переход от подсостояния к сверхсостоянию.

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

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

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

Дополнительные сведения см. в разделе Отчет о состоянии.

Государство с на решении заявления действия Event_Name

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

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

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

Примечание

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

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

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

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

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

Дополнительные сведения см. в разделе Отчет о переходах.

Охват MCDC для диаграмм потока состояний

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

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

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

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

Охват Simulink Design Verifier для диаграмм потока состояний

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

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

При указании показателя покрытия «Цели и ограничения» на панели «Покрытие» диалогового окна «Параметры конфигурации» программное обеспечение 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, на панели «Покрытие» в диалоговом окне «Параметры конфигурации» выберите «Цели и ограничения».

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

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

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

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

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

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

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

Разделы отчета «Сведения о подсистеме и диаграмме»

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

  • Подсистема - в этом разделе сообщается об охвате диаграммы:

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

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

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

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

  • Диаграмма - в этом разделе сообщается об охвате диаграммы:

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

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

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

    Для диаграммы и ее потомков отображается охват принятия решений. Покрытие состояния и MCDC неприменимы (NA) для диаграммы, но применяется к ее потомкам.

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

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

В sf_boiler модель, состояние On находится в ящике Heater. On - сверхсостояние, содержащее:

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

  • Стык истории

  • Функция warm

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

Покрытие решений для On state проверяет решение, какое подсостояние выполнить.

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

  • В разделе «Substate executed» (Подсостояние выполнено) выберите подсостояние, которое необходимо выполнить, когда On выполняется.

  • В разделе Substate exitted when parent exited (Выход из подсостояния при выходе из родительского подсостояния) укажите, какое On выходы. NORM указан как никогда не активный, когда On выходит, потому что инструмент покрытия видит супертрансцию из NORM кому Off как переход от On кому Off.

  • В поле Ранее активное подсостояние введено из-за истории, какое подсостояние необходимо повторно ввести, когда On повторно выполняется. Предыстория соединения записывает ранее активное подсостояние.

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

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

Примечание

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

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

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

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

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

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

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

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

  • Условие варьируется от true до false.

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

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

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

Проверка состояния

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

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

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 имеет значение false. То же самое относится к результату правой стороны, если C4 или C5 имеет значение false. При поиске совпадающих пар, которые изменяют результат решения путем изменения одного условия, сохранение некоторых из оставшихся условий постоянным не имеет значения. В этих случаях отчет MCDC помечает эти условия знаком «x», чтобы указать на их неактуальность как участника результата. Эти условия отображаются, как показано на рисунке.

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

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

Таблицы переходов состояний являются альтернативным способом выражения модальной логики в 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. Поэтому регистрируется только покрытие принятия решений.

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

Покрытие модели для атомных субчартов потока состояний

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

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

Моделирование doc_atomic_subcharts_map_iodata примерная модель и охват принятия решений:

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

    Эта модель содержит два блока синусоидальной волны, которые подают входные сигналы на диаграмму Stateflow. Диаграмма содержит две атомарные подчасти - A и B, которые связаны из одной и той же библиотечной диаграммы с именем A. Библиотечная диаграмма содержит следующие объекты:

  2. В редакторе Simulink выберите «Параметры модели» на вкладке «Моделирование». Выберите панель «Покрытие» в диалоговом окне «Параметры конфигурации».

  3. Выберите Включить анализ покрытия, а затем выберите Вся система.

  4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Параметры конфигурации (Configuration Parameters).

  5. Моделирование doc_atomic_subcharts_map_iodata модель.

    По завершении моделирования открывается отчет о покрытии.

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

  • Для экземпляра атомарного подкадра и его содержимого. Покрытие решений неприменимо (NA), поскольку эта диаграмма не имеет явного триггера.

  • Для библиотечной диаграммы A и ее содержимого. Сама диаграмма достигает 100% покрытия на входе u1и 88% покрытия состояний и переходов внутри библиотечной диаграммы.

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

Охват модели для таблиц истинности потока состояний

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

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

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

Только условия.

MATLAB

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

Примечание

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

Примечание

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

Анализ охвата в таблицах истинности потока состояний

При наличии лицензии Stateflow можно создать отчет о покрытии модели для таблицы истинности.

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

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

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

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

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

Примечание

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

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

ОсвещениеОбъяснение

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

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

17% (1/6) покрытия решений

Три константы, которые являются входами в таблицу истинности (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 ни одно из условий не выполняется.

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

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

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

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

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

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

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

  1. Откройте окно sf_car модель из Simulate Chart как блок Simulink с локальными событиями (Stateflow).

  2. На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings).

  3. На панели Покрытие диалогового окна Параметры конфигурации выберите Включить анализ покрытия.

  4. В разделе Показатели покрытия установите Уровень структурного покрытия равным Modified Condition Decision Coverage (MCDC).

  5. Нажмите кнопку ОК.

  6. Смоделировать модель, нажав кнопку Выполнить (Покрытие).

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

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

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

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

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

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

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

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

Покрытие кода для кода C/C + + в диаграммах потока состояний

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

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

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

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

  • Многоразовые подсистемы

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

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

Открыть пример модели

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

model = 'slvnvdemo_cv_mutual_exclusion';
open_system(model);

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

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

Выполните команды для покрытия решения подсистемы 1:

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

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

Выполните команды для покрытия решений подсистемы 2:

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

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

Выполните команду для создания совокупного покрытия принятия решений для подсистемы 1 и подсистемы 2:

covobj3 = covobj1 + covobj2;

Создание отчета о покрытии для подсистемы 1

Создание HTML-отчета для охвата решений подсистемы 1:

cvhtml('subsystem1',covobj1)

В отчете указывается, что охват принятия решений для подсистемы 1 составляет 50%. true условие для enable logical value не анализируется.

Создание отчета о покрытии для подсистемы 2

Создайте HTML-отчет для охвата решений подсистемы 2:

cvhtml('subsystem2',covobj2)

В отчете указывается, что охват принятия решений для подсистемы 2 составляет 50%. false условие для enable logical value не анализируется.

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

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

cvhtml('cum_subsystem',covobj3)

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