Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

時相論理を含むモデルのテスト ケースの拡張

開始テスト ケースの作成

この例では、sldvdemo_sbr_extend_design モデルを使用します。このモデルには、時相論理を使用する Stateflow® チャート SBR が含まれます。Stateflow チャートのシミュレーションが 500 回 実行されると、KEY_OFF 状態から KEY_ON 状態への遷移が発生します。この遷移をテストするには、500 のタイム ステップをもつテスト ケースが必要です。

この例では、テスト ケースの期間中 KEY 入力を 1 に設定して、KEY_ON に遷移させるテスト ケースを作成します。このテスト ケースを使用して、モデルのシミュレーションを実行して KEY_OFF/KEY_ON の遷移のオブジェクティブを達成させます。その後、作成したテスト ケースで既に達成されているオブジェクティブを無視してモデルを解析します。

  1. モデル例を開きます。

    openExample('sldv/DefiningExtendingExistingTestsCasesExample',...
    'supportingFile','sldvdemo_sbr_extend_design');
  2. SBR Stateflow チャートを開いて KEY_OFF/KEY_ON の遷移を表示します。

  3. モデル参照のハーネス モデルを作成します。

    [~, harnessModelFilePath] = ...
        sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);

    ハーネス モデル sldvdemo_sbr_extend_design_harness には、次が含まれます。

    • 元のモデル sldvdemo_sbr_extend_design を参照する Test Unit という名前の Model ブロック。

    • Model ブロックで参照されるモデルへのテスト ケース入力を含む Inputs という名前の Signal Builder ブロック。

      最初、Signal Builder ブロックには既定のテスト ケースのみが含まれ、3 つの入力はすべて 0 に設定されています。

    • テスト ケースを記述する Test Case Explanation という名前の DocBlock ブロック。

      最初、Test Case Explanation ブロックには既定のテスト ケースについてのコンテンツはありません。

  4. sldvmakeharnessharnessModelFilePath 内のハーネス モデル ファイルへのパスを返します。後で使用するために、ハーネス モデル ファイルの名前を harnessModel に抽出します。

    [~, harnessModel] = fileparts(harnessModelFilePath);

KEY_OFF から KEY_ON 状態への遷移を解析するために、500 の タイム ステップで KEY_ON 状態に遷移するテスト ケースを作成します。

  1. ハーネス モデルの [Signal Builder] ダイアログ ボックスを開きます。

  2. [座標軸][時間範囲の変更] を選択します。

  3. Signal Builder の時間範囲は、その出力が明示的に定義される時間の区間を決定します。[合計時間範囲設定] ダイアログ ボックスで、[最大時間] フィールドを 5 秒に設定し、0.01 秒間隔の 500 のタイム ステップを作成します。

  4. この開始テスト ケースの期間中、KEY 入力を 1 に設定し、これにより KEY_ON 状態に遷移させます。Inputs.KEY 信号を選択するには、2 回のクリックが必要です。最初に、信号をクリックすると信号の両端に点が表示されます。

  5. 再度 Inputs.KEY の信号をクリックします。その信号が太くなり、選択された状態になったことが示されます。

  6. [Signal Builder] ダイアログ ボックスの下部の [左ポイント] の下の [Y] に「1」と入力します。

  7. Enter キーを押して、変更を適用します。

    テスト ケースの期間に対して Inputs.KEY 信号が 1 に設定されます。

  8. [Signal Builder] ダイアログ ボックスを閉じます。

開始テスト ケースのログ

次のステップは、作成した開始テスト ケースのログを記録することです。その後の解析の実行時に、そのテスト ケースが達成したオブジェクティブを Simulink® Design Verifier™ が無視するように指定することができます。

関数 sldvlogsignals は、sldvData 構造体を含む MAT ファイルにテスト ケース データを記録します。この構造体には、解析時に収集および生成されたすべてのデータが格納されます。

開始テスト ケースのログは次の手順で記録します。

  1. sldvdemo_sbr_extend_design モデルを参照するハーネス モデルの Model ブロックの名前を保存します。

    [~, modelBlock] = find_mdlrefs(harnessModel, false);
  2. 新しいテスト ケースを使用して Model ブロックで参照されるモデルのシミュレーションを実行し、ワークスペース変数 loggeddata の入力信号をログに記録します。

    loggeddata = sldvlogsignals(modelBlock{1});
  3. existingtestcase.mat という名前の MAT ファイルにログ データを保存します。

    save('existingtestcase.mat', 'loggeddata');

    sldvdemo_sbr_extend_design モデルを解析するときにこのファイルを指定します。

既存テスト ケースの拡張

ここで、sldvdemo_sbr_extend_design モデルを解析して、既に達成されているテスト ケースを解析で拡張するように指定できます。解析ではまず既存テスト ケース データを使用し、SBR Stateflow チャートの KEY_OFF から KEY_ON への遷移のテスト ケースを生成しようとはしません。

開始テスト ケースを指定してモデルを解析します。

  1. モデルを開きます。

    open_system('sldvdemo_sbr_extend_design');

  2. [Design Verifier] タブで、[テスト生成の設定] をクリックします。

  3. [コンフィギュレーション パラメーター] ダイアログ ボックスの [テスト生成] ペインの [既存のテスト ケース] の下で、[既存テスト ケースの拡張] を選択します。

  4. [データ ファイル] フィールドで、ログ データを含む MAT ファイルの名前を入力します。

    existingtestcase.mat
  5. [既存のテスト ケースで条件が満たされているオブジェクティブを無視する] をオフにします。

    このオプションをオフにすると、最終的なテスト スイートに開始テスト ケースが含まれます。完全なテスト スイートにより 100% のモデル カバレッジが達成されることが示されます。

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

  7. sldvdemo_sbr_extend_design モデルを MATLAB® パス上に sldvdemo_sbr_extend_design_test という名前で保存します。

  8. [テストの生成] をクリックします。

    ログ ウィンドウには、最初に開始テスト ケースで達成されたオブジェクティブがリストされます。

    次に開始テスト ケース外で生成されたオブジェクティブがリストされます。

解析結果の検証

この解析で完全なテスト スイートが作成されたことを確認するため、ハーネス モデルを生成して生成されたテスト ケースでモデルをシミュレートできるようにします。

  1. [Design Verifier] タブの [結果の確認] セクションで、[テスト ハーネス モデルの作成] をクリックします。

  2. ハーネス モデル sldvdemo_sbr_extend_design_test_harness で、Inputs という名前の Signal Builder ブロックを開きます。

  3. すべてのテスト ケースを使用してモデルをシミュレートするには、[すべてを実行しカバレッジを生成] ボタン をクリックします。

    シミュレーションが完了すると、モデル カバレッジ レポートが表示されます。

  4. sldvdemo_sbr_extend_design_test モデルのカバレッジ情報を表示して、完全なテスト スイートが 100% のカバレッジを達成していることを確認します。

関連する例

詳細