Simulink Test のテスト マネージャーを使用したモデル カバレッジの解析
Simulink® Test™ のライセンスがある場合は、テスト マネージャーから直接カバレッジを収集できます。SimulinkTest の詳細については、Simulink Test 入門 (Simulink Test)を参照してください。
モデルのカバレッジを解析すると、Simulink Coverage™ では、シミュレーション時に実行された設計内のモデル オブジェクトがレポートされ、強調表示されます。テスト マネージャーを使用してテストとカバレッジの集計を調べ、特定のモデル オブジェクトを実行するテストを確認します。テスト スイートの複数のテストを実行し、各テストのカバレッジを解析してから、テスト マネージャーで結果セットの集計結果を表示できます。カバレッジ レポートとモデルの強調表示を使用して、指定したテスト ケースでモデルのどの部分がアクティブであるかを確認します。
モデルを開く
slvnvdemo_powerwindow
モデルを開きます。slvnvdemo_powerwindow
モデルには、パワー ウィンドウ コントローラーおよび低次のプラント モデルが含まれます。コントローラーは、Stateflow® チャートで実装されます。
カバレッジ メトリクスの選択
[アプリ] タブで、[Simulink Test] をクリックして [テスト] タブを開きます。[Simulink テスト マネージャー] をクリックします。
この例には、テスト ファイルが含まれます。テスト マネージャーで、[開く] をクリックします。[ファイルを開く] ウィンドウで、powerwindow_tests.mldatx
を選択します。
[テスト ブラウザー] ペインで、powerwindow_tests
をクリックします。次に、[カバレッジの設定] をクリックしてカバレッジ オプションを展開します。
モデルのカバレッジを有効にするには、[収集するカバレッジ] の下で、[テスト対象システムのカバレッジを記録] を選択します。[カバレッジ メトリクス] の下で、レポートするメトリクスを選択できます。カバレッジ メトリクスの詳細については、構造カバレッジ メトリクスを参照してください。
この例では、[判定]、[条件] および [MCDC] を選択します。
テストの実行とカバレッジの収集
powerwindow_tests
テスト ファイルには 2 つのテストがあります。[Test Case 1] には、[Driver]
に設定された Signal Editor シナリオがあり、モデルの既定の設定になっています。[Test Case 2] には、[Passenger]
に設定された Signal Editor シナリオがあります。
テスト マネージャーで、個々のテストまたはテスト スイート全体を実行するには、[テスト ブラウザー] でそれらを選択し、[実行] をクリックします。[Test Case 1] を選択し、[実行] をクリックします。
テストが完了すると、[結果とアーティファクト] タブが開きます。テストの結果をクリックすると、カバレッジ結果の概要が表示されます。
[Test Case 1] では、Signal Editor シナリオが [Driver]
に設定されています。[カバレッジの結果] テーブルの [解析されたモデル] 列でモデルの名前をクリックし、モデルの強調表示を有効にして、モデルでカバレッジ結果を表示できます。Simulink ウィンドウでは [カバレッジの詳細] ペインも開きます。
window_system
サブシステムは、サブシステム内のすべてのブロックのカバレッジが 100% になっていたため、緑になっています。他のサブシステムは、その中の 1 つ以上のブロックがフル カバレッジの対象になっていなかったため、赤になっています。
サブシステムをポイントして、各関連メトリクスのカバレッジの簡単な概要を確認できます。たとえば、power_window_control_system
サブシステム ブロックをポイントします。
ブロックを左クリックすると、[カバレッジの詳細] ペインにそのブロックのレポートのセクションが表示されます。たとえば、power_window_control_system
サブシステムをクリックします。
サブシステムに入って、そのサブシステムの内容について詳細なカバレッジ結果を表示できます。power_window_control_system
サブシステムをダブルクリックし、そのサブシステムに含まれるブロックのカバレッジ結果を表示します。validate_passenger
、check_up
の順にダブルクリックします。
And ブロック allow_action
をクリックして、レポートの関連セクションを表示します。
And ブロックをクリックして、条件および MCDC の結果を表示します。And ブロックでは 2 つの入力信号の論理的組み合わせが出力されるため、両方の入力信号が true の場合、出力信号は true になります。条件テーブルから、入力信号 1 はすべてのタイム ステップで false
であった一方、入力信号 2 は 878 個のタイム ステップで true
、884 個のタイム ステップで false
であったことがわかります。条件結果が 4 つあり、そのうちの 1 つは発生しなかったため、allow_action
ブロックの条件カバレッジは 75% になりました。
MCDC 解析テーブルには、1 つの条件結果が true
から false
または false
から true
に変化したことが原因で反転した判定がリストされています。このテーブルでは、FF
ケースのみが最初の条件で発生したこと、また MCDC オブジェクティブは 2 つ目の条件でも発生しなかった結果、MCDC は 0% としてレポートされています。
複数のテストの実行とカバレッジの集計の表示
slvnvdemo_powerwindow
モデルでは、And ブロック power_window_control_system/validate_passenger/check_up/allow_action
の条件カバレッジが 75% になっています。これは、モデル ルート レベルの Signal Editor ブロック Input
の [アクティブなシナリオ] が [Driver]
に設定されているためです。この未達カバレッジは、カバレッジ解析に [Test Case 2] を含めることで解決できます。
テスト マネージャーで、[テスト ブラウザー] タブを開きます。[Powerwindow Test Suite] をクリックし、[実行] をクリックしてテスト スイート内のテストを実行します。テストが完了すると、[結果とアーティファクト] ペインが開きます。新しいテストの結果を展開します。各テスト ケースを展開して個々のテストのカバレッジ結果を表示できます。
[Powerwindow Test Suite] を選択し、モデル名 slvnvdemo_powerwindow
をクリックすると、モデルが開き、カバレッジが強調表示されます。power_window_control_system/validate_passenger/check_up
に移動して、And ブロックをクリックします。カバレッジ レポートでは、条件カバレッジが 100% になっています。また、条件テーブルと MCDC テーブルの [T1] および [T2] リンクは、各オブジェクティブを達成しているテストにリンクされています。たとえば、最初の条件である true
のケースは、テスト ケース 2 [T2] で達成されていました。リンクをクリックして、レポートの [テスト集計] セクションにスクロールします。
テスト マネージャーの [カバレッジの結果の集計] テーブルでは、カバレッジ結果全体が改善されています。テスト スイートまたはテスト ファイル名をクリックすると、その中のテストのカバレッジ結果の集計が表示されます。
集計結果は、2 つの個々のテスト ケースよりも高いカバレッジ率を示してます。これはテスト ケースが一部のブロックで異なるオブジェクティブを達成しているためです。
カバレッジ結果のフィルター
カバレッジ レポートを解析して、モデルまたはテスト ケースを変更しただけでは修正できない未達カバレッジがあることを見つけた場合は、未達結果をフィルターして、未達カバレッジとして報告されないようにすることができます。カバレッジはテスト マネージャーから直接フィルターできませんが、既存のフィルターを適用してカバレッジ結果の変化を表示することはできます。カバレッジ結果をフィルターする理由として、次が考えられます。
ブロックが別のテスト スイートでテストされ、現在のカバレッジ解析に適用できない。
ブロックが、発生するはずがないと考えるエッジ ケースをキャッチすることを意図している。このタイプのモデル設計は "防御的コーディング" と呼ばれることもあります。
次の 2 つのタイプのカバレッジ フィルターがあります。
対象外指定フィルター規則はモデル要素に適用でき、適用すると要素はカバレッジ解析で無視されます。対象外指定されたモデル要素は、選択したメトリクスに適用できない他の要素と同様に、強調表示されたモデルでグレー表示されます。
正当化フィルター規則は、達成されないカバレッジ結果に適用できます。このフィルター規則を使用すると、Simulink Coverage では、残りのモデル要素は解析できますが、正当化された結果は未達カバレッジとしてレポートされません。このフィルター規則により、モデル オブジェクトのカバレッジを、完全に対象外指定することなく改善できます。
And ブロック条件 1 の MCDC 結果が別のテスト スイートでテストされ、このケースに適用できないとします。結果を正当化して、これを未達カバレッジとしてレポートされないようにできます。
モデルで、power_window_control_system/validate_passenger/check_up
サブシステムに移動し、And ブロック allow_action
をクリックして、カバレッジ レポートの関連セクションにスクロールします。TF
ケースが発生しなかったため、MCDC 条件 C1 (allow_action In1)
は不完全です。C1 (allow_action In1)
MCDC 結果を正当化するには、[正当化規則を追加] アイコン をクリックします。
カバレッジの結果エクスプローラーで [フィルター エディター] ペインが開き、新しい無題のフィルター ファイルが示されます。フィルター ファイルには、指定された結果の正当化規則が含まれます。複数のフィルター規則を同じフィルター ファイルに追加できます。
[名前] フィールドに、「slvnvdemo_powerwindow_filter
」と入力します。[フィルター規則] の下で、[根拠] フィールドをダブルクリックし、「Tested in a different test suite
」と入力します。[適用] をクリックして、ファイルを保存します。モデルとカバレッジ レポートが自動的に更新されて、結果が正当化されたことが示されます。
[カバレッジの詳細] ペインでは、正当化された結果がシアンで強調表示され、正当化の根拠にリンクします。[J1] をクリックすると、[カバレッジ解析からフィルターで除外されたオブジェクト] というタイトルのレポート セクションが示されます。レポートのこのセクションは、カバレッジ データに 1 つ以上のフィルターを適用した場合にのみ表示されます。
テスト マネージャーに戻ります。結果セットをクリックします。[カバレッジの結果の集計] セクションでは、カバレッジ フィルターが自動的に適用され、MCDC カバレッジの結果は 50% になっています。
メモ
適用されたカバレッジ フィルターを確認するには、最上位の結果をクリックする必要があります。フィルターはテスト スイートまたはテスト ケースの結果に含まれません。
別のカバレッジ フィルター ファイルを適用するには、結果セットをクリックし、[カバレッジ フィルター] セクションを展開して、[追加] をクリックします。
レポートの作成とアーカイブ
カバレッジ レポートを作成するには、[レポート] 列の矢印をクリックします。あるいは、[カバレッジの結果の集計] テーブルの下の [エクスポート] をクリックすることもできます。次に、cvhtml
を使用して、カバレッジ レポートを作成します。たとえば、変数名が coverageData
の結果をエクスポートする場合は、次のように入力します。
cvhtml('testManager_covData',coverageData)