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');