参照モデルの未達カバレッジの達成
フル カバレッジを達成しない参照モデルをシミュレートする場合は、Simulink® Design Verifier™ を使用して、フル カバレッジを達成するテスト ケースを生成できます。次の 2 つの方法があります。
プログラムによる未達カバレッジの達成: テスト生成解析のための API を使用して参照モデルのテスト ケースを生成します。
カバレッジの段階的な拡大: 未達カバレッジ解析機能を使用して、テスト ハーネス モデルのテスト ケースを生成します。
参照モデルの未達カバレッジをプログラムにより達成
このモデル例では、フル カバレッジが達成されない参照モデルを使用します。参照モデルでテスト生成解析を実行し、それを前に記録したカバレッジ データと組み合わせると、その参照モデルの 100% のカバレッジを達成できます。
モデル例のカバレッジ データの記録
モデル例をシミュレートします。条件カバレッジ、判定カバレッジおよび MCDC カバレッジを記録します。
モデル参照によるコンポーネントベースのモデル化のモデル例
sldemo_mdlref_basic
を開きます。openExample('sldemo_mdlref_basic');
Model ブロック CounterA、CounterB および CounterC は、モデル
sldemo_mdlref_counter
を参照します。[アプリ] タブで、[アプリ] セクションの右側にある矢印をクリックします。
[モデルの検証とテスト] の下で [カバレッジ アナライザー] をクリックします。
[カバレッジ] タブで、[設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [カバレッジ] ペインで、オプションを次のように設定します。
[カバレッジ解析を有効にする] を選択します。
[参照モデル] を選択します。
[モデルを選択] をクリックします。[カバレッジ解析対象のモデルを選択] ダイアログ ボックスで、参照モデル
sldemo_mdlref_counter
のチェック ボックスをオンにします。[OK] をクリックします。CounterA と CounterB に対応する
sldemo_mdlref_counter
のチェック ボックスが表示されます。参照モデル CounterC のシミュレーション モードは[アクセラレータ]
であるため、CounterC に対するカバレッジは有効になっていません。シミュレーション時に記録するカバレッジのタイプを指定します。[カバレッジ メトリクス] の下で [MCDC] を選択します。
[コンフィギュレーション パラメーター] の [カバレッジ] 、 [結果] ペインで、以下のオプションを設定します。
[ワークスペース変数の最後の実行を保存] を選択して、MATLAB® ワークスペースの変数で実行された最新のシミュレーションから収集されたカバレッジ データを保存します。
[解析後にレポートを自動生成する] を選択して、シミュレーションでカバレッジ レポートを作成することを指定します。
[cvdata オブジェクト名] フィールドに「
covdata_original
」と入力してカバレッジ データ ワークスペース変数の名前を一意に指定します。
[OK] をクリックします。
カバレッジ データを記録するには、
sldemo_mdlref_basic
モデルのシミュレーションを開始します。シミュレーションが終了すると、カバレッジ レポートが開きます。レポートには、参照モデル
sldemo_mdlref_counter
で次のカバレッジが達成されたことが示されます。判定: 25%
条件: 50%
MCDC: 0%
シミュレーションでは、カバレッジ データは MATLAB ワークスペース変数
covdata_original
(カバレッジ データを格納するcvdata
オブジェクト) に保存されます。カバレッジ データを MATLAB パス上のファイルに保存します。
cvsave('existingcov',covdata_original);
この例は引き続き使用しますのでモデルは開いたままにしておきます。
未達カバレッジのテスト ケースの検索
sldemo_mdlref_counter
モデルの 100% のカバレッジを達成するには、既存のカバレッジ データを使用するテスト生成解析を実行します。
参照モデルを開きます。コマンド ラインに次のように入力します。
open_system('sldemo_mdlref_counter');
sldvoptions
オブジェクトを作成します。opts = sldvoptions;
sldvoptions
オブジェクトを作成するときは、以下を指定します。達成されたカバレッジ データは解析で無視すること
達成されたカバレッジ データを含むファイルの名前 (
existingcov.cvt
)
以下のコマンドを入力して、それぞれのオプションを指定します。
opts.IgnoreCovSatisfied = 'on'; opts.CoverageDataFile = 'existingcov.cvt';
指定されたオプションを使用して参照モデル
sldemo_mdlref_counter
を解析します。[status, fileNames] = sldvrun('sldemo_mdlref_counter',opts,true);
Simulink Design Verifier 解析では、7 つのオブジェクティブが達成され、参照モデルに 1 つのテスト ケースが作成されます。
次の手順では、この解析で作成したテスト ケースを使用して、参照モデル sldemo_mdlref_counter
のシミュレーションを実行します。
未達カバレッジの達成
参照モデル sldemo_mdlref_counter
の未達カバレッジを達成するには、Simulink Design Verifier 解析から得られたテスト ケースを使用してモデルのシミュレーションを実行します。
参照モデルを開きます。コマンド ラインに次のように入力します。
open_system('sldemo_mdlref_counter');
シミュレーション用に
cvtest
オブジェクトを作成して、記録対象として判定カバレッジ、条件カバレッジおよび MCDC カバレッジを指定します。cvt = cvtest('sldemo_mdlref_counter'); cvt.settings.decision = 1; cvt.settings.condition = 1; cvt.settings.mcdc = 1;
カバレッジの記録の実行を指定し、
cvtest
オブジェクトの名前を設定します。runOpts = sldvruntestopts; runOpts.coverageEnabled = true; runOpts.coverageSetting = cvt;
fileNames.DataFile
で定義されたcvtest
オブジェクトcvt
およびテスト ケースを使用してモデルのシミュレーションを実行します。記録されたカバレッジ データをワークスペース変数covdata_missing
に保存します。[~, covdata_missing] = sldvruntest('sldemo_mdlref_counter', fileNames.DataFile, runOpts);
完全なモデル カバレッジの検証
最上位モデル sldemo_mdlref_basic
のシミュレーションでのカバレッジ データは、ワークスペース変数 covdata_original
に保存されています。最上位モデルからのカバレッジ データと参照モデル sldemo_mdlref_counter
からの未達カバレッジ データが連結しているレポートを作成するには、次のコマンドを入力します。
cvhtml('Coverage Summary', covdata_original, covdata_missing);
レポートには、100% の判定、条件および MCDC のカバレッジが、参照モデルを解析し、その結果を使用してカバレッジを記録することで達成できていることが示されます。
テスト ハーネスでの参照モデルに対するカバレッジの拡大
生成されたテスト ハーネス モデルに対するフル カバレッジを段階的に達成できます。この例ではまず、フル カバレッジを達成しないテスト ハーネス モデルを生成する方法を説明します。次に、テスト ハーネス モデルで未達カバレッジ解析を実行して 100% カバレッジのテスト ケースを生成する方法を説明します。
メモ
このアプローチは、入力モデルを参照する Simulink Design Verifier によって生成されるテスト ハーネス モデルのみをサポートします。テスト ユニットが最上位モデルからコピーされている場合、[Design Verifier] アプリはテスト ハーネス モデルには使用できません。詳細については、生成されたハーネス内の入力モデルを参照を参照してください。
テスト ハーネス モデルの生成とカバレッジ データの記録
sldemo_mdlref_counter
モデルのフル カバレッジを達成するには、Simulink Design Verifier で生成されたハーネス モデルで未達カバレッジの解析を実行します。
モデル例を開きます。
open_system('sldemo_mdlref_counter');
参照モデル
sldemo_mdlref_counter
に対してハーネス モデルを作成します。[savedHarnessFilePath] = sldvmakeharness('sldemo_mdlref_counter');
ハーネス モデルの詳細については、Simulink Design Verifier ハーネス モデルの管理を参照してください。
ハーネス モデル
sldemo_mdlref_counter_harness
では、参照モデルsldemo_mdlref_counter
とハーネス モデルsldemo_mdlref_counter_harness
のパラメーター設定が同じになるよう、[形式] パラメーターを[データセット]
にしなければなりません。詳細については、モデル コンフィギュレーション パラメーター: Data Import/Exportを参照してください。sldemo_mdlref_counter_harness
モデルのシミュレーションを実行して、ハーネス モデルのテスト ケースで達成されたカバレッジを記録します。シミュレーションが終了すると、カバレッジ レポートが表示されます。レポートには、sldemo_mdlref_counter
で次のカバレッジが達成されたことが示されます。
未達カバレッジのテスト ケースの生成
ハーネス モデルを開きます。
open_system('sldemo_mdlref_counter_harness');
未達カバレッジ用のテスト ケースを生成するには、[Design Verifier] タブで [未達カバレッジの追加] をクリックします。新しく追加されたテストの数を示す通知が表示されます。
[Signal Builder] ダイアログ ボックスでは、既存の [テスト ケース 1] に [未達カバレッジ テスト ケース 1] が追加されて表示されます。
[Signal Builder] ダイアログ ボックスで、[すべて実行]
をクリックします。すべてのテスト ケースを使用してハーネス モデルがシミュレートされ、モデル カバレッジ情報が収集されてカバレッジ レポートが表示されます。カバレッジ レポートは、未達カバレッジ解析が
sldemo_mdlref_counter
に対して 100% のカバレッジを記録していることを示します。
Simulink Design Verifier の解析オプションの更新
ハーネス モデルを開きます。
open_system('sldemo_mdlref_counter_harness');
[Design Verifier] タブで、[テスト生成の設定] をクリックします。参照モデル
sldemo_mdlref_counter
の [コンフィギュレーション パラメーター] ダイアログ ボックスが開きます。Design Verifier のオプションを未達カバレッジ解析用に設定できます。詳細については、[コンフィギュレーション パラメーター] ダイアログ ボックス内のオプションを参照してください。
未達カバレッジ解析のアクティブな結果の表示
参照モデルを開きます。
open_system('sldemo_mdlref_counter');
[Design Verifier] タブの [結果の確認] セクションで、[以前の結果の読み込み] をクリックします。以前に生成したデータ フィルを参照し、[開く] をクリックします。
未達カバレッジのテスト ケースに関するアクティブな結果を表示するには、[検証結果の概要] をクリックします。[検証結果の概要] ウィンドウが開き、未達カバレッジ解析結果が表示されます。アクティブな結果の詳細については、解析結果のレビューを参照してください。未達カバレッジ テスト ケース データは、
sldvData
という構造体を含む MAT ファイルに保存されます。詳細については、sldvData 構造体のコンテンツを参照してください。
制限
未達カバレッジ解析は、ユーザー インターフェイス ベースのワークフローです。コマンド ライン関数は未達カバレッジ解析には使用できません。
未達カバレッジ解析のワークフローでは、パラメーター値の制約はサポートされていません。詳細については、パラメーター テーブルの使用を参照してください。