このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
コード カバレッジ レポート
[SIL/PIL マネージャー] アプリで [実行] ボタンを使用してソフトウェアインザループ (SIL) モードまたはプロセッサインザループ (PIL) モードでモデルをシミュレートすると、Simulink® Coverage™ により、指定したモデルから生成されたコードについてのコード カバレッジ レポートが
という名前で作成されます。コード カバレッジ レポートを作成する方法はほかにもあり、たとえば S-Function ブロックや C Caller ブロックなどのカスタム C/C++ ブロックを含むモデルのモデル カバレッジを収集する場合にも作成されます。レポートの種類の詳細については、カバレッジ レポートの種類を参照してください。model_name
_cov.html
SIL/PIL モードで実行しているモデルの場合、コード カバレッジ レポートは [カバレッジの詳細] ペインでも自動的に開かれます。
sldemo_fuelsys
モデルにアクセスするには、MATLAB® コマンド ウィンドウで次を実行します。
openExample("sldemo_fuelsys");
解析情報
解析情報の節には、解析対象のモデルまたはファイルに関する基本情報が表示されます。
カバレッジ データ情報 — カバレッジ データの収集に使用された MATLAB リリース バージョンが表示されます。
モデル情報 — モデルのバージョン番号、作成者、最終保存日時など、モデルに関するいくつかのメタデータが表示されます。
ハーネス情報 — Simulink Test™ ハーネスからカバレッジを収集した場合に表示されます。使用されたハーネスに関するいくつかの情報が表示されます。
ファイル情報 — コード生成で生成されたファイルに関するいくつかのデータが表示されます。
カバレッジ オプション — カバレッジを解析するときに選択されたコンフィギュレーション パラメーターの値が表示されます。フィルターが適用されている場合は、フィルターの名前もここに表示されます。
カバレッジ解析からフィルターで除外されたオブジェクト — カバレッジ フィルター ファイルの名前と絶対パス、カバレッジ解析からフィルターで除外されたすべての式またはカバレッジ オブジェクティブの結果、およびそれらをフィルター処理する理由として指定された根拠が表示されます。
テスト集計
[テスト集計] 節は、以下を行った場合に表示されます。
Simulink Test マネージャーを通して少なくとも 2 つのテスト ケースについてカバレッジの結果の集計を記録し、集計結果のカバレッジ レポートを生成した場合。または、
カバレッジの結果エクスプローラーで累積カバレッジの結果のカバレッジ レポートを生成した場合。
Simulink Test マネージャーを通してテスト ケースを実行した場合、[テスト集計] セクションは、Simulink Test マネージャー内の関連付けられたテスト ケースにリンクされます。
結果エクスプローラーを通してテスト ケースの結果を集計した場合、[テスト集計] 節は、結果エクスプローラーの対応する cvdata
ノードにリンクされます。
[テスト集計] 節の各実行について、Simulink Test マネージャーまたはカバレッジの結果エクスプローラー内の対応する結果に対してリンクが張られます。
集計されたユニット テスト
1 つ以上のサブシステム ハーネスのカバレッジを記録した場合、[テスト集計] 節に、実行された各ユニット テストがリストされます。
各テスト対象ユニットが序数 n を取り、1 つのテスト対象ユニットの各テストが序数 m を取り、U
n.m の形式で示されます。
概要
カバレッジ概要には、以下の 2 つの小節があります。
テスト
[テスト] 節には、各テスト ケースの開始時間と終了時間、およびシミュレーションの前に実行されたセットアップ コマンドが表示されます。各テスト ケースの見出しには、cvtest
コマンドを使用して指定されたテスト ケースのラベルが含まれています。この節は、レポートにテスト集計節が含まれない場合にのみ表示されます。
概要
[概要] 節には、ファイルおよび関数ごとにレポートされたコード カバレッジ結果の概要が表示されます。特定のファイルまたは関数の詳細な結果を表示するには、概要の小節でファイルまたは関数の名前をクリックします。
概要テーブルには、ファイルおよび関数ごとに行があります。概要テーブルの最初の列は、そのファイルまたは関数の循環的複雑度を表します。たとえば、ファイル sldemo_fuelsys.c
の循環的複雑度は 123
です。その後に続く各列には、該当するカバレッジ メトリクスのラベルが付いています。それぞれの列に、メトリクスのカバレッジ結果が、達成されたカバレッジ オブジェクティブの結果のパーセンテージとして表示されます。バーの青のセクションは達成されたオブジェクティブの結果を示し、バーのピンクの部分は未達カバレッジを示します。正当化されたオブジェクティブの結果はバーの薄い青またはシアンのセクションで示されます。この例のイメージでは、2... look1_binlx
の行に正当化されたオブジェクティブがあります。
詳細
[詳細] 節には、コード カバレッジの結果の詳細なレポートが表示されます。[詳細] 節の各小節に、解析されたコードに含まれるファイルまたは関数についての結果の概要が表示されます。
モデル オブジェクトを左クリックすると、モデル オブジェクトの [モデル オブジェクト別の詳細] 小節にアクセスできます。
ファイルの詳細
[ファイルの詳細] 節には、コード ファイル全体の結果の概要が表示され、その後に関数の一覧が続きます。関数の名前をクリックすると、[詳細] の該当する小節に移動します。
たとえば、モデル sldemo_fuelsys
を SIL モードで実行すると、生成されたコードは sldemo_fuelsys.c
に格納されます。
[ファイル] 小節のカバレッジ率は、ファイル内に格納されている各関数の合計のカバレッジです。関数の名前をクリックすると、個別のカバレッジの詳細を表示できます。
関数の詳細
各関数の [詳細] 節には、関数のテスト カバレッジ結果の概要、関数に含まれる式の一覧、および親ファイルと関連するモデル オブジェクトへのリンクが表示されます。
次の図は、sldemo_fuelsys
モデル例の SIL モード シミュレーションにおける関数 rt_ertODEUpdateeContinuousStates
のカバレッジ結果を示しています。
要件テストの詳細
Requirements Toolbox™ の要件にリンクされた Simulink Test のテスト ケースを少なくとも 2 つ実行すると、カバレッジ レポートの集計に、モデル要素間のリンク、テスト ケース、リンクされている要件の詳細が記載されます。
[要件テストの詳細] 節には以下が含まれます。
実装済みの要件 — モデル要素にリンクされている要件。
テストにより検証済み — その要件を検証したテスト。
関連付けられた実行 — 各検証テストに関連付けられた実行。
カバレッジ結果からカバレッジ レポート内の要件にトレースする例については、カバレッジ結果から要件へのトレースを参照してください。
循環的複雑度
モデル カバレッジ レポートでは、循環的複雑度の数値を 2 か所に表示するように指定することができます。
[概要] 節にはモデルの階層構造の各オブジェクトの循環的複雑度が表示されます。ファイルまたは関数の場合、この数字にはすべての子孫の循環的複雑度が含まれています。
各オブジェクトの詳細節には、すべてのオブジェクトの循環的複雑度が個別に表示されます。
判定解析
コード カバレッジ レポートには、関数内の各判定について個別の節が含まれます。[判定解析] の表には、判定について起こり得る結果と、テスト シミュレーションごとの結果の発生回数が表示されます。発生しなかった結果は、赤色で強調表示された表の行に表示されます。既定では、判定カバレッジが 100% となる判定については [判定解析] の表は表示されません。カバレッジ レポートのオプションの詳細については、結果エクスプローラーからカバレッジ データへのアクセスを参照してください。
この例では、判定 u1 < 0.0
はすべてのタイム ステップで false
であるため、この判定の判定カバレッジは 50% になります。
関数のリンク rt_remd
をクリックすると、その関数の結果を表示する [詳細] 節内の上の部分にスクロールします。モデル オブジェクトのリンク sldemo_fuelsys
をクリックすると、モデルが開き、カバレッジが強調表示されます。
条件解析
条件解析表には、関数またはファイル内に含まれる各条件について、真と偽の条件結果の発生回数が表示されます。
この例では、u
が 0
と等しくない条件 u != 0.0
はすべてのタイム ステップで true
であり、u
が u1_0
と等しくない条件 u1 != u1_0
はすべてのタイム ステップで false
です。したがって、それぞれの条件の条件カバレッジが 50% になり、親の式の条件カバレッジは 50% になります。
MCDC 解析
MCDC 解析表には、MCDC 条件ケースと、各判定を構成する条件がテスト ケースでどの程度実行されるかが表示されます。ある判定に対して MCDC フル カバレッジを達成するためには、各条件が判定結果に個々に影響するように解析で決定する必要があります。
MCDC 解析表では、Simulink Coverage が MCDC カバレッジのために解析する、親となる式の各部分式を示します。この例では、親となる式は (u1 != 0.0) && (u1 != u1_0)
で、MCDC 解析表で提示される部分式は u1 != 0.0
と u1 != u1_0
です。
MCDC 解析表の [判定/条件] 列は、判定の各判定入力を示します。次の 2 列、[真の出力] と [偽の出力] は、式がそれぞれ true
と false
を返す値の組み合わせを示します。ここで、T
は true
、F
は false
、x
は論理ショートサーキットのため条件結果が無関係であることを意味します。
メモ
モデルをソフトウェアインザループ (SIL) モードでシミュレーションするなど、モデルから C または C++ コードを生成する場合、生成コードはショートサーキット論理演算子を使用して生成コードの実行速度を高速化します。モデル カバレッジ解析で論理ショートサーキットを無効にすると、モデルとコード カバレッジの結果に不一致が生じることがあります。
太字は、判定結果に独立した影響を与えて、MCDC 解析表の当該セルを満たす必要があるものです。
式の前後のかっこは、指定された入力の組み合わせが、カバレッジ解析では発生しなかったことを表します。つまり、このテスト ケースは該当する条件ケースを網羅していないことになります。
解析で使用される MCDC 定義によっては、一部のモデル要素による MCDC カバレッジの達成率が低くなります。解析で使用される MCDC 定義がどのようにカバレッジの結果に影響するのかの詳細については、Simulink Coverage における改良条件判定カバレッジ (MCDC) 定義を参照してください。
累積カバレッジ
連続するカバレッジ結果を記録した後に、カバレッジの結果エクスプローラー内からカバレッジ結果にアクセスし、管理および集計するを実行できます。既定では、各シミュレーションの結果はレポートに累積的に保存、記録されます。
カバレッジの結果エクスプローラーの [設定] ペインで [累積進行状況レポートの表示] を選択すると、累積カバレッジ レポートに含まれるすべての表の右端の領域にある結果に、実行結果の合計値が反映されます。レポートは、最後の実行による追加カバレッジと、セッション内での過去のすべての実行により得られたカバレッジを簡単に比較できるように構成されています。
累積カバレッジ レポートには、以下の情報が表示されます。
現在の実行 — 完了したばかりのシミュレーションのカバレッジ結果。
デルタ — 完了したばかりのシミュレーションで得られた累積カバレッジに追加されたカバレッジのパーセンテージ。以前のシミュレーションの累積カバレッジと現在のカバレッジがともに非ゼロの場合、新しいカバレッジが累積カバレッジに追加されなければ、デルタが 0 になることがあります。
累積 — 完了したばかりのシミュレーションを含むそれまでのシミュレーションでモデルについて収集された総カバレッジ。
3 つのテスト ケースを実行すると、概要レポートには 3 番目のテスト ケースで得られた追加カバレッジと、最初の 2 つのテスト ケースで得られた累積カバレッジが表示されます。
判定解析
累積カバレッジの [判定解析] の表には判定結果を示すデータ列が 3 つあり、それぞれ現在の実行、前回の実行以降のデルタ、累積データを表しています。
たとえば、u < 0.0
の判定の表において、実行 1 ではすべてのタイム ステップで判定が false であり、実行 2 でも同様であるため、列 [#2] で追加の判定カバレッジは追加されず、実行 1 と合計の両方の判定カバレッジが 50% になります。
条件解析
条件解析表には列見出し [#n T] と [n F] があり、各テスト ケースの結果が表示されます。この表では [真の合計] と [偽の合計] で累積結果を表しています。テスト ケースごとに、対応するブロックの各入力端子での真および偽の条件を特定できます。
たとえば、この図の条件の表では、[条件解析] の表に累積カバレッジ結果が表示されています。条件 u != 0.0
は、実行 1 ではすべてのタイム ステップで true
であり、実行 2 でも同様であるため、合計の条件カバレッジは 50% になります。条件 u1 != u1_0
は、実行 1 ではすべてのタイム ステップで false
であり、実行 2 でも同様であるため、合計の条件カバレッジは 50% になります。
MCDC 解析
MCDC 解析の [#n 真の出力] および [#n 偽の出力] 列には、各テスト ケースの条件ケースが表示されます。[真の出力合計] および [偽の出力合計] 列は累積結果を示しています。
メモ
コマンド ラインで、再利用可能なサブシステムと Stateflow® 構造の累積カバレッジを計算できます。詳細については、再利用可能なサブシステムの累積カバレッジの取得を参照してください。
Relational Boundary Analyzed
累積カバレッジの [Relational Boundary analyzed] の表には関係演算子の境界の結果を示すデータ列が 3 つあり、それぞれ現在の実行、前回の実行以降のデルタ、累積データを表しています。
たとえば、式 rtmIsMajorTimeStep(rtM)
についての関係演算子の境界の解析では、実行 1 の関係演算子の境界カバレッジが 67% で、実行 2 には追加のカバレッジがないため、関係演算子の境界カバレッジの合計が 67% になっています。
関係演算子の境界
[関係演算子の境界] のカバレッジを収集すると、Simulink Coverage で作成される、関係演算子の境界カバレッジを受け取る式のコード カバレッジ レポートに関係演算子の境界の表が含まれます。この表は、関連する明示的または暗黙的な関係演算に適用されます。詳細については、関係演算子の境界カバレッジを参照してください。
以下の表は、関係式 input1 <= input2
の関係演算子の境界カバレッジ レポートを示しています。表の表示は、オペランドのデータ型によって異なります。
整数
両方のオペランドが整数である場合 (または一方のオペランドが整数でもう一方が boolean である場合)、表は次のように表示されます。
などの関係演算の場合は次のようになります。operand_1
<= operand_2
1 行目には、2 つのオペランドが
の形式で示されます。operand_1
-operand_2
2 行目には、
が -1 と等しくなるシミュレーション中の回数が示されます。operand_1
-operand_2
3 行目には、
がoperand_1
と等しくなるシミュレーション中の回数が示されます。operand_2
4 行目には、
が 1 と等しくなるシミュレーション中の回数が示されます。operand_1
-operand_2
固定小数点
オペランドの 1 つの型が固定小数点型で、他のオペランドが固定小数点または整数である場合、表は次のように表示されます。LSB
は最下位ビットの値を表します。詳細については、精度 (Fixed-Point Designer)を参照してください。2 つのオペランドの精度が異なる場合、精度の値が小さい方が使用されます。
などの関係演算の場合は次のようになります。operand_1
<= operand_2
1 行目には、2 つのオペランドが
の形式で示されます。operand_1
-operand_2
2 行目には、
がoperand_1
-operand_2
-LSB
と等しくなるシミュレーション中の回数が示されます。3 行目には、
がoperand_1
と等しくなるシミュレーション中の回数が示されます。operand_2
4 行目には、
がoperand_1
-operand_2
LSB
と等しくなるシミュレーション中の回数が示されます。
浮動小数点
オペランドの 1 つの型が浮動小数点型の場合、表は次のように表示されます。tol
は、入力値と指定した許容誤差を使用して計算された値を表します。許容誤差を指定しない場合、既定値が使用されます。詳細については、関係演算子の境界カバレッジを参照してください。
などの関係演算の場合は次のようになります。operand_1
<= operand_2
1 行目には、2 つのオペランドが
の形式で示されます。operand_1
-operand_2
2 行目には、
が範囲operand_1
-operand_2
[-tol..0]
内の値をもつシミュレーション中の回数が示されます。3 行目には、
が範囲operand_1
-operand_2
(0..tol]
内の値をもつシミュレーション中の回数が示されます。
この表の表示は、ブロックの関係演算子に従って変更します。関係演算子に応じて、0 と等しい
の値は、次のいずれかになります。 operand_1
- operand_2
関係演算子の境界カバレッジから除外される。
関係演算子の境界の上の領域に含まれる。
関演算子の境界の下の領域に含まれる。
Relational Operator | レポートの形式 | 説明 |
---|---|---|
== | [-tol..0) | 0 は除外されます。 |
(0..tol] | ||
!= | [-tol..0) | 0 は除外されます。 |
(0..tol] | ||
<= | [-tol..0] | 0 は関係演算子の境界の下の領域に含まれます。 |
(0..tol] | ||
< | [-tol..0) | 0 は関係演算子の境界の上の領域に含まれます。 |
[0..tol] | ||
>= | [-tol..0) | 0 は関係演算子の境界の上の領域に含まれます。 |
[0..tol] | ||
> | [-tol..0] | 0 は関係演算子の境界の下の領域に含まれます。 |
(0..tol] |
0 は <=
の場合は関係演算子の境界の下に含まれますが、<
の場合は関係演算子の境界の上に含まれます。この規則は判定カバレッジと一致します。次に例を示します。
関係式
input1 <= input2
では、input1
がinput2
以下の場合判定は真です。<
と=
はグループ化されます。したがって、0 は関演算子の境界の下の領域に含まれます。関係式
input1 < input2
では、input1
がinput2
未満の場合にのみ判定は真です。>
と=
はグループ化されます。したがって、0 は関演算子の境界の上の領域に含まれます。