テスト反復
テスト ケースの反復を使用して、同じテスト ケースを異なるデータやコンフィギュレーション セットで実行できます。反復で使用する次の内容を変えることができます。
パラメーター
外部入力
コンフィギュレーション セット
Signal Editor シナリオ
Test Sequence シナリオ
ベースライン データ
シミュレーション モード
反復はテスト ケースの [反復] セクションで設定します。テスト マネージャーの [反復] セクションでテーブルを使用するか、スクリプトを使用してして反復を作成できます。
反復でテスト シーケンス シナリオを使用するには、まず、[入力] セクションの [Test Sequence ブロック] を、シナリオを含むブロックに設定します。次に、[シナリオでオーバーライド] からシナリオを選択し、そのシナリオを各反復の既定として使用します。シナリオを選択しない場合、Test Sequence ブロックのアクティブなシナリオが既定として使用されます。テーブルの [テスト シーケンス シナリオ] 列を使用して反復のシナリオを変更します。詳細については、Use Test Sequence Scenarios in the Test Sequence Editor and Test Managerを参照してください。
ノーマルやソフトウェアインザループ (SIL) など、ベースライン テストまたはシミュレーション テストに別のシミュレーション モードを使用するには、最初にテスト ケースを設定します。次に、[反復] のテーブルで [自動生成] をクリックします。[反復の自動生成] ダイアログ ボックスで、[シミュレーション モード] と 1 つ以上の他のオプションを選択します。作成される反復の数はオプションごとに 2 倍になります。1 つがモデルのモード用、もう 1 つが SIL モード用です。
テストで Simulink® Coverage™ を使用してカバレッジを収集する場合、テスト ケースのすべての反復に同じカバレッジ設定が適用されます。
テーブルによる反復とスクリプトによる反復のどちらを使用する場合でも、[反復を表示] ボタンをクリックしてテスト ケースの反復を参照できます。
テーブルによる反復の作成
[テーブルによる反復] を使用すると、モデルまたはテスト ケースの項目に基づいて反復を迅速に追加できます。テーブルで反復を作成するには、まず該当する列が表示されるようにします。
[反復]、[テーブルによる反復] のセクションを展開します。
テーブルで
ボタンをクリックしてリストから項目を選択し、列を追加または削除します。たとえば、パラメーター セットとコンフィギュレーション セットを表示するように選択するには、[パラメーター セット] と [コンフィギュレーション セット] の項目を選択します。
手動での反復の追加
手動で反復を追加するには、[追加] をクリックします。テーブルに新しい反復の行が表示されます。
反復に名前を割り当て、反復の項目を選択します。たとえば、次のテスト ケースには 4 つの反復があります。各反復は、外部入力とベースライン データの異なる組み合わせを使用しています。
テーブルによる反復の生成
テスト ケースとモデルのデータから反復を自動的に生成することもできます。
[自動生成] ボタンをクリックします。
反復を生成する項目を選択します。
テスト シーケンス シナリオの場合、[入力] セクションの [Test Sequence ブロック] で選択したブロックのシナリオごとに反復が生成されます。
複数の項目を選択すると、順番にペアにして反復が作成されます。以下に例を示します。
モデル
sldemo_autotrans
には、Coasting、Gradual_Acceleration、Hard_braking、および Passing_Maneuver のラベルが付いた 4 つの信号シナリオをもつ Signal Editor ブロックがあり、それぞれのシナリオに Throttle と Brake の信号があります。このモデルを開くには、コマンド ラインで「openExample('sldemo_autotrans')
」と入力します。信号エディターを表示するには、ManeuversGUI ブロックをクリックして [ブロック パラメーター] ダイアログを開きます。次に、[信号プロパティ] にある信号エディターの起動ボタンをクリックします。テスト ケースには、P1、P2、および P3 のラベルが付いた 3 つのパラメーター セットがあります。
Signal Editor シナリオとパラメーター セットから反復を自動的に生成すると、3 つの反復になります。反復は 3 つのパラメーター セットで制限されます。各反復には 1 つの Signal Editor シナリオと 1 つのパラメーター セットが含まれます。Signal Editor シナリオとパラメーター セットは、Signal Editor ブロックとパラメーター セットのセクションにリストされた順序で対応付けられます。
反復についてのオプションの命名規則を指定します。[反復命名規則] ボックスに、次を使用して規則を入力します。
名前に使用する各設定の名前 (スペースは削除)
各設定を区切るアンダースコアまたはスペース
たとえば、パラメーター セットの名前、コンフィギュレーション セットの名前、およびベースラインのファイル名を含める場合は、「
ParameterSet_ConfigurationSet_Baseline
」と入力します。
セクションのオプション | 目的 |
---|---|
信号エディター シナリオ | 指定した [信号エディター シナリオ] に対するシミュレーション、ベースライン、または等価性のテスト ケースの [入力] セクションに適用されます。それぞれの信号エディター シナリオを使用して反復が生成されます。 |
パラメーター セット | シミュレーション、ベースライン、または等価性のテスト ケースの [パラメーターのオーバーライド] セクションに適用されます。それぞれのパラメーター オーバーライド セットを使用して反復が生成されます。 |
外部入力 | 指定した [外部入力] セットに対するシミュレーション、ベースライン、または等価性のテスト ケースの [入力] セクションに適用されます。それぞれの外部入力セットを使用して反復が生成されます。 |
コンフィギュレーション セット | シミュレーション、ベースライン、または等価性のテスト ケースの [コンフィギュレーション設定のオーバーライド] セクションに適用されます。指定したコンフィギュレーション設定が各反復で使用されます。 |
ログ記録された信号セット | シミュレーション、ベースライン、または等価性のテスト ケースの [ログ] セクションに適用されます。それぞれのログに記録された信号セットを使用して反復が生成されます。 |
ベースライン | ベースライン テスト ケース タイプにのみ適用されます。具体的には、ベースライン テスト ケースの [ベースライン基準] セクションに適用されます。それぞれのベースライン基準セットを使用して反復が生成されます。 |
テスト シーケンス シナリオ | 指定した [Test Sequence ブロック] に対するシミュレーション、ベースライン、または等価性のテスト ケースの [入力] セクションに適用されます。それぞれのテスト シーケンス シナリオを使用して反復が生成されます。 |
シミュレーション モード | シミュレーションまたはベースラインのテスト ケースの [反復] のテーブル セクションに適用されます。[反復の自動生成] ダイアログ ボックスで選択した他のテスト設定ごとに、モデルの現在のシミュレーション モードの反復と SIL の反復が作成されます。 |
シミュレーション 1 または 2 | 等価性テスト ケース タイプにのみ適用されます。[反復の自動生成] ダイアログ ボックスの上部に [シミュレーション 1] または [シミュレーション 2] のメニューがあります。これらのセクションは、等価性テスト ケース内の 2 つのシミュレーション セクションに対応します。 |
スクリプトによる反復の作成
[スクリプトによる反復] セクションでは、スクリプトを使用してカスタムの反復セットを実行できます。たとえば、カスタムの反復を使用して、パラメーター セットを定義したり反復の順序をカスタマイズしたりできます。スクリプトによる反復はテストの実行時に生成され、モデルの読み込み前に実行されます。
反復スクリプトのコンポーネント
反復スクリプトには、特定のコンポーネントが含まれている必要があります。最も基本的な反復スクリプトに含まれる要素は次の 3 つです。
反復オブジェクト (
sltestiteration
を使用して作成)。反復設定 (
setTestParam
を使用して設定)。反復登録 (
addIteration
を使用して追加)。
たとえば、次のスクリプトは Signal Editor ブロックから 1 つの信号シナリオを実行する反復を作成します。
%% Iterate Using a Signal Editor Scenario % Set up a new iteration object testItr = sltestiteration; % Set iteration setting using Signal Editor scenario setTestParam(testItr,'SignalEditorScenario',... sltest_signalEditorScenarios{1}); % Add the iteration to run in this test case % The predefined sltest_testCase variable is used here addIteration(sltest_testCase,testItr);
テスト反復クラスの詳細については、sltest.testmanager.TestIteration
を参照してください。Signal Editor やテスト シーケンスのシナリオなど、複数の項目を反復できます。基本の反復スクリプトをループに含めることで、ブロックの Signal Editor または Test Sequence のすべてのシナリオを反復できます。
%% Iterate Over All Signal Editor Scenarios % Determine the number of possible iterations numSteps = length(sltest_signalEditorScenarios); % Create each iteration for k = 1 : numSteps % Set up a new iteration object testItr = sltestiteration; % Set iteration settings setTestParam(testItr,'SignalEditorScenario',... sltest_signalEditorScenarios{k}); % Add the iteration to run in this test case % You can pass in an optional iteration name addIteration(sltest_testCase,testItr); end
事前定義された変数
反復スクリプトの記述には、事前定義された変数を使用できます。事前定義された変数の一覧をテスト マネージャーで参照するには、[テスト反復作成のヘルプ] セクションを展開します。[スクリプトによる反復] セクション内のスクリプト ボックスで反復スクリプトを記述します。スクリプト ボックスは関数ワークスペースです。つまり、MATLAB® ベース ワークスペースではスクリプト ボックスからの情報にアクセスできません。スクリプト ボックスで変数を定義している場合、その変数を他のワークスペースで使用することはできません。
事前定義された変数は次のとおりです。
sltest_bdroot
— テスト ケースでシミュレートされるモデル。string として定義されます。sltest_sut
— テスト対象システム。string として定義されます。sltest_isharness
—sltest_bdroot
がハーネス モデルの場合にtrue
。logical として定義されます。sltest_externalInputs
— 外部入力の名前。string の cell 配列として定義されます。sltest_parameterSets
— パラメーター オーバーライド セットの名前。string の cell 配列として定義されます。sltest_configSets
— コンフィギュレーション設定の名前。string の cell 配列として定義されます。sltest_signalEditorScenarios
— 信号エディター シナリオの名前。文字ベクトルの 2 次元 cell 配列として定義されます。sltest_loggedSignalSets
— ログに記録された信号セットの名前。文字ベクトルの 2 次元 cell 配列として定義されます。sltest_testSequenceScenarios
— テスト シーケンス シナリオの名前。文字ベクトルの 2 次元 cell 配列として定義されます。sltest_baselines
— ベースライン基準の名前 (ベースライン テストのみ)。文字ベクトルの cell 配列として定義されます。sltest_tableIterations
— 反復のテーブルで作成される反復オブジェクト。sltest.testmanager.TestIteration
オブジェクトの cell 配列として定義されます。sltest_testCase
— 現在のテスト ケース オブジェクト。sltest.testmanager.TestCase
オブジェクトとして定義されます。
スクリプトによる反復のテンプレート
Signal Editor シナリオ、パラメーター セット、外部入力、コンフィギュレーション セット、およびベースライン設定 (ベースライン テスト ケースを使用する場合) のテンプレートを使用して、テスト ケースの反復を迅速に生成できます。スクリプトによる反復のテンプレートは、テスト設定のロックステップの順序とペアリングに従います。ロックステップの順序の詳細については、テーブルによる反復の作成を参照してください。
たとえば、スクリプトによる反復ですべての信号エディター シナリオを実行する場合は次のようにします。
[反復テンプレート] をクリックします。
反復するテスト ケース設定を選択します。[OK] をクリックします。
スクリプトが生成され、スクリプト ボックスの既存のすべてのスクリプトの下に追加されます。
テスト ケースを実行したときの反復のプレビューを示すテーブルを生成するには、[反復を表示] をクリックします。
一連のパラメーターのスイープ
一連のパラメーターをスイープすることで、スクリプトによる反復をモデルのテストに使用できます。次のスクリプトを使用して、モデル sltestCar
のモデル ワークスペース パラメーター Iei
とモデル パラメーター UpperSaturationLimit
について、さまざまな値を試すことができます。[反復] 、 [スクリプトによる反復] でスクリプトを追加します。
%% Iterate over Iei parameter % Set up the parameter values to sweep over IeiValues = [0.021,0.022,0.022,0.023]; UprSatValues = [2000,3000,4000,5000]; numSteps = length(IeiValues); % Create each iteration for k = 1 : numSteps % Set up a new iteration object testItr = sltestiteration; % Set value of lei (parameter in model workspace) setVariable(testItr,'Name','Iei','Source','model workspace',... 'Value',IeiValues(k)); % Set value of UpperSaturationLimit model parameter testItr.setModelParam('sltestCar/Engine/Integrator',... 'UpperSaturationLimit',UprSatValues(k)); % Add the iteration to run in this test case addIteration(sltest_testCase,testItr); end
スクリプトを追加した後、[反復を表示] をクリックします。スクリプトによって作成された反復を参照できます。
テストを実行すると、各反復の結果が生成されます。
参考
sltest.testmanager.TestIteration
| setModelParam