Main Content

構造カバレッジ メトリクス

Simulink® Coverage™ でモデルのカバレッジを測定する場合、コード カバレッジで使用されるものと同じ原則が使用されます。コード カバレッジで、すべてのコード行が実行されることを示すテストを作成し、プログラムに予期されない動作がないことを示します。Simulink Coverage では同じ測定が Simulink モデルに適用されます。Simulink Coverage はモデルを解析し、モデルのどのブロックおよび論理分岐がシミュレーション時にアクティブなのかをレポートします。

構造カバレッジ メトリクスにより、ブロックや Stateflow® チャートなど、モデルの構造化要素が解析され、モデルおよび論理分岐 (適用可能な場合) がどの程度実行されているかレポートされます。モデル カバレッジの 4 つの構造カバレッジ メトリクスは、ブロック実行カバレッジ、判定カバレッジ、条件カバレッジ、および改良条件判定カバレッジ (MCDC) です。

これらおよびその他のカバレッジ メトリクスの詳細については、モデル カバレッジの種類を参照してください。

ブロック実行カバレッジ

ブロック実行カバレッジは、各ブロックがシミュレーション中に実行されているかどうかを示します。ブロック実行カバレッジに最も似ているコード カバレッジは、ステートメント カバレッジです。

On the left, code coverage checks whether the C=0 statement in an if clause executes. On the right, model coverage checks that a Constant block executes.

ほとんどのブロックは実行カバレッジの対象となりますが、カバレッジ メトリクスの対象とならないブロックのタイプがいくつかあります。詳細については、カバレッジの対象とならないモデル オブジェクトを参照してください。

判定カバレッジ

判定カバレッジは、コードまたはモデルの判定点を解析します。コード カバレッジの判定は、1 つ以上の条件と 0 以上の論理演算子で構成される論理式です。モデル カバレッジの判定は、1 つ以上の入力信号の値でブロックの出力信号を判定するモデル内の場所です。

On the left, code coverage checks a decision expression A && B for a true and false case. On the right, model coverage checks a Switch block for a true and false case.

コード カバレッジでは、判定 A && B で、少なくとも 1 つのタイム ステップで判定が true となり、かつ少なくとも 1 つのタイム ステップで false となる場合、判定内の個々の条件の結果に関係なく、判定カバレッジは 100% になります。同様に、モデル カバレッジでも、Switch ブロックで、少なくとも 1 つのタイム ステップで true ケースが実行され、かつ少なくとも 1 つのタイム ステップで false ケースが実行されている場合、判定カバレッジは 100% になります。

条件判定カバレッジ

条件判定カバレッジは、判定点と判定を構成する条件の両方を解析します。コード カバレッジでは、条件は、論理演算子を含まない論理式です。言い換えれば、簡潔な論理式に分割できない論理式です。条件の例として、A のような式では、結果は true または false になります。

モデル カバレッジで、条件カバレッジは、入力の論理組み合わせを出力するブロックを解析します。モデルの条件の例として、Logical Operator ブロックがあります。演算子が And に設定された Logical Operator ブロックは、そのすべての入力信号が true の場合 true を出力します。これは、入力の論理組み合わせを意味するものです。

On the left, code coverage checks two condition expression A and B for a true and false case. On the right, model coverage checks a Logical Operator block for true and false cases for both of its input signals.

A では、少なくとも 1 つのタイム ステップで条件が true となり、かつ少なくとも 1 つのタイム ステップで false となる場合、カバレッジは 100% になります。同様に、Logical Operator ブロックでは、その各入力信号が少なくとも 1 つのタイム ステップで true となり、かつ少なくとも 1 つのタイム ステップで false となる場合、条件カバレッジは 100% となります。このモデル例では、信号 A および B は、コード例と同じ条件を表すモデル内のブール値になります。

改良条件判定カバレッジ (MCDC)

MCDC は条件判定カバレッジですが、各条件が判定結果に個々に影響しなければならない点が異なります。

コード カバレッジでは、MCDC はコードを解析して、プログラムのすべてのエントリ ポイントとエグジット ポイントが少なくとも 1 回呼び出されていること、およびすべての条件と判定で少なくとも 1 回は可能なすべての結果が得られていることをテストします。また、各条件が判定結果に個々に影響しなければなりません。

判定 A && B で同じ例を使用して、MCDC カバレッジを 100% にするためには、条件に TTTF、および FT が示されなければなりません。各条件がブロックの結果に個別に影響することを示すために、これら 3 つの結果が必要です。これによって判定結果が TF ケースおよび FT ケースから変わらないため、FF の結果は必要ありません。

モデル カバレッジでは、MCDC は条件結果が true から false または false から true に変化したことが原因で反転した判定を検出します。MCDC カバレッジの対象となるブロックの例として、Logical Operator ブロックがあります。

And ブロックでは、各入力条件結果が変化して、判定の結果に個別に影響する場合、MCDC カバレッジは 100% になります。たとえば、2 つの入力条件をもつ And ブロックには 3 つの結果が示されなければなりません。つまり、両方の入力条件が true となる true ケースと、条件 1 は false で条件 2 は true、およびその逆の 2 つの false ケースです。

関連するトピック