このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
モデル開発の要件に基づくテスト
この例では、自動操縦サブシステムを要件に対してテストする方法を示します。
この例では、テスト マネージャー、テスト ハーネス、Test Sequence ブロック、および Test Assessment ブロックを使用してサブシステムを要件に対してテストする方法を示します。要件ドキュメントはテスト ケースとテスト ハーネスにリンクされ、verify
ステートメントによってテスト対象コンポーネントが評価されます。
モデルをビルドする際に、テスト ケースを追加してモデルを要件に対して検証できます。後続のユーザーは同じテスト ケースを実行でき、テスト ケースを追加して、100% のカバレッジの達成や生成コードの検証などのさらに詳しい検証の目的を実現できます。
この例では、3 つのシナリオを使用して Roll Reference
サブシステムを要件に対してテストします。Test Sequence ブロックは入力を提供し、Test Assessment ブロックはコンポーネントを評価します。Roll Reference
サブシステムは自動操縦制御システムの 1 つのコンポーネントです。Roll Reference
は航空機のロール制御システムの基準角を制御します。このサブシステムは 1 つの評価に失敗するため、大きい入力角度でのサブシステム出力を制限する設計変更が求められます。
パスと例のファイル
次のように入力して、例で使用するパスとファイル名を保存します。
topModel = 'TestAndVerificationAutopilotExample'; rollModel = 'RollAutopilotMdlRef'; testHarness = 'RollReference_Requirement1_3'; testFile = 'AutopilotTestFile.mldatx'; reqDoc = 'RollAutopilotRequirements.txt';
テスト ファイルとモデルを開く
RollAutopilotMdlRef
モデルを開きます。完全な制御システム TestAndVerificationAutopilotExample
はこのモデルを参照します。
open_system(rollModel)
テスト ファイルをテスト マネージャーで開きます。
tf = sltest.testmanager.load(testFile); sltest.testmanager.view;
要件ドキュメントを開きます。テスト ブラウザーのツリーで "AutopilotTestFile" と "Basic Design Test Cases" を展開し、"Requirement 1.3 test" をクリックします。[Requirement 1.3 test] タブで、[要件] を展開します。いずれかの要件リンクをダブルクリックして要件エディターを開き、要件を確認できます。
ドキュメントの要件 1.3.1 は次のとおりです。ロール維持モードがアクティブ モードになると、子要件に記載されている条件下を除き、ロール維持の基準は航空機の実際のロール角に設定されます。
子要件 1.3.1.1: ロール維持の作動時に実際のロール角がいずれかの方向に 6 度未満となる場合、ロール維持の基準はゼロに設定されます。
子要件 1.3.1.2: ロール維持の作動時に実際のロール角が 30 度を超える場合、ロール維持の基準は実際のロール角と同じ方向に 30 度に設定されます。
子要件 1.3.1.3: 回転ノブがいずれかの方向に 3 度以上と指示している場合、ロール基準はコックピットの回転ノブ コマンド (30 度を上限とする) に設定されます。
テスト ケースでは、要件の通常条件と例外をテストする 3 つのシナリオが作成されます。
要件ドキュメントは、Test Sequence ブロックとテスト ステップにマッピングされる URL を使用して、テスト ハーネスまでトレースします。テスト ハーネスを開き、参照要件 1.3 に関連付けられているコンポーネントを強調表示します。
sltest.harness.open([rollModel '/Roll Reference'],testHarness) rmi('highlightModel','RollReference_Requirement1_3')
Test Sequence ブロック、Test Assessment ブロック、およびテスト対象コンポーネントが要件ドキュメントにリンクされます。[アプリ]、[要件マネージャー] を選択してからテスト ハーネス モデルで [リンクの強調表示] をクリックすることで、要件リンクを強調表示します。ツールストリップの [要件リンクの強調表示の切り替え] をクリックして、Test Sequence エディターでリンクを強調表示することもできます。
テスト シーケンス
Test Sequence ブロックを開きます。
open_system('RollReference_Requirement1_3/Test Sequence')
Test Sequence ブロックは 3 つのシナリオのテスト入力を作成します。
各テストのテスト シーケンスで信号レベルが設定され、自動操縦が作動します。テスト シーケンスで、PhiRef
が最小時間 DurationLimit
の間安定してから次の信号レベルに遷移することが確認されます。最初の 2 つのシナリオについて、テスト シーケンスで EndTest
ローカル変数が 1
に設定され、次のシナリオへの遷移がトリガーされます。
これらのシナリオでは基本的なコンポーネント関数がチェックされますが、100% のカバレッジなどのオブジェクティブが達成されるとは限りません。
テスト評価
Test Assessment ブロックを開きます。
open_system('RollReference_Requirement1_3/Test Assessment')
Test Assessment ブロックは Roll Reference
を評価します。この評価ブロックは、複数のテスト ハーネス間でテスト評価を再利用しやすくする、ライブラリにリンクされたサブシステムです。このブロックには、以下をカバーする verify
ステートメントが含まれています。
Phi
が下限と上限の範囲内で動作する場合はPhiRef
=Phi
であるという要件。Phi < 6
度の場合はPhiRef = 0
であるという要件。Phi > 30
度の場合はPhiRef = 30
であるという要件。TurnKnob
の作動時にTurnKnob >= 3
度の場合はPhiRef = TurnKnob
であるという要件。
サブシステムの検証
テストを実行するには、テスト マネージャーの [テスト ブラウザー] ペインで "Requirement 1.3 Test" を右クリックし、[実行] をクリックします。
シミュレーションにより、テスト マネージャーに verify
ステートメントの結果とシミュレーション出力が返されます。verify_high_pos
ステートメントが失敗します。
テスト マネージャーで [結果とアーティファクト] をクリックします。
結果ツリーで、[verify ステートメント] を展開します。"Simulink: verify_high_pos" をクリックします。ステートメントの失敗時のトレースが表示されます。
ツールストリップの [サブプロット] をクリックし、垂直方向に配置された 2 つのプロットを選択します。[可視化] ペインで下のプロットを選択します。
結果ツリーで、[結果]、"Requirement 1.3 Test"、[Sim 出力] を展開します。
PhiRef
とPhi
を選択します。出力トレースが上のプロットのverify
の結果に揃えられます。Phi
が 30 度を超えたときにPhiRef
も 30 度を超えていることを確認します。
RollReference
を更新して PhiRef
信号を制限します。
テスト ハーネスを閉じます。
以下に示すように、モデルに Saturation ブロックを追加します。
下限を
-30
、上限を30
に設定します。ブロックをその要件にリンクします。要件ブラウザーから、要件 1.1.2 を Saturation ブロックにドラッグします。ブロックにアイコンが表示され、要件が強調表示されます。
テストを再度実行します。verify
ステートメントがパスし、テスト マネージャーの出力から、PhiRef
が 30 度を超えていないことがわかります。
close_system(rollModel,0); close_system(topModel,0); close_system('RollRefAssessLib',0); sltest.testmanager.clear; sltest.testmanager.clearResults; sltest.testmanager.close; clear topModel reqDoc rollModel testHarness testFile harnessLink
参考
要件マネージャー (Requirements Toolbox)
トピック
- 要件へのリンク
- 要件に対するモデルのテストと結果のレポート
- Link Directly to Requirements in Third-Party Applications (Requirements Toolbox)