Main Content

モデルの解析

この例について

次の節では、モデル例 Cruise Control Test Generation について説明します。この例では、Simulink® Design Verifier™ を使用した、完全なモデル カバレッジを達成するテスト ケースの生成方法を示します。この例を通じて、Simulink Design Verifier でモデルを解析し、結果を解釈する方法を学習します。

モデルを開く

Cruise Control Test Generation モデルを開くには、MATLAB® プロンプトで以下を入力します。

テスト ケースの生成

解析の実行

Cruise Control Test Generation モデルのテスト ケースを生成するには、モデル ウィンドウを開いて Run というラベルの付いたブロックをダブルクリックします。

Simulink Design Verifier がテスト ケースを生成するためにモデルの解析を開始すると、[Simulink Design Verifier の検証結果の概要] ウィンドウが開きます。結果の概要ウィンドウには実行中のログが表示され、解析の進行状況がわかります。

実行中の解析の終了が必要な場合は、[停止] をクリックします。結果を生成するかどうかを尋ねられます。[はい] をクリックすると、その時点で達成された結果に基づいてデータ ファイルが作成されます。結果の概要ウィンドウにデータ ファイルのパス名が表示されます。

データ ファイルは、sldvData という名前の構造体が含まれる MAT ファイルです。この構造体には、解析時に収集および生成されたデータが格納されます。

詳細は、Simulink Design Verifier データ ファイルを参照してください。

解析結果の生成

Simulink Design Verifiersldvdemo_cruise_control モデルの解析を完了すると、[検証結果の概要] ウィンドウにはいくつかのオプションが表示されます。

  • 解析結果をモデル上で強調表示

  • 詳細な解析レポートを生成

  • ハーネス モデルの作成

  • テストをシミュレートしてモデル カバレッジ レポートを生成

メモ

他のモデルを解析する場合、解析の結果によっては、これら 4 つのオプションのサブセットが表示される場合があります。

次節以降では、これらのオプションについて詳しく説明します。

解析結果をモデル上で強調表示

[Simulink Design Verifier の検証結果の概要] ウィンドウで、[解析結果をモデル上で強調表示] をクリックすると、解析結果に基づいてモデルのオブジェクトが 3 色で強調表示されます。

モデルの解析結果を強調表示すると、Simulink Design Verifier 結果インスペクターが開きます。解析結果があるモデルのオブジェクトをクリックすると、結果インスペクターにはそのオブジェクトの結果概要が表示されます。

グリーン: 達成されたオブジェクティブ-  グリーンのアウトラインは、解析によりそのブロックのすべてのオブジェクティブについてテスト ケースが生成されたことを示します。ブロックがサブシステムまたは Stateflow® Atomic サブチャートの場合、グリーンのアウトラインは、子オブジェクトに関連付けられたすべてのオブジェクティブについてのテスト ケースが解析により生成されたことを示します。

たとえば、sldvdemo_cruise_control モデルでは、グリーンのアウトラインは PI コントローラー サブシステムがすべてのテスト オブジェクティブを達成していることを示します。結果インスペクターには、PI コントローラー サブシステムの 2 つの達成されたテスト オブジェクティブがリストされます。

オレンジ: 未判定のオブジェクティブ-  オレンジのアウトラインは、オブジェクティブが達成されるかどうかを特定できなかったことを示します。この状況は次のような場合に発生します。

  • 解析のタイムアウト

  • 次の事象によりテスト ケースが生成されることなくテスト オブジェクティブが達成された場合

    • 自動スタブ エラー

    • 解析エンジンの制限

次の例では、Discrete-Time Integrator ブロックのオブジェクティブのいずれかが達成されるかどうかが決定される前に解析がタイムアウトしています。

レッド: 達成されないオブジェクティブ-  レッドのアウトラインは、解析でテスト ケースを生成できなかったオブジェクティブがいくつかあったことを示します。多くの場合、モデルに到達不可能な設計要素があることが原因です。

次の例では、入力 2 は Switch ブロックの条件を常に満たすため、Switch ブロックは入力 3 の値を通過させることはありません。

詳細な解析レポートを生成

[Simulink Design Verifier の検証結果の概要] ウィンドウで [詳細な解析レポートを生成] をクリックすると、解析の詳細なレポートが保存されて開きます。レポートのパスは次のとおりです。

<current_folder>/sldv_output/...
     sldvdemo_cruise_control/sldvdemo_cruise_control_report.html

HTML レポートには次の章があります。

それぞれのレポートの章の説明は、以下を参照してください。

概要-  目次 で、概要をクリックすると概要の章が表示されます。ここには次の情報が記載されています。

  • モデルの名前

  • 解析のモード (テスト生成、プロパティ証明、設計エラー検出)

  • 解析のステータス

  • 解析の長さ (秒)

  • 達成されたオブジェクティブの数

解析情報-  目次解析情報をクリックすると、解析されたモデルと解析オプションに関する情報が表示されます。

テスト オブジェクティブのステータス-  [目次][テスト オブジェクティブのステータス] をクリックすると、達成されたオブジェクティブが表で示されます。次の図は、Cruise Control Test Generation モデルの、達成されたオブジェクティブのリストの一部です。

オブジェクティブのステータス

Objectives Satisfied の表には、モデルについて次の情報がリストされます。

  • # — オブジェクティブの番号

  • Type — オブジェクティブのタイプ

  • Model Item — オブジェクティブのテスト対象のモデル内要素。このリンクをクリックすると、要素が強調表示された状態でモデルが表示されます。

  • 説明 — オブジェクティブの説明

  • Test Case — オブジェクティブを達成するテスト ケース。このリンクをクリックすると、そのテスト ケースに関する詳細な情報が表示されます。

オブジェクティブ 34 の行で、テスト ケース番号 (7) をクリックすると、レポートの [テスト ケース] の章のテスト ケース 7 に関する詳細情報が表示されます。

テスト ケース 7

この例では、テスト ケース 7 は 1 つのオブジェクティブを達成します。これは、積分結果が Discrete-Time Integrator ブロックの上限 T 以上となるというものです。この表は、0 秒から 0.06 秒まで間の 6 つの信号の値をリストしています。

モデル項目-  目次Model Items をクリックすると、カバレッジ オブジェクティブを定義するモデルの各項目についての詳細な情報が表示されます。この表では、解析の終了時におけるオブジェクティブのステータスが示されます。達成されたオブジェクティブの詳細情報については、表内のリンクをクリックしてください。

モデル項目 - Controller/Switch3

モデル項目 - Controller/Switch2

テスト ケース-  目次[テスト ケース] をクリックすると、生成されたそれぞれのテスト ケースに関する詳細情報が表示されます。ここには次の情報が記載されています。

  • テスト ケースの実行時間の長さ

  • 達成されたオブジェクティブの数

  • 達成されたオブジェクティブに関する詳細情報

  • 入力データ

例として、テスト オブジェクティブのステータスの テスト ケース 7 の節を参照してください。

ハーネス モデルの作成

[Simulink Design Verifier の検証結果の概要] ウィンドウで、[ハーネス モデルの作成] をクリックすると、sldvdemo_cruise_control_harness という名前のハーネス モデルが作成されて開きます。

このハーネス モデルには次のブロックが含まれています。

  • Test Case Explanation ブロックは、生成されたテスト ケースをドキュメント化する DocBlock ブロックです。Test Case Explanation ブロックをダブルクリックすると、テスト ケースが達成されたオブジェクティブについてそれぞれのテスト ケースの説明が表示されます。

  • Test Unit ブロックは、このソフトウェアが解析した元のモデルのコピーを含む Subsystem ブロックです。Test Unit ブロックをダブルクリックしてコンテンツを表示し、これが Cruise Control Test Generation モデルのコピーであることが確認できます。

    メモ

    サブシステムの代わりに Model ブロックを使用して、解析中のモデルを参照するハーネス モデルを構成できます。[コンフィギュレーション パラメーター] ダイアログ ボックスの [Design Verifier]、[結果] ペインで、[解析後に別のハーネス モデルを生成][生成されたハーネス内の入力モデルを参照] を選択します。

  • Inputs ブロックは、生成されたテスト ケース信号を含む Signal Builder ブロックです。Inputs ブロックをダブルクリックすると、[Signal Builder] ダイアログ ボックスが開き、8 つのテスト ケースの信号が表示されます。

  • Size-Type ブロックは、信号を Inputs ブロックから Test Unit ブロックに送信するサブシステムです。このブロックは、信号のサイズおよびデータ型が Test Unit ブロックと一致することを検証します。

[Signal Builder] ダイアログ ボックスには 8 つのテスト ケースが含まれます。

  1. テスト ケース 7 を表示するには、[アクティブ グループ] リストから [テスト ケース 7] を選択します。

    0.01 秒点のテスト ケース 7 は次のとおりです。

    • enable および inc 信号は 1 のまま。

    • brake および dec 信号は 0 のまま。

    • set 信号は 1 から 0 に遷移。

    • speed 信号は 100 から 0 に遷移。

    Signal Builder ブロックでは、信号グループは Test Case Explanation ブロックで記述されたテスト オブジェクティブを達成させます。

  2. Simulink Design Verifier で完全なモデル カバレッジを達成したことを確認するには、すべてのテスト ケースを使用してハーネス モデルのシミュレーションを実行します。[Signal Builder] ダイアログ ボックスで、[すべてを実行しカバレッジを生成] ボタン をクリックします。

    Simulink ソフトウェアによりすべてのテスト ケースがシミュレートされます。Simulink Coverage™ ソフトウェアは、ハーネス モデルのカバレッジ データを収集して、カバレッジ レポートを表示します。レポートの概要には、sldvdemo_cruise_control_harness モデルが 100% のカバレッジを達成したことが示されます。

    概要

Simulate Tests and Produce Model Coverage Report

[Simulink Design Verifier の検証結果の概要] ウィンドウで、[テストをシミュレートしてモデル カバレッジ レポートを生成] をクリックすると、モデルのシミュレーションが実行され、sldvdemo_cruise_control モデルのカバレッジ レポートが生成されます。レポートは、次の名前で保存されます。

<current_folder>/sldv_output/sldvdemo_cruise_control/...
		sldvdemo_cruise_control_report.html

[すべてを実行しカバレッジを生成] をクリックしてハーネス モデルでテストをシミュレートすると、このカバレッジ レポートとモデルそのものに対し生成されたレポートとの間に以下のような差異が見られる場合があります。

  • ハーネス モデル カバレッジ レポートには、追加のタイム ステップが含まれる場合があります。ハーネス モデルのカバレッジを収集する場合、モデルの終了時間は最も長いテスト ケースの終了時間に等しくなります。そのため、より短いテスト ケースのシミュレーションを実行すると、追加のカバレッジを達成できる場合があります。

  • ハーネス モデルの Test Unit サブシステムの循環的複雑度のカバレッジは、ハーネス モデルの構造上、モデル自体のカバレッジと異なる場合があります。

テスト ケースの組み合わせ

より少数のテスト ケースにまとめて結果をレビューする場合は、[テスト スイートの最適化] パラメーターを [LongTestcases] に設定します。[LongTestcases] 最適化手法を使用する場合、解析で生成されるテスト ケースは少なくなりますが、より長く、それぞれが複数のテスト オブジェクティブを達成するものとなります。

sldvdemo_cruise_control モデルを開き、LongTestcases 最適化手法を指定して解析を再実行します。

  1. [Design Verifier] タブの [準備] セクションのモード設定のドロップダウン メニューから、[設定] をクリックします。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスの左側の [選択] ツリーの [Design Verifier] カテゴリで、[テスト生成] を選択します。

  3. [テスト スイートの最適化] パラメーターを [LongTestcases] に設定します。

  4. [適用][OK] をクリックして [コンフィギュレーション パラメーター] ダイアログ ボックスを閉じます。

  5. sldvdemo_cruise_control モデルで、Run というラベルのブロックをダブルクリックします。

  6. 結果の概要ウィンドウで [ハーネス モデルの作成] をクリックします。

    ハーネス モデルの Signal Builder ブロックと Test Case Explanation ブロックには、テスト ケースの生成で以前に作成された 8 つの短いテスト ケースの代わりに、1 つの長いテスト ケースが含まれています。

  7. [すべてを実行しカバレッジを生成] をクリックして、カバレッジを収集します。

    こちらの解析でも、34 のオブジェクティブすべてが達成されています。