メインコンテンツ

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

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

開始テスト ケースの作成

この例では、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 の遷移を表示します。

    SBR Stateflow chart showing KEY_OFF and KEY_ON.

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

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

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

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

      Model block named Test Unit with Inputs as input and SeatBeltIcon as output.

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

      Signal Editor block.

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

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

      A DocBlock named Test Case Explanation.

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

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

    [~, harnessModel] = fileparts(harnessModelFilePath);

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

開始テスト ケースのログ

次のステップは、作成した開始テスト ケースのログを記録することです。その後の解析の実行時に、そのテスト ケースが達成したオブジェクティブを 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. [テストの生成] をクリックします。

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

    Results analysis window for test case generation.

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

解析結果の検証

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

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

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

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

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

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

    Coverage information for the model showing 100% coverage.

参考

トピック