主要内容

プログラムにより結果からカバレッジの詳細を取得

スクリプトを使用したカバレッジデ,タの解析

この例では,スクリプトを使用してカバレッジデ,タを読み込み,解析し,クエリする方法を説明します。

カバレッジデ,タの読み込み

モデルを読み込み,補助スクリプトsetupCoverageを使用します。このスクリプトは,カバレッジを有効にしたシミュレ,ションシナリオを作成します。これを使用してモデルをシミュレ,トし,カバレッジ結果を含む金宝app仿真软件。SimulationOutputオブジェクトを生成します。

load_system (“slvnvdemo_ratelim_harness”);setupCoverage simOut = sim(covSet);covData = simOut.covData;

カバレッジデ,タオブジェクトからの情報の抽出

decisioninfoを使用して,ブロックパスまたはブロックハンドルからカバレッジ情報を取得します。出力は,単一のモデルオブジェクトの達成された結果と全体の結果を含むベクトルです。

subsysCov = decisioninfo(covData,...'可调速率限制器'
6 . subsysCov = 5

decisioninfoを使用して,達成されたカバレッジの割合を判別します。

百分比cov = 100 * (subsysCov(1)/subsysCov(2))
percentCov = 83.3333

decisioninfoを使用して,应用有限增益と呼ばれる开关ブロックの判定カバレッジデータを抽出するかどうかを指定します。判定と結果を含む構造体が返されます。

[blockCov,desc] = decisioninfo(covData,...'slvnvdemo_ratelim_harness/可调速率限制器/应用有限增益');descDecision = desc.decision;Outcome1 = desc.decision.outcome(1) outcome2 = desc.decision.outcome(2)
outcome1 = struct with fields: text: 'false (out = in3)' executionCount: 0 executedIn: [] isFiltered: 0 isJustified: 0 filterRationale: " outcome1 = struct with fields: text: 'true (out = in1)' executionCount: 101 executedIn: [] isFiltered: 0 isJustified: 0 filterRationale: "

decisioninfo出力から,假の場合のexecutionCountフィ,ルドが0の値であるため,应用有限增益と呼ばれる开关ブロックが假になることはなかったことがわかります。この動作が想定される場合で,かテストでこの場合を実行する意図がなかった場合,slcoverage。过滤器クラスを使用してフィルタ,の規則を追加してこの未達カバレッジを正当化できます。

最初に,フィルタ,対象とするブロック,ンスタンスをクエリします。これは,不完全なカバレッジを受け取った1つのブロックインスタンスをフィルター処理することだけが必要なのであって,そのブロックタイプのすべてのインスタンスをフィルター処理する必要はないためです。次に,slcoverage。BlockSelectorクラスをBlockInstanceセレクタタプと共に使用して,フィルタ処理する1のブロックンスタンスを特定します。

id = get金宝appSimulinkBlockHandle('slvnvdemo_ratelim_harness/可调速率限制器/应用有限增益');sel = slcoverage.BlockSelector(slcoverage.BlockSelectorType.BlockInstance,id);

slcoverage。过滤器クラスおよびslcoverage。FilterRuleクラスを使用して,フィルタ,オブジェクトとフィルタ,の規則を作成します。

filt = slcoverage.Filter;Rule = slcoverage。FilterRule(选取,“边缘案例”, slcoverage.FilterMode.Justify);

addRuleメソッドを使用して,規則をフィルタ,に追加します。次に,新しいフィルタ,ファ,ルを保存メソッドを使用して保存します。

filt.addRule(规则);filt.save (“blfilter”);

カバレッジデ,タにフィルタ,を適用するには,cvdataオブジェクトの过滤器プロパティをフィルタファルの名前に設定します。フィルタ,されたカバレッジデ,タに対してdecisioninfoを使用して,正当化されたオブジェクティブが達成としてカウントされているため,100%の判定カバレッジとなっていることを確認します。

covData。过滤器=“blfilter”;newCov = decisioninfo(covData,...'可调速率限制器'%新冠病毒= 100 *(新冠病毒(1)/新冠病毒(2))
newCov = 100

カバレッジ情報関数

カバレッジデ,タを収集した後,次の関数を使用してcvdataオブジェクトから特定のカバレッジ情報を抽出できます。これらの関数を使用すると,モデル内のブロック,サブシステム,Stateflow®チャトまたはモデル自体にいて指定したカバレッジ情報を取得できます。

cvmodelviewを使用して,金宝appSimulinkモデルでカバレッジの強調表示をオンにできます。cvhtmlを使用して,カバレッジレポ,トを表示することもできます。

これらの関数を使用する例にいては,カバレッジデ,タから詳細な情報を抽出を参照してください。

参考

|||

関連するトピック