Main Content

要件に基づくテストの問題を修正

この例では、モデル テスト ダッシュボードを使用してモデル要件およびテストの一般的なトレーサビリティの問題に対処する方法を示します。ダッシュボードはプロジェクト内のテスト アーティファクトを解析し、品質および完全性の測定値に関するメトリクス データをレポートします (トレーサビリティおよびカバレッジなど)。これには、業界認定のソフトウェア開発標準 (ISO 26262、DO-178C など) のガイドラインが反映されています。ダッシュボード ウィジェットでは、要件に基づくテストの進行状況を追跡し、ダッシュボードで強調表示されるギャップを修正できるように、データがまとめられています。ウィジェットをクリックすると詳細情報を含む表が開きます。この表では、対応する標準を満たさないテスト アーティファクトを見つけて修正することができます。

プロジェクト内のテスト アーティファクトのメトリクス収集

ダッシュボードにはモデルのテスト データと、ユニットがプロジェクト内でトレースするアーティファクトが表示されます。この例では、プロジェクトを開いて、アーティファクトのメトリクス データを収集します。

  1. モデルとテスト アーティファクトが含まれるプロジェクトを開きます。この例では、MATLAB® コマンド ウィンドウで「dashboardCCProjectStart('incomplete')」と入力します。

  2. ダッシュボードを開きます。モデル テスト ダッシュボードを開くには、[プロジェクト] タブで [モデル テスト ダッシュボード] をクリックするか、コマンド ラインで「modelTestingDashboard」と入力します。

  3. ダッシュボードの [アーティファクト] パネルでは、ユニット モデルがモデルの階層構造内のそれらを含むコンポーネント モデルの下に整理されています。要件、テスト ケース、テスト結果などのアーティファクトが、トレースするユニットの下に表示されています。ユニット db_DriverSwRequest のメトリクス結果を表示します。[アーティファクト] パネルで、ユニットの名前 [db_DriverSwRequest] をクリックします。最初に db_DriverSwRequest を選択すると、ダッシュボードで未収集のメトリクスのメトリクス結果が収集され、ユニットのデータがウィジェットに取り込まれます。

要件をモデル内の実装にリンク付け

[アーティファクト] パネルの [問題のトレース] フォルダーには、プロジェクト内のユニット モデルまでトレースしないアーティファクトが表示されます。[問題のトレース] フォルダーには、次のためのサブフォルダーが含まれています。

  • 予期せぬ実装リンク[タイプ]Container または [タイプ]Informational の要件に対する、[タイプ]Implements の要件リンク。コンテナー要件と情報要件は、それらが属する要件セットの実装の状態と検証の状態の対象とはならないため、ダッシュボードでは、これらのリンクの [タイプ]Implements と想定されません。要件が実装対象となっていない場合は、リンク タイプを変更できます。たとえば、[タイプ]Informational の要件を、[タイプ]Related to のリンクをもつように変更できます。

  • 未解決のリンクとサポートされていないリンク — 切断された要件リンクまたはダッシュボードでサポートされていない要件リンク。たとえば、モデル ブロックが要件を実装しているが、そのモデル ブロックが削除された場合、要件リンクは未解決になります。要件からデータ ディクショナリ、またはデータ ディクショナリから要件にリンクされている場合、そのリンクはサポートされず、モデル テスト ダッシュボードはそのリンクをトレースしません。モデル テスト ダッシュボードは、一部のアーティファクトおよび一部のリンクのトレーサビリティ解析をサポートしません。ユニットへとトレースすることが想定されているリンクがトレースされない場合は、モデル テスト ダッシュボードでのアーティファクト、リンク、および結果の欠損の解決 (Simulink Check)でトラブルシューティング ソリューションを参照してください。

  • トレースされないテスト — プロジェクト パス上にないモデルまたはサブシステムで実行するテスト。

  • トレースされない結果 — ダッシュボードがテスト ケースまでトレースできなくなった結果。たとえば、テスト ケースから結果が生成されたが、そのテスト ケースが削除された場合、結果はテスト ケースまでトレースできなくなります。

テストのトレーサビリティの問題に対処

[アーティファクト] パネルでユニットの名前をクリックすることで、ユニット "db_DriverSwRequest" のダッシュボードを開きます。ダッシュボードの [テスト ケースの解析] セクションのウィジェットには、ユニットの要件、ユニットのテスト ケース、それらの間のリンクに関するデータが表示されます。ウィジェットは、実装された要件のテストおよびトレーサビリティにギャップがあるかどうかを示します。

要件とテスト ケースのリンク付け

ユニット db_DriverSwRequest[要件にリンクされているテスト] セクションは、一部のテスト ケースでモデル内の要件へのリンクが欠落していることを示します。

欠損リンクに関する詳細情報を確認するには、[要件にリンクされているテスト] セクションで、[リンクされていない] ウィジェットをクリックします。ダッシュボードでそのウィジェットの [Metric Details] が開き、メトリクス値と関連する各アーティファクトへのハイパーリンクの表が示されます。この表には、ユニットに実装されているが、要件へのリンクをもたないテスト ケースが表示されます。要件へのリンクが欠落しているテスト ケースのみを表示するように表がフィルター処理されます。

テスト ケース Detect long decrement は要件にリンクされていません。

  1. テスト マネージャーでテスト ケースを開きます。テーブルの [アーティファクト] 列で、Detect long decrement をクリックします。この例では、このテスト ケースをプロジェクトに既に存在する 3 つの要件にリンクする必要があります。要件がまだ存在しない場合、要件エディターを使用して要件を追加できます。

  2. 要件エディターでソフトウェア要件を開きます。[アーティファクト] パネルで、フォルダー [db_DriverSwRequest]、[機能要件]、[実装済み] を展開し、要件ファイル [db_SoftwareReqs.slreqx] をダブルクリックします。

  3. コンテナー内のソフトウェア要件のうち、Driver Switch Request Handling という概要をもつソフトウェア要件を表示します。[db_SoftwareReqs]、[Driver Switch Request Handling] を展開します。

  4. 複数のソフトウェア要件を選択します。"Ctrl" キーを押しながら Output request modeAvoid repeating commands、および Long Increment/Decrement Switch recognition をクリックします。要件エディターで、これらの要件を選択したままにします。

  5. テスト マネージャーで、テスト ケース Detect long decrement について [要件] セクションを展開します。[追加] ボタンの横にある矢印をクリックして、[選択された要件へのリンク] を選択します。トレーサビリティ リンクは、テスト ケース Detect long decrement が 3 つの要件 Output request modeAvoid repeating commands、および Long Increment/Decrement Switch recognition を検証することを示しています。

  6. ダッシュボードのメトリクス結果には、保存されたアーティファクト ファイルのみが反映されます。テスト スイート db_DriverSwRequest_Tests.mldatx を保存するには、[テスト ブラウザー][db_DriverSwRequest_Tests] を右クリックし、[保存] をクリックします。

ダッシュボード内のメトリクス結果を更新

ダッシュボードでメトリクス結果が古くなったことが検出され、ダッシュボードの上部に警告バナーが表示されます。

  1. 警告バナーの [収集] ボタンをクリックしてメトリクス データを再収集し、テスト ケースと要件の間のトレーサビリティ リンクがダッシュボードに反映されるようにします。

  2. [Model Testing] の結果に戻り、更新後のダッシュボード ウィジェットを確認します。ダッシュボードの上部に、[Metric Details] から [Model Testing] の結果に戻る階層リンクがあります。[db_DriverSwRequest] の階層リンク ボタンをクリックして、ユニットの [Model Testing] の結果に戻ります。

[要件にリンクされているテスト] セクションは、リンクされていないテストが存在しないことを示しています。[テストにリンクされている要件] セクションは、リンクされていない要件が 3 つあることを示します。通常は、こうしたテストのトレーサビリティに関する問題を調査し、テストの追加と要件へのリンク付けによって問題に対処してからテストを実行します。この例では、リンクされていないアーティファクトをそのままにして、テスト実行の次のステップに進みます。

モデルのテストと失敗およびギャップの解析

要件を検証するユニット テストを作成してリンク付けした後で、テストを実行し、モデルの機能が要件を満たしていることを確認します。テスト結果とカバレッジ測定の概要を表示するには、ダッシュボードの [シミュレーション テスト結果の解析] セクション内のウィジェットを使用します。ウィジェットでは、テストの失敗とギャップが表示されます。メトリクス結果を使用して基となるアーティファクトを解析し、問題に対処します。

ユニット テストを実行

テスト マネージャーを使用して、モデルのテスト ケースを実行します。テスト結果をプロジェクト内に保存し、それらをモデル テスト ダッシュボードで確認します。

  1. テスト マネージャーでモデルのユニット テストを開きます。モデル テスト ダッシュボードの [アーティファクト] パネルで、ユニット [db_DriverSwRequest] を展開します。[テスト][ユニット テスト] フォルダーを展開し、テスト ファイル [db_DriverSwRequest_Tests.mldatx] をダブルクリックします。

  2. テスト マネージャーで、[実行] をクリックします。

  3. テスト結果をファイルとしてプロジェクト内に保存します。[テスト] タブの [結果] セクションで、[エクスポート] をクリックします。結果ファイルに名前 (Results1.mldatx) を付けて、そのファイルをプロジェクト ルート フォルダーの下に保存します。

モデル テスト ダッシュボードは結果がエクスポートされたことを検出し、[アーティファクト] パネルを自動的に更新して、ユニットの新しいテスト結果をサブフォルダー [テスト結果]、[ユニット シミュレーション] に含めます。

また、ダッシュボードでメトリクス結果が古くなったことが検出され、ダッシュボードの上部に警告バナーが表示されます。

[古い] アイコン [シミュレーション テスト結果の解析] セクションのウィジェットに表示され、変更が反映されていない古いデータを表示していることが示されます。

警告バナーの [収集] ボタンをクリックしてメトリクス データを再収集し、現在のアーティファクトのデータを使用して古いウィジェットを更新します。プロジェクト内の各ユニットと各コンポーネントのメトリクスを収集する場合、[収集][すべて収集] をクリックします。

テストの失敗およびギャップに対処

ユニット db_DriverSwRequest のダッシュボードの [モデル テストのステータス] セクションは、最新のテスト実行時に 1 つのテストが失敗し、1 つのテストが無効だったことを示しています。

  1. 無効なテストを表示するには、ダッシュボードで [無効] ウィジェットをクリックします。表にモデルの無効なテスト ケースが表示されます。

  2. テスト マネージャーで無効なテストを開きます。テーブル内のテスト アーティファクト Detect long decrement をクリックします。

  3. テストを有効にします。[テスト ブラウザー] で、テスト ケースを右クリックして [有効] をクリックします。

  4. テストを再実行します。[テスト ブラウザー] で、テスト ケースを右クリックして [実行] をクリックし、テスト スイート ファイルを保存します。

  5. 更新後の無効なテスト数を確認します。ダッシュボードで、警告バナーの [収集] ボタンをクリックします。ダッシュボードの [モデル テストのステータス] セクションで報告されている無効なテスト数がゼロになったことに注目してください。

  6. ダッシュボードで失敗したテストを表示します。[db_DriverSwRequest] の階層リンク ボタンをクリックして [Model Testing] の結果に戻り、[失敗] ウィジェットをクリックします。

  7. 失敗したテストをテスト マネージャーで開きます。表内のテスト アーティファクト [Detect set] をクリックします。

  8. テスト マネージャーでテストの失敗について調べます。テストまたはモデルの更新が必要かどうかを判別するには、テスト結果とモデルへのリンクを使用します。この例では、問題を修正するのではなく、階層リンクを使用して [Model Testing] の結果に戻り、テスト カバレッジの調査を続けます。

カバレッジ メトリクスを使用して、実行したテストがモデルの設計を完全に実行したかどうかを確認します。この例では、ダッシュボードの [モデル カバレッジ] セクションは、モデル内の一部の条件がカバーされていなかったことを示しています。ウィジェット内の [判定] バーにカーソルを合わせて、何パーセントの条件カバレッジが達成されたかを確認します。

  1. いずれかの [判定] バーをクリックして、判定カバレッジに関する詳細を表示します。この例では、[達成済み] カバレッジの [判定] バーをクリックします。

  2. 表内で、モデル アーティファクトを展開します。この表には、モデルのテスト ケース結果と、それらを含む結果ファイルが表示されます。この例では、ソース ファイル "Results1.mldatx" へのハイパーリンクをクリックして、結果ファイルをテスト マネージャーで開きます。

  3. 詳細なカバレッジ結果を表示するには、テスト マネージャーを使用してカバレッジのパースペクティブでモデルを開きます。テスト マネージャーの [カバレッジの結果の集計] セクションの [解析されたモデル] 列で、[db_DriverSwRequest] をクリックします。

  4. モデルでのカバレッジの強調表示は、テスト ケースでカバーされなかったポイントを示しています。この例では、未達カバレッジを修正しないでください。プロジェクト内でカバーされていないポイントに関して、それをカバーするテストを追加できます。モデル要素によって実装されている要件を検出するか、要件がない場合は要件を追加できます。その後、新しいテスト ケースを要件にリンク付けできます。ポイントをカバーすべきでない場合は、フィルターを使用して未達カバレッジを正当化できます。

プロジェクト内の失敗およびギャップに対処するようにユニット テストを更新したら、テストを実行し、その結果を保存します。次に、ダッシュボードでメトリクスを収集することで、結果を調べます。

モデル テスト ダッシュボードを使用した要件に基づく反復テスト

多くのアーティファクトおよびトレーサビリティ接続をもつプロジェクトでは、プロジェクト内のファイルに変更がある場合は必ず設計とテスト アーティファクトのステータスを監視できます。アーティファクトの変更後、ダッシュボードを使用してトレース データとメトリクス結果を更新することで、ダウンストリーム テストの影響があるかどうかを確認します。[Metric Details] 表を使用して、影響を受けるアーティファクトを検出して修正します。モデルのテスト品質がプロジェクトの標準を満たすことが表示されるまでダッシュボード ウィジェットを更新することで、進行状況を追跡します。