再利用可能なサブシステムの累積カバレッジの取得
この例では、再利用可能なサブシステムまたは再利用可能な Stateflow™ チャートをもつモデルの累積カバレッジ結果を作成および表示する方法を説明します。
Simulink® Coverage™ は、まったく同じに構成された次のものについて、複数のインスタンスの累積カバレッジを提供します。
サブシステム
チャートやライブラリにリンクされたサブチャートなどの Stateflow オブジェクト
累積カバレッジを取得するには、プログラムによって個別のカバレッジ結果を加算するか、[実行] ボタンを使用してモデルを複数回シミュレートします。個々のカバレッジ結果を追加することで、モデルおよびテスト ハーネス全体の複数のインスタンスの累積カバレッジ結果を取得できます。累積カバレッジの詳細については、累積カバレッジ データを参照してください。
モデル例を開く
slvnvdemo_cv_mutual_exclusion
モデルを開きます。
modelName = "slvnvdemo_cv_mutual_exclusion";
open_system(modelName);
slvnvdemo_cv_mutual_exclusion
モデルには、再利用可能なサブシステムの 2 つのインスタンス Subsystem 1
および Subsystem 2
があります。
判定カバレッジの解析
モデルの Simulink.SimulationInput
オブジェクトを作成します。
simIn = Simulink.SimulationInput(modelName);
判定カバレッジ解析を有効にします。
simIn = setModelParameter(simIn,"CovEnable","on"); simIn = setModelParameter(simIn,"CovMetricStructuralLevel","Decision");
CovScope
パラメーターを使用してシステム全体のカバレッジを有効にします。
simIn = setModelParameter(simIn,"CovScope","EntireSystem");
CovSaveSingleToWorkspaceVar
パラメーターを有効にし、カバレッジ データ オブジェクトの名前を covData
に設定します。
simIn = setModelParameter(simIn,"CovSaveSingleToWorkspaceVar","on"); simIn = setModelParameter(simIn,"CovSaveName","covData");
sim
への入力として covInput
を使用してモデルをシミュレートします。シミュレーション出力オブジェクトでは、CovSaveName
パラメーターと同じ名前をもつプロパティにカバレッジ データが含まれます。この例では、covData
を使用します。
simOut = sim(simIn); covData = simOut.covData;
サブシステム カバレッジ結果の抽出および表示
cvdata.extract
メソッドを使用して Subsystem 1
のカバレッジ データを抽出します。次に、cvhtml
を使用して Subsystem 1
の HTML レポートを作成します。
covDataSubsys1 = extract(covData,modelName+"/Subsystem 1"); cvhtml("subsystem1",covDataSubsys1);
レポートには、Subsystem 1
の判定カバレッジが 50% であることが示されます。enable logical value
の true
条件が達成されていません。
Subsystem 2
のカバレッジ データの抽出および表示
covDataSubsys2 = extract(covData,modelName+"/Subsystem 2"); cvhtml("subsystem1",covDataSubsys2);
レポートには、Subsystem 2
の判定カバレッジが 50% であることが示されます。enable logical value
の false
条件が達成されていません。
集計されたサブシステム カバレッジ レポートの生成
+
演算子を使用して、2 つのシミュレーションのカバレッジ結果を結合します。
cumulativeCovData = covDataSubsys1 + covDataSubsys2; % Create an HTML report for the cumulative decision coverage of |Subsystem % 1| and |Subsystem 2|. cvhtml('combinedData',cumulativeCovData);
2 つの異なる判定結果がサブシステムの別々のインスタンスで達成されていますが、集計されたレポートでは 2 つのシミュレーションからのデータが結合され、100% の判定カバレッジがレポートされます。
extract
を使用する前に、これらの結果を元のカバレッジ データと比較します。
cvhtml('originalSystem',covData);
システム解析のカバレッジ レポートでは Subsystem 1
と Subsystem 2
が独立して表示されるため、システムに対して 50% の判定カバレッジがレポートされ、合計 4 つの判定結果のうち 2 つが達成されています。システム全体を解析した場合、カバレッジ レポートでは同一のシステムまたは Stateflow チャートの複数のインスタンスを調べません。同一のサブシステムのカバレッジ データを結合する場合は、手動で行う必要があります。
あるいは、Simulink Test™ を使用してユニットレベルのカバレッジ データをシステム レベルに集計できます。ユニットレベルのカバレッジ データの最上位モデル カバレッジへの集計を参照してください。
参考
cvhtml
| sim
| Simulink.SimulationInput
| setModelParameter