Main Content

既存テスト スイートの拡張

この例では、Simulink® Design Verifier™ を使用して既存のテスト スイートを拡張し、未達モデル カバレッジを取得する方法を示します。

モデル例を解析して、フル カバレッジを達成するテスト スイートを生成します。次に、モデルを変更し、テスト ケースでフル カバレッジが達成されないようにします。最後に、Simulink® Design Verifier™ を使用して、変更したモデルを解析し、未達カバレッジを取得します。

初期テスト スイートの生成

sldvdemo_cruise_controlモデルを解析し、フル モデル カバレッジを達成するテスト スイートを生成します。モデルを解析してモデル カバレッジを提供するテスト ケースを生成するには、関数sldvrunを使用します。sldvoptionsで設計検証パラメーターを設定します。

open_system'sldvdemo_cruise_control'; opts = sldvoptions; opts.Mode ='TestGeneration'; opts.ModelCoverageObjectives ='MCDC'; opts.SaveHarnessModel ='off'; opts.SaveReport ='off'; [ status, files ] = sldvrun('sldvdemo_cruise_control', opts, true);

テスト生成解析結果が [Simulink Design Verifier の検証結果の概要] ウィンドウに表示されます。

close_system('sldvdemo_cruise_control',0);

フル カバレッジの検証

関数sldvruntestは、既存のテスト スイートを使用してモデルをシミュレートします。関数cvhtmlが生成するカバレッジ レポートは、sldvdemo_cruise_controlモデルの初期カバレッジを示します。

open_system'sldvdemo_cruise_control'; [ outData, initialCov ] = sldvruntest('sldvdemo_cruise_control', files.DataFile, [], true); cvhtml('Initial coverage',initialCov); close_system('sldvdemo_cruise_control',0);

モデルの変更

変更したsldvdemo_cruise_control_modモデルを読み込みます。コントローラーのターゲット速度値は、Saturationブロックを使用して 70 に制限されています。

load_system“sldvdemo_cruise_control_mod”; load_system'sldvdemo_cruise_control_mod/Controller';

既存テスト スイートが実現するカバレッジの測定

関数sldvruntestは、既存のテスト スイートおよびsldvdemo_cruise_controlモデルと同じ入力を使用して、変更したsldvdemo_cruise_control_modモデルをシミュレートします。関数cvhtmlが生成するカバレッジ レポートは、変更したsldvdemo_cruise_control_modモデルがフル カバレッジを達成しないことを示します。

[ outData, startCov ] = sldvruntest(“sldvdemo_cruise_control_mod”, files.DataFile, [], true); cvhtml('Coverage with the original testsuite',startCov);

既存テスト スイートの拡張

フル モデル カバレッジを達成するために、関数sldvgencovはモデルを解析し、既存のテスト スイートを拡張します。

[ status, covData, files ] = sldvgencov(“sldvdemo_cruise_control_mod”, opts, true, startCov);

フル カバレッジの検証

新しいテスト スイートが、変更したsldvdemo_cruise_control_modモデルのフル カバレッジを達成することを確認します。関数sldvruntestは、拡張されたテスト スイートを使用して、変更したモデルをシミュレートします。cvhtmlレポートに、sldvdemo_cruise_control_modモデルによって達成された総カバレッジが示されます。

[ additionalOut, additionalCov ] = sldvruntest(“sldvdemo_cruise_control_mod”, files.DataFile, [], true); totalCov = startCov + additionalCov; cvhtml('With additional coverage',totalCov);

例を完了するには、モデルを閉じます。

close_system(“sldvdemo_cruise_control_mod”);