時相論理を含むモデルのテスト ケースの拡張
開始テスト ケースの作成
この例では、sldvdemo_sbr_extend_design
モデルを使用します。このモデルには、時相論理を使用する Stateflow® チャート SBR
が含まれます。Stateflow チャートのシミュレーションが 500 回 実行されると、KEY_OFF
状態から KEY_ON
状態への遷移が発生します。この遷移をテストするには、500 のタイム ステップをもつテスト ケースが必要です。
この例では、テスト ケースの期間中 KEY
入力を 1
に設定して、KEY_ON
に遷移させるテスト ケースを作成します。このテスト ケースを使用して、モデルのシミュレーションを実行して KEY_OFF/KEY_ON
の遷移のオブジェクティブを達成させます。その後、作成したテスト ケースで既に達成されているオブジェクティブを無視してモデルを解析します。
モデル例を開きます。
SBR
Stateflow チャートを開いてKEY_OFF
/KEY_ON
の遷移を表示します。モデル参照のハーネス モデルを作成します。
[~, harnessModelFilePath] = ... sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);
ハーネス モデル
sldvdemo_sbr_extend_design_harness
には、次が含まれます。元のモデル
sldvdemo_sbr_extend_design
を参照する Test Unit という名前の Model ブロック。Model ブロックで参照されるモデルへのテスト ケース入力を含む Inputs という名前の Signal Builder ブロック。
最初、Signal Builder ブロックには既定のテスト ケースのみが含まれ、3 つの入力はすべて
0
に設定されています。テスト ケースを記述する Test Case Explanation という名前の DocBlock ブロック。
最初、Test Case Explanation ブロックには既定のテスト ケースについてのコンテンツはありません。
sldvmakeharness
はharnessModelFilePath
内のハーネス モデル ファイルへのパスを返します。後で使用するために、ハーネス モデル ファイルの名前をharnessModel
に抽出します。[~, harnessModel] = fileparts(harnessModelFilePath);
KEY_OFF
から KEY_ON
状態への遷移を解析するために、500 の タイム ステップで KEY_ON
状態に遷移するテスト ケースを作成します。
ハーネス モデルの [Signal Builder] ダイアログ ボックスを開きます。
[座標軸] 、 [時間範囲の変更] を選択します。
Signal Builder の時間範囲は、その出力が明示的に定義される時間の区間を決定します。[合計時間範囲設定] ダイアログ ボックスで、[最大時間] フィールドを
5
秒に設定し、0.01 秒間隔の 500 のタイム ステップを作成します。この開始テスト ケースの期間中、
KEY
入力を1
に設定し、これによりKEY_ON
状態に遷移させます。Inputs.KEY
信号を選択するには、2 回のクリックが必要です。最初に、信号をクリックすると信号の両端に点が表示されます。再度
Inputs.KEY
の信号をクリックします。その信号が太くなり、選択された状態になったことが示されます。[Signal Builder] ダイアログ ボックスの下部の [左ポイント] の下の [Y] に「
1
」と入力します。Enter キーを押して、変更を適用します。
テスト ケースの期間に対して
Inputs.KEY
信号が1
に設定されます。[Signal Builder] ダイアログ ボックスを閉じます。
開始テスト ケースのログ
次のステップは、作成した開始テスト ケースのログを記録することです。その後の解析の実行時に、そのテスト ケースが達成したオブジェクティブを Simulink® Design Verifier™ が無視するように指定することができます。
関数 sldvlogsignals
は、sldvData
構造体を含む MAT ファイルにテスト ケース データを記録します。この構造体には、解析時に収集および生成されたすべてのデータが格納されます。
開始テスト ケースのログは次の手順で記録します。
sldvdemo_sbr_extend_design
モデルを参照するハーネス モデルの Model ブロックの名前を保存します。[~, modelBlock] = find_mdlrefs(harnessModel, false);
新しいテスト ケースを使用して Model ブロックで参照されるモデルのシミュレーションを実行し、ワークスペース変数
loggeddata
の入力信号をログに記録します。loggeddata = sldvlogsignals(modelBlock{1});
existingtestcase.mat
という名前の MAT ファイルにログ データを保存します。save('existingtestcase.mat', 'loggeddata');
sldvdemo_sbr_extend_design
モデルを解析するときにこのファイルを指定します。
既存テスト ケースの拡張
ここで、sldvdemo_sbr_extend_design
モデルを解析して、既に達成されているテスト ケースを解析で拡張するように指定できます。解析ではまず既存テスト ケース データを使用し、SBR Stateflow チャートの KEY_OFF
から KEY_ON
への遷移のテスト ケースを生成しようとはしません。
開始テスト ケースを指定してモデルを解析します。
モデルを開きます。
open_system('sldvdemo_sbr_extend_design');
[Design Verifier] タブで、[テスト生成の設定] をクリックします。
[コンフィギュレーション パラメーター] ダイアログ ボックスの [テスト生成] ペインの [既存のテスト ケース] の下で、[既存テスト ケースの拡張] を選択します。
[データ ファイル] フィールドで、ログ データを含む MAT ファイルの名前を入力します。
existingtestcase.mat
[既存のテスト ケースで条件が満たされているオブジェクティブを無視する] をオフにします。
このオプションをオフにすると、最終的なテスト スイートに開始テスト ケースが含まれます。完全なテスト スイートにより 100% のモデル カバレッジが達成されることが示されます。
[OK] をクリックして [コンフィギュレーション パラメーター] ダイアログ ボックスを閉じます。
sldvdemo_sbr_extend_design
モデルを MATLAB® パス上にsldvdemo_sbr_extend_design_test
という名前で保存します。[テスト生成] をクリックします。
ログ ウィンドウには、最初に開始テスト ケースで達成されたオブジェクティブがリストされます。
次に開始テスト ケース外で生成されたオブジェクティブがリストされます。
解析結果の検証
この解析で完全なテスト スイートが作成されたことを確認するため、ハーネス モデルを生成して生成されたテスト ケースでモデルをシミュレートできるようにします。
[Design Verifier] タブの [結果の確認] セクションで、[テスト ハーネス モデルの作成] をクリックします。
ハーネス モデル
sldvdemo_sbr_extend_design_test_harness
で、Inputs という名前の Signal Builder ブロックを開きます。すべてのテスト ケースを使用してモデルをシミュレートするには、[すべてを実行しカバレッジを生成] ボタン
をクリックします。
シミュレーションが完了すると、モデル カバレッジ レポートが表示されます。
sldvdemo_sbr_extend_design_test
モデルのカバレッジ情報を表示して、完全なテスト スイートが 100% のカバレッジを達成していることを確認します。