このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
プログラムによるテスト シーケンスの作成
この例では、プログラム インターフェイスを使用してテスト ハーネスとテスト シーケンスを作成する方法を示します。テスト ハーネスと Test Sequence ブロックを作成し、クルーズ コントロール システムの 2 つの機能属性を検証するテスト シーケンスを作成します。
Test Sequence ブロックを含むテスト ハーネスの作成
1.モデルを読み込みます。
model = 'sltestCruiseChart';
load_system(model)
2.テスト ハーネスを作成します。
sltest.harness.create(model,'Name','Harness1',... 'Source','Test Sequence') sltest.harness.load(model,'Harness1'); set_param('Harness1','StopTime','15');
ans = struct with fields: model: 'sltestCruiseChart' name: 'Harness1' description: '' ownerHandle: 152.0006 ownerFullPath: 'sltestCruiseChart' ownerType: 'Simulink.BlockDiagram' verificationMode: 'Normal' saveExternally: 0 rebuildOnOpen: 0 rebuildModelData: 0 postRebuildCallback: '' graphical: 0 origSrc: 'Test Sequence' origSink: 'Test Assessment' synchronizationMode: 'SyncOnOpen' existingBuildFolder: '' functionInterfaceName: ''
テスト シーケンスの作成
1.ローカル変数 endTest
を追加し、データ型を boolean
に設定します。endTest
はテスト ステップ間の遷移に使用します。
sltest.testsequence.addSymbol('Harness1/Test Sequence','endTest',... 'Data','Local'); sltest.testsequence.editSymbol('Harness1/Test Sequence','endTest',... 'DataType','boolean');
2.ステップ Run
の名前を Initialize1
に変更します。
sltest.testsequence.editStep('Harness1/Test Sequence','Run',... 'Name','Initialize1');
3.ステップ BrakeTest
を追加します。BrakeTest
では、ブレークをかけたときにクルーズ コントロールが解除されることを確認します。テスト シナリオのアクションと検証を定義するサブステップを追加します。
sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'BrakeTest','Initialize1','Action','endTest = false;') % Add a transition from |Initialize1| to |BrakeTest|. sltest.testsequence.addTransition('Harness1/Test Sequence',... 'Initialize1','true','BrakeTest') % This sub-step enables the cruise control and sets the speed. % |SetValuesActions| is the actions for BrakeTest.SetValues. setValuesActions = sprintf('CruiseOnOff = true;\nSpeed = 50;'); sltest.testsequence.addStep('Harness1/Test Sequence',... 'BrakeTest.SetValues','Action',setValuesActions) % This sub-step engages the cruise control. setCCActions = sprintf('CoastSetSw = true;'); sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'BrakeTest.Engage','BrakeTest.SetValues','Action',setCCActions) % This step applies the brake. brakeActions = sprintf('CoastSetSw = false;\nBrake = true;'); sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'BrakeTest.Brake','BrakeTest.Engage','Action',brakeActions) % This step verifies that the cruise control is off. brakeVerifyActions = sprintf('verify(engaged == false)\nendTest = true;'); sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'BrakeTest.Verify','BrakeTest.Brake','Action',brakeVerifyActions) % Add transitions between steps. sltest.testsequence.addTransition('Harness1/Test Sequence',... 'BrakeTest.SetValues','true','BrakeTest.Engage') sltest.testsequence.addTransition('Harness1/Test Sequence',... 'BrakeTest.Engage','after(2,sec)','BrakeTest.Brake') sltest.testsequence.addTransition('Harness1/Test Sequence',... 'BrakeTest.Brake','true','BrakeTest.Verify')
4.コンポーネントの入力を初期化するステップ Initialize2
を追加します。BrakeTest
から Initialize2
への遷移を追加します。
init2Actions = sprintf(['CruiseOnOff = false;\n'... 'Brake = false;\n'... 'Speed = 0;\n'... 'CoastSetSw = false;\n'... 'AccelResSw = false;']); sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'Initialize2','BrakeTest','Action',init2Actions) sltest.testsequence.addTransition('Harness1/Test Sequence',... 'BrakeTest','endTest == true','Initialize2')
5.ステップ LimitTest
を追加します。LimitTest
では、車両速度が上限を超えたときにクルーズ コントロールが解除されることを確認します。Initialize2
ステップからの遷移を追加し、アクションと検証を定義するサブステップを追加します。
sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'LimitTest','Initialize2') sltest.testsequence.addTransition('Harness1/Test Sequence',... 'Initialize2','true','LimitTest') % Add a step to enable cruise control and set the speed. setValuesActions2 = sprintf('CruiseOnOff = true;\nSpeed = 60;'); sltest.testsequence.addStep('Harness1/Test Sequence',... 'LimitTest.SetValues','Action',setValuesActions2) % Add a step to engage the cruise control. setCCActions = sprintf('CoastSetSw = true;'); sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'LimitTest.Engage','LimitTest.SetValues','Action',setCCActions) % Add a step to ramp the vehicle speed. sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'LimitTest.RampUp','LimitTest.Engage','Action','Speed = Speed + ramp(5*et);') % Add a step to verify that the cruise control is off. highLimVerifyActions = sprintf('verify(engaged == false)'); sltest.testsequence.addStepAfter('Harness1/Test Sequence',... 'LimitTest.VerifyHigh','LimitTest.RampUp','Action',highLimVerifyActions) % Add transitions between steps. The speed ramp transitions when the % vehicle speed exceeds 90. sltest.testsequence.addTransition('Harness1/Test Sequence',... 'LimitTest.SetValues','true','LimitTest.Engage') sltest.testsequence.addTransition('Harness1/Test Sequence',... 'LimitTest.Engage','true','LimitTest.RampUp') sltest.testsequence.addTransition('Harness1/Test Sequence',... 'LimitTest.RampUp','Speed > 90','LimitTest.VerifyHigh')
テスト ハーネスを開いてテスト シーケンスを表示します。
sltest.harness.open(model,'Harness1');
Test Sequence ブロックをダブルクリックしてエディターを開き、テスト シーケンスを表示します。
テスト ハーネスとモデルを閉じる
sltest.harness.close(model,'Harness1');
close_system(model,0);