以编程方式创建一个测试序列
这个例子展示了如何使用编程接口创建一个测试工具和测试序列。您创建了一个测试集和一个test Sequence块,并编写了一个测试序列来验证巡航控制系统的两个功能属性。
创建包含测试序列块的测试套件
1.加载模型。
模型=“sltestCruiseChart”;load_system(模型)
2.创建测试工具。
sltest.harness.create(模型,“名字”,“Harness1”,...“源”,测试序列的) sltest.harness.load(模型,“Harness1”);set_param (“Harness1”,“StopTime”,“15”);
ans = struct with fields: model: 'sltestCruiseChart'名称:'Harness1'描述:" ownerHandle: 0.0016 ownerFullPath: 'sltestCruiseChart' ownerType: 'Simulink。金宝appBlockDiagram' verificationMode: 'Normal' saveexternal: 0 rebuildOnOpen: 0 rebuildModelData: 0 postRebuildCallback: " graphic: 0 origSrc: 'Test Sequence' origSink: 'Test Assessment' synchronizationMode: 'SyncOnOpen' existingBuildFolder: " functionInterfaceName: "
编写测试序列
1.添加一个局部变量endTest
并将数据类型设置为布尔
.你使用endTest
在测试步骤之间转换。
sltest.testsequence.addSymbol (“Harness1 /测试序列”,“endTest”,...“数据”,“本地”);sltest.testsequence.editSymbol (“Harness1 /测试序列”,“endTest”,...“数据类型”,“布尔”);
2.修改步骤的名称运行
来Initialize1
.
sltest.testsequence.editStep (“Harness1 /测试序列”,“运行”,...“名字”,“Initialize1”);
3.添加一个步骤输入
.输入
当刹车时,检查巡航控制是否脱离。添加定义测试场景操作和验证的子步骤。
sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...“输入”,“Initialize1”,“行动”,'endTest = false;')添加从|Initialize1|到|BrakeTest|的过渡。sltest.testsequence.addTransition (“Harness1 /测试序列”,...“Initialize1”,“真正的”,“输入”)此子步骤启用巡航控制和设置速度。|是BrakeTest.SetValues的动作。setValuesActions = sprintf('CruiseOnOff = true;\nSpeed = 50;');sltest.testsequence.addStep (“Harness1 /测试序列”,...的输入。setvalue”,“行动”setValuesActions)此子步骤使用巡航控制。setCCActions = sprintf('CoastSetSw = true;');sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...的输入。参与的,的输入。setvalue”,“行动”setCCActions)此步骤应用刹车。brakeActions = sprintf(\nBrake = true;');sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...的输入。刹车的,的输入。参与的,“行动”brakeActions)此步骤验证巡航控制是否关闭。brakeVerifyActions = sprintf('verify(engaged == false)\nendTest = true;');sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...的输入。验证的,的输入。刹车的,“行动”brakeVerifyActions)在步骤之间添加过渡。sltest.testsequence.addTransition (“Harness1 /测试序列”,...的输入。setvalue”,“真正的”,的输入。参与的) sltest.testsequence.addTransition (“Harness1 /测试序列”,...的输入。参与的,(2秒)后的,的输入。刹车的) sltest.testsequence.addTransition (“Harness1 /测试序列”,...的输入。刹车的,“真正的”,的输入。验证的)
4.添加一个步骤Initialize2
初始化组件输入。添加一个过渡输入
来Initialize2
.
init2Actions = sprintf(['CruiseOnOff = false;\n'...'刹车= false;\n'...'Speed = 0;\n'...'CoastSetSw = false;\n'...'AccelResSw = false;']);sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...“Initialize2”,“输入”,“行动”init2Actions) sltest.testsequence.addTransition (“Harness1 /测试序列”,...“输入”,'endTest == true',“Initialize2”)
5.添加一个步骤限制
.限制
当车速超过最高限制时,检查巡航控制系统是否脱离。添加一个过渡Initialize2
步骤,并添加子步骤来定义操作和验证。
sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...“限制”,“Initialize2”) sltest.testsequence.addTransition (“Harness1 /测试序列”,...“Initialize2”,“真正的”,“限制”)添加一个步骤来启用巡航控制和设置速度。。setValuesActions2 = sprintf('CruiseOnOff = true;\nSpeed = 60;');sltest.testsequence.addStep (“Harness1 /测试序列”,...的限制。setvalue”,“行动”setValuesActions2)增加一个步骤使巡航控制生效。。setCCActions = sprintf('CoastSetSw = true;');sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...的限制。参与的,的限制。setvalue”,“行动”setCCActions)增加一个台阶来增加车辆的速度。sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...的限制。RampUp”,的限制。参与的,“行动”,'速度=速度+斜坡(5*et);')添加一个步骤来验证巡航控制是关闭的。。highLimVerifyActions = sprintf('verify(engaged == false)');sltest.testsequence.addStepAfter (“Harness1 /测试序列”,...的限制。VerifyHigh”,的限制。RampUp”,“行动”highLimVerifyActions)在步骤之间添加过渡。高速斜坡转换时%车速超过90。sltest.testsequence.addTransition (“Harness1 /测试序列”,...的限制。setvalue”,“真正的”,的限制。参与的) sltest.testsequence.addTransition (“Harness1 /测试序列”,...的限制。参与的,“真正的”,的限制。RampUp”) sltest.testsequence.addTransition (“Harness1 /测试序列”,...的限制。RampUp”,“Speed > 90”,的限制。VerifyHigh”)
打开测试工具以查看测试序列。
sltest.harness.open(模型,“Harness1”);
双击Test Sequence块以打开编辑器并查看测试序列。
关闭测试线束和模型
sltest.harness.close(模型,“Harness1”);close_system(模型中,0);