Когда Simulink® Coverage™ измеряет покрытие для модели, это использует те же принципы, используемые в покрытии кода. В покрытии кода вы тестируете тот весь код, выполняется, чтобы гарантировать, что нет никакого неожиданного поведения в вашей программе. Simulink Coverage применяет то же измерение к вашей модели Simulink, чтобы гарантировать, что все блоки и логические ветви выполняются.
Метрики структурного покрытия анализируют структурные элементы вашей модели, такие как блоки и Stateflow® графики, и сообщают, сколько из модели и, если применимо, выполняют логические ветви. Четыре метрики структурного покрытия для покрытия модели являются покрытием выполнения блока, Decision Coverage, покрытием условия и модифицированным Decision Coverage условия (MCDC). Эти метрики анализируют структурные элементы вашей модели, такие как блоки и диаграммы Stateflow, и сообщают, сколько из логики и/или ветвей вашей модели выполняется.
Для получения дополнительной информации об этих и других метриках покрытия, смотрите Типы Покрытия модели.
Блокируйтесь покрытие выполнения говорит вам, выполняется ли каждый блок в процессе моделирования. Метрика покрытия кода, которые блокируют покрытие выполнения, является самой похожей на, покрытие оператора.
Большинство блоков получает покрытие выполнения, несмотря на то, что существуют некоторые типы блоков, которые не получают покрытие вообще. Для получения дополнительной информации смотрите Объекты модели, Которые Не Получают Покрытие.
Decision Coverage анализирует моменты принятия решения в вашем коде или модели. В покрытии кода решением является Булево выражение, состоявшее из одного или нескольких условий и нуля или большего количества булевых операторов. В покрытии модели решение является местом в вашей модели, где значение одного или нескольких входных сигналов решает выходной сигнал блока.
В покрытии кода, решение A && B
имеет 100% Decision Coverage, если решением является true
по крайней мере для одного временного шага и лжи по крайней мере для одного временного шага, независимо от результатов отдельных условий в решении. Точно так же в покрытии модели, блок Switch имеет 100% Decision Coverage если true
случай выполняется по крайней мере для одного временного шага и false
случай выполняется по крайней мере для одного временного шага.
Decision Coverage условия анализирует оба момента принятия решения и условия, которые составляют решения. В покрытии кода условием является Булево выражение, которое не содержит булевых операторов. Другими словами, это - Булево выражение, которое не может быть разломано на более простые Булевы выражения. Примером условия является выражение как A
, где результатом является true
или false
.
В покрытии модели покрытие условия анализирует блоки, которые выводят логическую комбинацию их входа. Примером условия в модели является блок Logical Operator. Блок Logical Operator с набором оператора к And
вывел бы true
если всеми его входными сигналами является true
. Это - то, что предназначается логической комбинацией его входных параметров.
Выражение A
имеет 100%-е покрытие, если условием является true
по крайней мере для одного временного шага и false
по крайней мере для одного временного шага. Точно так же блок Logical Operator имеет 100%-е покрытие условия, если каждым из его входных сигналов является true
по крайней мере для одного временного шага и false
по крайней мере для одного временного шага. В этой модели в качестве примера, сигналы A
и B
булевы значения в модели, которые представляют те же условия как пример кода.
MCDC является Decision Coverage условия, кроме каждого условия должен независимо влиять на результат решения.
В покрытии кода MCDC анализирует код, чтобы гарантировать, что каждая точка входа и выхода программы вызывается, по крайней мере, однажды, и каждое условие и решение взяли каждый возможный исход, по крайней мере, однажды. В MCDC каждое условие должно независимо влиять на результат решения.
Используя тот же пример с решением A && B
, чтобы достигнуть 100%-го покрытия MCDC, условия должны показать TT
tf
, и FT
. Вам нужны эти три результата для того, чтобы показать, что каждое условие независимо влияет на результат блока. FF
результат не нужен, потому что это не изменяет результат решения от TF
и FT
случаи.
В покрытии модели MCDC ищет реверсирования решения, которые происходят, потому что один результат условия изменяется от true
к false
или от false
к true
. Примером блока, который получает покрытие MCDC, является блок Logical Operator.
Блок And имел бы 100%-е покрытие MCDC, если каждый входной результат условия изменяется, независимо влияя на результат решения. Например, блок And с двумя входными условиями должен показать три результата. true
случай, где и входные условия верны, и два ложных случая, где условие 1 является ложным, в то время как условие 2 верно, и наоборот.