Main Content

閉ループ シミュレーション モデルでの未達カバレッジの達成

100% のカバレッジを達成しないサブシステムまたは Stateflow® チャートがあり、それらを Model ブロックに変換しない場合は、この例に従ってフル カバレッジを達成します。

この例では、閉ループ コントローラー モデルを使用します。"閉ループ コントローラー" は制御対象のシステムに命令を与え、制御命令の実行時に環境から情報を受け取ります。コントローラーは、この情報を受信する際、命令の受け入れおよび変更を行うことができます。

sldvdemo_autotrans モデルは閉ループ シミュレーション モデルです。ShiftLogic Stateflow チャートは、このモデルのコントローラーの部分を表します。ManeuversGUI Signal Builder ブロックで設計されたテスト ケースは、閉ループ シミュレーションを駆動します。

モデルのカバレッジ データの記録

モデルのシミュレーションを実行し、ShiftLogic コントローラーの条件カバレッジ、判定カバレッジおよび MCDC カバレッジを記録するには、次を行います。

  1. モデル例を開きます。

    openExample('sldv/UsingExistingCoverageDataSubsystemAnalysisExample',...
    'supportingFile','sldvdemo_autotrans')
  2. [アプリ] タブで、[アプリ] セクションの右側にある矢印をクリックします。

    [モデルの検証とテスト] の下で [カバレッジ アナライザー] をクリックします。

  3. [カバレッジ] タブで、[設定] をクリックします。

  4. [コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] ペインで、オプションを次のように設定します。

    • [カバレッジ解析を有効にする] を選択します。

    • [サブシステム] を選択して [サブシステムの選択] をクリックします。

    • [サブシステムの選択] ダイアログ ボックスで ShiftLogic を選択し、[OK] をクリックします。

  5. [カバレッジ メトリクス] の下で、[改良条件判定カバレッジ (MCDC)] を選択します。

  6. [その他のメトリクス] がオンになっている場合はオフにします。

  7. [コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ][結果] ペインで、オプションを次のように設定します。

    • [cvdata オブジェクト名] フィールドに「covdata_original_controller」と入力してカバレッジ データ ワークスペース変数の名前を一意に指定します。

    • [解析後にレポートを自動生成する] を選択します。

  8. [OK] をクリックします。

  9. sldvdemo_autotrans モデルのシミュレーションを開始して、カバレッジ データを記録します。

    シミュレーションが終了すると、カバレッジ レポートが開きます。レポートには、ShiftLogic Stateflow チャートで次のカバレッジが達成されたことが示されます。

    • 判定: 87% (27/31)

    • 条件: 67% (8/12)

    • MCDC: 33% (2/6) conditions reversed the outcome

    シミュレーションでは、カバレッジ データは MATLAB® ワークスペース変数 covdata_original_controller (カバレッジ データを格納する cvtest オブジェクト) に保存されます。

  10. カバレッジ データを MATLAB パス上のファイルに保存します。

    cvsave('existingcov',covdata_original_controller);

未達カバレッジのテスト ケースの検出

ShiftLogic チャートの未達カバレッジを検出するため、そのブロックのサブシステム解析を実行します。この手法を使用して、解析をモデルの個別の部分に絞り込みます。

ShiftLogic コントローラーの 100% のカバレッジを達成するには、既存のカバレッジ データを使用するテスト生成解析を実行します。

  1. ShiftLogic ブロックを右クリックし、[Design Verifier][オプション] を選択します。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスの [選択] ツリーで、[Design Verifier] ノードを選択します。[解析オプション] の下の [モード] フィールドで [テスト生成] を選択します。

  3. [Design Verifier] ノードの下で、[テスト生成] を選択します。[既存のカバレッジ データ] の下で、[既存のカバレッジ データで条件が満たされているオブジェクティブを無視する] を選択します。

  4. [カバレッジ データ ファイル] フィールドに、シミュレーションの実行時に記録したカバレッジ データを含むファイルの名前を入力します。

    existingcov.cvt
  5. [適用] をクリックして、これらの設定を保存します。

  6. [選択] ツリーで、[Design Verifier] をクリックします。

  7. メインの [Design Verifier] ペインで、[テストの生成] をクリックします。

    Stateflow チャートが ShiftLogic0 という名前の新しいモデルに抽出されます。以前に達成されて existingcov.cvt ファイルに記録されたカバレッジ オブジェクティブを無視して、新しいモデルが解析されます。

  8. テスト生成解析が完了したら、Simulink® Design Verifier™ のログ ウィンドウで [テストをシミュレートしてモデル カバレッジ レポートを生成] を選択します。

    レポートには、Simulink Design Verifier で生成されたテスト ケースによるシミュレーションにおいて、ShiftLogic チャートに対し以下のカバレッジが達成されたことが示されます。

    • 判定: 84% (26/31)

    • 条件: 83% (10/12)

    • MCDC: 67% (4/6) conditions reversed the outcome

    Simulink Design Verifier レポートには、existingcov.cvt ファイルでカバーされないオブジェクティブを達成させる抽出されたモデルの 6 つのテスト ケースがリストされます。

    Simulink Design Verifier レポートには、Stateflow チャート ShiftLogic の 2 つのカバレッジ オブジェクティブが達成されないと証明されたことが示されます。ShiftLogic チャートは各タイム ステップで更新されるので、暗黙的なイベント tickfalse になることはありません。時相イベント after(TWAIT, tick) のいずれかのインスタンスで条件または MCDC のカバレッジが達成されることはありません。

    after(TWAIT, tick) は、次と同等の意味をもちます。

    Event == tick && temporalCount(tick) >= TWAIT

    after(TWAIT, tick) を次のような条件に入れたとします。

    [after(TWAIT, tick) && speed < down_th]

    Simulink Design Verifier は、tick が常に true であると判断し、after(TWAIT, tick)temporalCount(tick) >= TWAIT の部分のみをテストします。解析では、after(TWAIT, tick) の条件カバレッジおよび MCDC カバレッジを達成させるテスト オブジェクティブを検出することができます。

関連するトピック