Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コード ブロックと Simulink ブロックをもつモデルのカバレッジ

この例では、コード ブロックと他の Simulink® ブロックの組み合わせを含むモデルのカバレッジを記録します。

カバレッジを記録するためのモデルの設定

  1. モデルを開きます。

    open_system('ex_cc_cruise_control_doublepress_sfun');

    このモデルは、テスト ケースと、Signal Builder ブロックからの入力信号で構成されるクルーズ コントロール システムです。Signal Builder からの信号は Stateflow® チャートである ComputeTargetSpeed への入力として機能します。このチャートはクルーズ コントロール システムの運用や解除を行い、ターゲット速度 tspeed を設定します。

  2. Simulink エディターの [モデル化] タブで [モデル設定] を選択します。コード カバレッジのオプションを設定する前に、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成] ペインで、[ターゲットの選択] メニューの [システム ターゲット ファイル][ert.tlc] に設定します。[コード生成] ペインの [検証] タブに移動します。[SIL または PIL のコード カバレッジ] タブから、コード カバレッジ ツールとして [なし (Simulink Coverage を使用)] を選択します。

  3. [カバレッジ] ペインで、シミュレーション中に計算されるカバレッジのオプションを設定します。

    1. [カバレッジ解析を有効にする] を選択します。

    2. [解析に含める] セクションで、[C/C++ S-Function] が選択されていることを確認します。

    3. [カバレッジ メトリクス] セクションで、[構造カバレッジ レベル] として [修正条件判定カバレッジ (MCDC)] を選択します。[適用] をクリックして変更を適用します。

  4. RejectDoublePress S-Function Builder ブロックを開きます。[ビルド情報] タブの [ビルド オプション] で、[カバレッジのサポートを有効にする] を選択します。S-Function をビルドするには、[ビルド] をクリックします。

    メモ

    S-Function をビルドするには、コンパイラがインストールされていなければなりません。さまざまなプラットフォームでサポートされているコンパイラの詳細については、Supported and Compatible Compilers を参照してください。

カバレッジの記録

  1. Signal Builder ブロックを開きます。

    open_system('ex_cc_cruise_control_doublepress_sfun/Signal Builder');
  2. Signal Builder は、それぞれが 5 つの信号からなる 8 つの信号グループで構成されています。この例では、すべての信号グループをシミュレートして、カバレッジを記録します。 [すべてを実行しカバレッジを生成] をクリックして、カバレッジの記録を開始します。シミュレーションが終了するとカバレッジの結果エクスプローラーが開き、最新のカバレッジ解析の結果が表示されます。モデル内のブロックは、各ブロックにより達成されたカバレッジのレベルに応じて、異なる色で強調表示されます。

カバレッジ レポートの生成による結果の確認

カバレッジの結果エクスプローラーには、カバレッジの結果を表示しレポートするためのいくつかのオプションがあります。左側のペインの [現在の累積データ] タブで、Not_Engaged_with_Enable グループを選択します。カバレッジの結果エクスプローラーの最下部にある [レポートの生成] リンクをクリックし、組み込みの MATLAB® Web ブラウザーで HTML カバレッジ レポートを生成します。カバレッジ レポートには、Simulink モデル ブロックのモデル カバレッジとコード ブロックのコード カバレッジが一覧表示されます。

カバレッジ レポートを下にスクロールして S-Function ブロックのカバレッジ メトリクスを表示します。[詳細レポート] リンクをクリックすると、S-Function ブロックのコード カバレッジ レポートが開きます。S-Function ブロックのコード カバレッジ レポートの詳細については、S-Function ブロック内のカスタム C/C++ コードのカバレッジ結果の参照を参照してください。

未達カバレッジの正当化

この例では、カバレッジ フィルターを作成することにより、1 つの入力信号グループのカバレッジを正当化します。カバレッジ レポートの生成による結果の確認で作成された S-Function ブロックのコード カバレッジ レポートで、判定/条件 2.1 !(CoastSetSwIn[0] && AccelResSwIn[0]) まで下にスクロールします。この条件が現在のテスト ケースで False になることはありません。したがって、この条件をカバレッジ解析で正当化することができます。

  1. この条件の詳細結果にある [正当化または排除] リンクをクリックします。カバレッジの結果エクスプローラーの [フィルター] タブが開き、この遷移をフィルター処理する規則が追加されます。この規則の [モード][正当化済み] に変更し、[根拠] に「式が false にならない」などの説明を入力します。[適用] をクリックして変更を適用します。

  2. [適用] をクリックすると、[レポートの生成] リンクが利用可能になります。リンクをクリックして、更新されたカバレッジ フィルターでレポートを生成します。RejectDoublePress S-Function ブロックの新しいコード カバレッジ レポートでは、除外された条件が [カバレッジ解析からフィルター処理されたオブジェクト] に一覧表示されます。条件 !(CoastSetSwIn[0] && AccelResSwIn[0]) の詳細結果には、この条件の未達カバレッジが正当化されたことが示されます。正当化されたオブジェクトは、カバレッジ率をレポートする際に達成されたものとして扱われ、カバレッジ概要に薄い青で表示されます。

カバレッジ フィルターの詳細については、カバレッジのフィルターを参照してください。

参考

| |