Main Content

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

使用时态逻辑扩展模型的测试用例

创建起始测试用例

本例使用sldvdemo_sbr_extend_design模型。该模型包括一个使用时间逻辑的Stateflow®图表SBR。在 Stateflow 图表仿真 500 次之后,会发生从 KEY_OFF 状态到 KEY_ON 状态的转换。要测试这种转变需要一个包含 500 个时间步的测试用例。

在此示例中,您创建一个测试用例,通过在测试用例的持续期内将 KEY 输入设置为 1 来强制转换到 KEY_ON。您使用此测试用例仿真模型,满足KEY_OFF/KEY_ON转换的目标。然后分析模型,忽略您创建的测试用例已经满足的目标。

  1. 打开示例模型:

    openExample('sldv/DefiningExtendingExistingTestsCasesExample',...
    'supportingFile','sldvdemo_sbr_extend_design');
  2. 打开SBR Stateflow图表查看KEY_OFF/KEY_ON转换。

    SBR Stateflow chart showing KEY_OFF and KEY_ON.

  3. 创建模型参考框架模型:

    [~, harnessModelFilePath] = ...
        sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);

    框架模型sldvdemo_sbr_extend_design_harness 包括:

    • 一个名为“测试单元”的“Model”模块引用原始模型“sldvdemo_sbr_extend_design”。

      Model block named Test Unit with Inputs as input and SeatBeltIcon as output.

    • 名为 Inputs 的 Signal Builder模块包含 Model模块中引用的模型的测试用例输入。

      Signal Builder block.

      最初,Signal Builder模块仅包含默认测试用例,所有三个输入都设置为 0

    • 一个名为“Test Case Explanation ”的 DocBlock模块,用于记录测试用例。

      A DocBlock named Test Case Explanation.

      最初,测试用例解释模块不包含默认测试用例的任何内容。

  4. sldvmakeharness 返回 harnessModelFilePath 中的框架模型文件的路径。将框架模型文件的名称提取到harnessModel中,以供稍后使用:

    [~, harnessModel] = fileparts(harnessModelFilePath);

为了分析从 KEY_OFFKEY_ON 的状态转换,创建一个测试用例,以 500 个时间步转换到 KEY_ON 状态:

  1. 打开框架模型的信号生成器对话框。

  2. 选择 坐标区 > 更改时间范围

  3. 信号生成器的时间范围决定了其输出明确定义的时间跨度。在设置总时间范围对话框中,将 最长时间 字段设置为 5 秒,创建 500 个时间步长,每个时间步长持续 0.01 秒。

  4. 在该起始测试用例的持续时间内将 KEY 输入设置为 1,强制转换到 KEY_ON 状态。选择Inputs.KEY信号需要点击两次。首先,点击信号,使信号两端出现点。

    Figure showing Inputs.KEY signal at level 0.

  5. 再次单击Inputs.KEY信号。信号生成器会加粗信号以表明该信号已被选中。

    Selected Inputs.KEY signal with red overlapping line at level 0.

  6. 在信号生成器对话框的底部,在 左点 下,输入 1 作为 Y

  7. Enter 键应用更改。

    在测试用例持续期间,Inputs.KEY信号被设置为1

    Inputs.KEY signal at level 1.

  8. 关闭信号生成器对话框。

记录启动测试用例

下一步是记录您创建的起始测试用例。然后,您可以指定Simulink® Design Verifier™在执行分析时忽略该测试用例满足的目标。

sldvlogsignals 函数将测试用例数据记录在包含 sldvData结构体的 MAT 文件中。该结构体存储了软件在分析过程中收集和产生的所有数据。

记录开始的测试用例:

  1. 保存引用 sldvdemo_sbr_extend_design模型的框架模型中的 Model模块的名称:

    [~, modelBlock] = find_mdlrefs(harnessModel, false);
  2. 使用新的测试用例仿真Model模块仿真的模型,并将输入信号记录在工作区变量loggeddata中:

    loggeddata = sldvlogsignals(modelBlock{1});
  3. 将记录的数据保存在名为 existingtestcase.mat 的 MAT 文件中:

    save('existingtestcase.mat', 'loggeddata');

    当您分析sldvdemo_sbr_extend_design模型时,您将指定此文件。

扩展现有测试用例

您现在可以分析sldvdemo_sbr_extend_design模型并指定分析扩展已经满足的测试用例。分析使用现有的测试用例数据作为起点,并且不会尝试为 SBR Stateflow 图表中的 KEY_OFFKEY_ON 的转换生成测试用例。

指定起始测试用例并分析模型:

  1. 打开模型。

    open_system('sldvdemo_sbr_extend_design');

  2. Design Verifier 选项卡上,点击Test Generation Settings

  3. 在配置参数对话框的 测试生成窗格中,在 现有测试用例 下,选择 Extend existing test cases

  4. 数据文件 字段中,输入包含记录数据的 MAT 文件的名称:

    existingtestcase.mat
  5. 清除 Ignore objectives satisfied by existing test cases

    当您清除此选项时,软件会将起始测试用例包含在最终测试套件中。您将看到完整的测试套件实现了 100% 的模型覆盖率。

  6. 要关闭配置参数对话框,点击OK

  7. sldvdemo_sbr_extend_design模型保存在 MATLAB® 路径下,名称为 sldvdemo_sbr_extend_design_test

  8. 点击 生成测试

    日志窗口首先列出起始测试用例满足的目标。

    Results analysis window for test case generation.

    然后,日志窗口会列出除起始测试用例之外所生成的目标。

验证分析结果

为了确保此分析创建完整的测试套件,请生成框架模型,以便您可以使用生成的测试用例仿真该模型:

  1. Design Verifier 选项卡的 查看结果 部分中,点击Create Test Harness Model

  2. 框架模型sldvdemo_sbr_extend_design_test_harness中,打开名为Inputs的Signal Builder模块。

  3. 要使用所有测试用例仿真模型,点击全部运行并得出覆盖率 按钮

    仿真完成后,将显示模型覆盖率报告。

  4. 查看sldvdemo_sbr_extend_design_test模型的覆盖率信息,可以看到完整测试套件达到了100%的覆盖率。

    Coverage information for the model showing 100% coverage.

相关示例

详细信息