メインコンテンツ

段階的なテスト生成のためのモデル入力の分割

R2026b

Simulink® Design Verifier™ Test Condition ブロックを使用して、モデルの入力値を制約できます。

他の Simulink パラメーター同様、制約値は共通のワークスペース変数を参照することで複数のブロック間で共有でき、また、制約値は MATLAB® コマンドを使用して初期化できます。目的速度、測定速度、平均速度など、速度に関する入力が複数ある場合、それらのすべてを同じ値のセットに制約することを選択できます。

MATLAB の熟練プログラマ向けの高度な手法として、Simulink Design Verifier のパラメーター化された制約および連続実行を使用して、段階的テスト生成の手法の実装が可能です。

  1. モデルの入力のいくつかは定数のままにし、いくつかは Test Condition ブロックを使用して定数のセットに制約して、またいくつかは任意の値をもてるように、モデルの入力を分割します。

  2. テスト ケースを生成し、それらのテスト ケースを実行してモデル カバレッジを収集します。

  3. 新しい値を選択し、これらの新しい値の入力を分割します。

  4. 関数 sldvgencov と現在のテスト カバレッジを使用して、未達カバレッジのテスト ケースを生成します。

    メモ

    既存のテスト スイートを拡張して未達モデル カバレッジを達成する例を表示するには、MATLAB コマンド ウィンドウのコマンド プロンプトで次を入力します。

    openExample('sldv/ExtendingAnExistingTestSuiteExample');

  5. 目的のカバレッジを達成するまで、手順 3 と 4 を繰り返します。

解析の実行時にさらに単純化できるようにモデルの入力を分割します。相互に排他的な 3 つの有効なサブシステムをもつ次のモデルを考えます。

  • ノーマル モード

  • シャットダウン モード

  • 故障モード

A Simulink model showing a mode-based signal routing system. The model has eight input ports on the left labeled mode, In2, In3, In1, In4, In5, In6, and In7. The 'mode' input is connected to three equality blocks labeled '== 1', '== 2', and '== 3'. Each equality block is linked to a corresponding subsystem: 'Normal Mode', 'Shutdown Mode', and 'Failure Mode'. Each subsystem receives three inputs and produces one output labeled as Out1. The outputs from the three subsystems are merged in a block labeled 'Merge', which produces a single output on the right labeled Out1. The routing of signals to the subsystems depends on the value of the 'mode' input, directing the appropriate input signals through the corresponding mode subsystem before merging the result.

解析の実行前に最初の入力を定数値に制約し、それぞれのサブシステムについて段階的にテスト ケースを生成できます。このように、それぞれのサブシステムに対するテスト ケースを作成することで、ソフトウェアは他の 2 つのサブシステムの複雑度を無視します。