主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

以编程方式创建测试序列

此示例显示如何使用编程接口创建测试框架和测试序列。您创建一个包含 Test Sequence 模块的测试框架。您使用该模块编写一系列测试步骤,以验证巡航控制系统的两个函数属性。

加载模型

model = 'sltestCruiseChart';
load_system(model)

创建包含 Test Sequence 模块的测试框架

创建并加载测试框架。将框架停止时间设置为 15 秒。

sltest.harness.create(model,'Name','Harness1',...
    'Source','Test Sequence');
sltest.harness.load(model,'Harness1');
set_param('Harness1','StopTime','15');

编写测试序列

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;')

    % Transition from |Initialize1| to |BrakeTest|.
    sltest.testsequence.addTransition('Harness1/Test Sequence',...
        'Initialize1','true','BrakeTest')

    % Enable the cruise control and set 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)

    % Engage the cruise control.
    setCCActions = sprintf('CoastSetSw = true;');
    sltest.testsequence.addStepAfter('Harness1/Test Sequence',...
        'BrakeTest.Engage','BrakeTest.SetValues','Action',setCCActions)

    % Apply the brake.
    brakeActions = sprintf('CoastSetSw = false;\nBrake = true;');
    sltest.testsequence.addStepAfter('Harness1/Test Sequence',...
        'BrakeTest.Brake','BrakeTest.Engage','Action',brakeActions)

    % Verify 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 步骤,用于检查当车辆速度超过最高限速时,巡航控制是否解除。从 Initialize2 步骤添加一个转移,并添加子步骤以定义操作和验证。

sltest.testsequence.addStepAfter('Harness1/Test Sequence',...
    'LimitTest','Initialize2')
sltest.testsequence.addTransition('Harness1/Test Sequence',...
    'Initialize2','true','LimitTest')

    % Enable cruise control and set the speed.
    setValuesActions2 = sprintf('CruiseOnOff = true;\nSpeed = 60;');
    sltest.testsequence.addStep('Harness1/Test Sequence',...
        'LimitTest.SetValues','Action',setValuesActions2)

    % Engage the cruise control.
    setCCActions = sprintf('CoastSetSw = true;');
    sltest.testsequence.addStepAfter('Harness1/Test Sequence',...
        'LimitTest.Engage','LimitTest.SetValues','Action',setCCActions)

    % Ramp up the vehicle speed.
    sltest.testsequence.addStepAfter('Harness1/Test Sequence',...
        'LimitTest.RampUp','LimitTest.Engage','Action', ...
        'Speed = Speed + ramp(5*et);')

    % 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);

另请参阅

| | | | |

主题