Main Content

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

テスト スクリプトへのリンク

このワークフローでは、外向きリンク エディターと API を使用して、要件を MATLAB® スクリプトにリンクします。要件エディターの検証の状態にテスト結果が反映されます。これらの説明は、外部のテスト結果を要件の検証の状態に含めるためのワークフローに従います。詳細については、外部ソースからの結果を検証の状態に含めるを参照してください。

外向きリンク エディターを使用したテスト スクリプトへのリンク

要件エディターで counter_req.slreqx という要件セットを作成し、それを書き込み可能な場所に保存します。この要件セットには要件 ID と説明をもつ子要件があります。要件セットの作成方法の詳細については、Simulink エディターでの要件の処理を参照してください。

Counter.mCounter クラスのテストを実行する、runmytests.m という MATLAB スクリプトがあります。テスト スクリプトには、結果を TAP 形式で results.tap という名前のファイルに書き込むカスタム メソッドが含まれています。テストを実行し、テスト結果が含まれる results.tap ファイルが生成されたと仮定します。テストの結果を counter_req.slreqx の要件にリンクする必要があります。次の手順に従って、runmytests.m スクリプト内で counterStartsAtZero というテスト ケースを使用して検証の状態を作成して確認します。

リンク タイプの作成と登録

matlabroot/toolbox/slrequirements/linktype_examples/linktype_TEMPLATE.m にあるテンプレート ファイルを開きます。次の手順に従います。

  1. 新しい MATLAB ファイルを作成します。

  2. linktype_TEMPLATE の内容を新しいファイルにコピーします。ファイルを linktype_mymscripttap.m として保存します。

  3. linktype_mymscripttap.m の場合

    1. 関数名 linktype_TEMPLATE linktype_mymscripttap.m に置き換えます。

    2. linkType.Label'MScript TAP Results' として設定します。

    3. linkType.Extensions{'.M'} として設定します。

    4. linktype_mymscripttap で使用するために GetResultFcn のコマンドのコメントを解除し、以下を入力します。

       linktype.GetResultFcn = @GetResultFcn;
       .........
       function result = GetResultFcn(link)
          testID = link.destination.id;
          testFile = link.destination.artifact;
          resultFile = getResultFile(testFile);
          
          if ~isempty(resultFile) && isfile(resultFile)
              tapService = slreq.verification.services.TAP();
              result = tapService.getResult(testID, resultFile);
          else
              result.status = slreq.verification.Status.Unknown;
          end
          
       end
       
       function resultfile = getResultFile(testFile)
          resultMap = ["runmytests.m", "results.tap";...
                       "othertests.m", "results2.tap"];
          resultfile = resultMap(resultMap(:,1) == testFile,2);
       end
      GetResultFcn はユーティリティslreq.verification.services.TAPを使用して、検証の結果ファイルを解釈します。詳細については、slreq.verification.services.TAPを参照してください。GetResultFcn の詳細については、リンクとリンク タイプを参照してください。

  4. linktype_mymscripttap.m を保存します。

  5. リンク タイプを登録します。コマンド ラインに次のように入力します。

    rmi register linktype_mymscripttap

    メモ

    コマンドが警告を返す場合、ファイルを登録解除し、手順 5 に再度従わなければなりません。以下を入力して、ファイルを登録解除します。

    rmi unregister linktype_mymscripttap

リンクの作成

次の手順に従って、外向きリンク エディターでリンクを手動で追加します。

  1. 要件エディターを開き、counter_req.slreqx 要件セットで子要件 1.1 を右クリックして、[[外向きリンク] ダイアログを開く] を選択します。

  2. 外向きリンク エディターのダイアログ ボックスの [要件] タブで、[新規] をクリックします。

  3. 以下の詳細を入力してリンクを確立します。

    • 説明: runmytestscounterStartsAtZero

    • ドキュメント タイプ: MScript TAP Results

    • ドキュメント: runmytests.m

    • 場所: counterStartsAtZero

  4. [OK] をクリックします。要件エディターの [リンク] セクションでリンクが強調表示されます。

検証の状態の表示

要件エディターで検証の状態を更新します。要件エディターで要件の検証の状態を表示するには、 [更新] をクリックします。これにより、パスまたは失敗した要件セット全体の検証の状態が示されます。

counterStartsAtZero の要件は完全に検証されています。ここでは、検証の状態は、3 つのテストのうち 1 つにパスしたことを示しています。

API を使用したテスト スクリプトへのリンク

要件エディターで counter_req.slreqx という要件セットを作成し、それを書き込み可能な場所に保存します。この要件セットには要件 ID と説明をもつ子要件があります。要件セットの作成方法の詳細については、Simulink エディターでの要件の処理を参照してください。

Counter.mCounter クラスのテストを実行する runmytests.m という MATLAB スクリプトがあります。テスト スクリプトには、結果を TAP 形式で results.tap という名前のファイルに書き込むカスタム メソッドが含まれています。テストを実行し、テスト結果が含まれる results.tap ファイルが生成されたと仮定します。テストの結果を counter_req.slreqx の要件にリンクする必要があります。次の手順に従って、runmytests.m スクリプト内で counterStartsAtZero というテスト ケースを使用して検証の状態を作成して確認します。

リンク タイプの作成と登録

matlabroot/toolbox/slrequirements/linktype_examples/linktype_TEMPLATE.m にあるテンプレート ファイルを開きます。次の手順に従います。

  1. 新しい MATLAB ファイルを作成します。

  2. linktype_TEMPLATE の内容を新しいファイルにコピーします。ファイルを linktype_mymscripttap.m として保存します。

  3. linktype_mymscripttap.m の場合:

    1. 関数名 linktype_TEMPLATE linktype_mymscripttap.m に置き換えます。

    2. linkType.Label'MScript TAP Results' として設定します。

    3. linkType.Extensions{'.M'} として設定します。

    4. linktype_mymscripttap で使用するために GetResultFcn のコマンドのコメントを解除し、以下を入力します。

       linktype.GetResultFcn = @GetResultFcn;
       .........
       function result = GetResultFcn(link)
          testID = link.destination.id;
          testFile = link.destination.artifact;
          resultFile = getResultFile(testFile);
          
          if ~isempty(resultFile) && isfile(resultFile)
              tapService = slreq.verification.services.TAP();
              result = tapService.getResult(testID, resultFile);
          else
              result.status = slreq.verification.Status.Unknown;
          end
          
       end
       
       function resultfile = getResultFile(testFile)
          resultMap = ["runmytests.m", "results.tap";...
                       "othertests.m", "results2.tap"];
          resultfile = resultMap(resultMap(:,1) == testFile,2);
       end
      GetResultFcn はユーティリティslreq.verification.services.TAPを使用して、検証の結果ファイルを解釈します。詳細については、slreq.verification.services.TAPを参照してください。GetResultFcn の詳細については、リンクとリンク タイプを参照してください。

  4. linktype_mymscripttap.m を保存します。

  5. リンク タイプを登録します。コマンド ラインに次のように入力します。

    rmi register linktype_mymscripttap

    メモ

    コマンドが警告を返す場合、ファイルを登録解除し、手順 5 に再度従わなければなりません。以下を入力して、ファイルを登録解除します。

    rmi unregister linktype_mymscripttap

リンクの作成

リンクを作成するには次の手順に従います。

  1. MATLAB コマンド プロンプトで、次を入力します。

    externalSource.id = 'counterStartsAtZero';
    externalSource.artifact = 'runmytests.m';
    externalSource.domain = 'linktype_mymscripttap';

  2. 以下を入力して、リンクに関連する要件を見つけます。

    requirement = reqSet.find('Type', 'Requirement', 'SID', 2);

  3. 以下を入力してリンクを作成します。

    link = slreq.createLink(requirement, externalSource);
    これにより、要件 SID のテスト ケース counterStartsAtZero としてリンクが作成されます。要件エディターで、リンクが [リンク][確認者] セクションに表示されます。

検証の状態の表示

検証の状態を更新します。MATLAB コマンド プロンプトで、次を入力します。

reqSet.updateVerificationStatus
以下を入力して、要件の検証の状態を取得します。
status = reqSet.getVerificationStatus
これにより、要件セット内のどの要件がパスまたは失敗したかが示されます。要件エディターで要件の検証の状態を表示するには、[更新] ボタンをクリックします。

counterStartsAtZero の要件は完全に検証されています。ここでは、検証の状態は、3 つのテストのうち 1 つにパスしたことを示しています。

MATLAB ユニット テスト ケースからの結果の統合

テスト スクリプトにリンクすることで、MATLAB ユニット テスト ケースの結果を統合することもできます。テストは、JUnit 出力を生成する XML プラグインを用いるカスタマイズされたテスト ランナーを使用して実行されます。XMLPlugin クラスは、テスト結果を XML ファイルに書き込むプラグインを作成します。詳細については、matlab.unittest.plugins.XMLPlugin.producingJUnitFormatを参照してください。

テスト スクリプトを使用する場合と同じ方法でドメインを登録し、リンクを作成できます。一連の要件に関する検証の状態が Simulink® Requirements™ エディターに示されます。

関連するトピック