閉ループ シミュレーション モデルでの未達カバレッジの達成
100% のカバレッジを達成しないサブシステムまたは Stateflow® チャートがあり、それらを Model ブロックに変換しない場合は、この例に従ってフル カバレッジを達成します。
この例では、閉ループ コントローラー モデルを使用します。"閉ループ コントローラー" は制御対象のシステムに命令を与え、制御命令の実行時に環境から情報を受け取ります。コントローラーは、この情報を受信する際、命令の受け入れおよび変更を行うことができます。
sldvdemo_autotrans
モデルは閉ループ シミュレーション モデルです。ShiftLogic Stateflow チャートは、このモデルのコントローラーの部分を表します。ManeuversGUI Signal Builder ブロックで設計されたテスト ケースは、閉ループ シミュレーションを駆動します。
モデルのカバレッジ データの記録
モデルのシミュレーションを実行し、ShiftLogic コントローラーの条件カバレッジ、判定カバレッジおよび MCDC カバレッジを記録するには、次を行います。
モデル例を開きます。
openExample('sldv/UsingExistingCoverageDataSubsystemAnalysisExample',... 'supportingFile','sldvdemo_autotrans')
[アプリ] タブで、[アプリ] セクションの右側にある矢印をクリックします。
[モデルの検証とテスト] の下で [カバレッジ アナライザー] をクリックします。
[カバレッジ] タブで、[設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] ペインで、オプションを次のように設定します。
[カバレッジ解析を有効にする] を選択します。
[サブシステム] を選択して [サブシステムの選択] をクリックします。
[サブシステムの選択] ダイアログ ボックスで
ShiftLogic
を選択し、[OK] をクリックします。
[カバレッジ メトリクス] の下で、
[改良条件判定カバレッジ (MCDC)]
を選択します。[その他のメトリクス] がオンになっている場合はオフにします。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] 、 [結果] ペインで、オプションを次のように設定します。
[cvdata オブジェクト名] フィールドに「
covdata_original_controller
」と入力してカバレッジ データ ワークスペース変数の名前を一意に指定します。[解析後にレポートを自動生成する] を選択します。
[OK] をクリックします。
sldvdemo_autotrans
モデルのシミュレーションを開始して、カバレッジ データを記録します。シミュレーションが終了すると、カバレッジ レポートが開きます。レポートには、ShiftLogic Stateflow チャートで次のカバレッジが達成されたことが示されます。
判定: 87% (27/31)
条件: 67% (8/12)
MCDC: 33% (2/6) conditions reversed the outcome
シミュレーションでは、カバレッジ データは MATLAB® ワークスペース変数
covdata_original_controller
(カバレッジ データを格納するcvtest
オブジェクト) に保存されます。カバレッジ データを MATLAB パス上のファイルに保存します。
cvsave('existingcov',covdata_original_controller);
未達カバレッジのテスト ケースの検出
ShiftLogic チャートの未達カバレッジを検出するため、そのブロックのサブシステム解析を実行します。この手法を使用して、解析をモデルの個別の部分に絞り込みます。
ShiftLogic コントローラーの 100% のカバレッジを達成するには、既存のカバレッジ データを使用するテスト生成解析を実行します。
ShiftLogic ブロックを右クリックし、[Design Verifier] 、 [オプション] を選択します。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [選択] ツリーで、[Design Verifier] ノードを選択します。[解析オプション] の下の [モード] フィールドで
[テスト生成]
を選択します。[Design Verifier] ノードの下で、[テスト生成] を選択します。[既存のカバレッジ データ] の下で、[既存のカバレッジ データで条件が満たされているオブジェクティブを無視する] を選択します。
[カバレッジ データ ファイル] フィールドに、シミュレーションの実行時に記録したカバレッジ データを含むファイルの名前を入力します。
existingcov.cvt
[適用] をクリックして、これらの設定を保存します。
[選択] ツリーで、[Design Verifier] をクリックします。
メインの [Design Verifier] ペインで、[テストの生成] をクリックします。
Stateflow チャートが
ShiftLogic0
という名前の新しいモデルに抽出されます。以前に達成されてexistingcov.cvt
ファイルに記録されたカバレッジ オブジェクティブを無視して、新しいモデルが解析されます。テスト生成解析が完了したら、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 チャートは各タイム ステップで更新されるので、暗黙的なイベント
tick
がfalse
になることはありません。時相イベント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 カバレッジを達成させるテスト オブジェクティブを検出することができます。