使用时态逻辑扩展模型的测试用例
创建起始测试用例
本例使用sldvdemo_sbr_extend_design
模型。该模型包括一个使用时间逻辑的Stateflow®图表SBR
。在 Stateflow 图表仿真 500 次之后,会发生从 KEY_OFF
状态到 KEY_ON
状态的转换。要测试这种转变需要一个包含 500 个时间步的测试用例。
在此示例中,您创建一个测试用例,通过在测试用例的持续期内将 KEY
输入设置为 1
来强制转换到 KEY_ON
。您使用此测试用例仿真模型,满足KEY_OFF/KEY_ON
转换的目标。然后分析模型,忽略您创建的测试用例已经满足的目标。
打开示例模型:
openExample('sldv/DefiningExtendingExistingTestsCasesExample',... 'supportingFile','sldvdemo_sbr_extend_design');
打开
SBR
Stateflow图表查看KEY_OFF
/KEY_ON
转换。创建模型参考框架模型:
[~, harnessModelFilePath] = ... sldvmakeharness('sldvdemo_sbr_extend_design',[],[],true);
框架模型
sldvdemo_sbr_extend_design_harness
包括:一个名为“测试单元”的“Model”模块引用原始模型“
sldvdemo_sbr_extend_design
”。名为 Inputs 的 Signal Builder模块包含 Model模块中引用的模型的测试用例输入。
最初,Signal Builder模块仅包含默认测试用例,所有三个输入都设置为
0
。一个名为“Test Case Explanation ”的 DocBlock模块,用于记录测试用例。
最初,测试用例解释模块不包含默认测试用例的任何内容。
sldvmakeharness
返回harnessModelFilePath
中的框架模型文件的路径。将框架模型文件的名称提取到harnessModel
中,以供稍后使用:[~, harnessModel] = fileparts(harnessModelFilePath);
为了分析从 KEY_OFF
到 KEY_ON
的状态转换,创建一个测试用例,以 500 个时间步转换到 KEY_ON
状态:
打开框架模型的信号生成器对话框。
选择 坐标区 > 更改时间范围 。
信号生成器的时间范围决定了其输出明确定义的时间跨度。在设置总时间范围对话框中,将 最长时间 字段设置为
5
秒,创建 500 个时间步长,每个时间步长持续 0.01 秒。在该起始测试用例的持续时间内将
KEY
输入设置为1
,强制转换到KEY_ON
状态。选择Inputs.KEY
信号需要点击两次。首先,点击信号,使信号两端出现点。再次单击
Inputs.KEY
信号。信号生成器会加粗信号以表明该信号已被选中。在信号生成器对话框的底部,在 左点 下,输入
1
作为 Y 。按 Enter 键应用更改。
在测试用例持续期间,
Inputs.KEY
信号被设置为1
。关闭信号生成器对话框。
记录启动测试用例
下一步是记录您创建的起始测试用例。然后,您可以指定Simulink® Design Verifier™在执行分析时忽略该测试用例满足的目标。
sldvlogsignals
函数将测试用例数据记录在包含 sldvData
结构体的 MAT 文件中。该结构体存储了软件在分析过程中收集和产生的所有数据。
记录开始的测试用例:
保存引用
sldvdemo_sbr_extend_design
模型的框架模型中的 Model模块的名称:[~, modelBlock] = find_mdlrefs(harnessModel, false);
使用新的测试用例仿真Model模块仿真的模型,并将输入信号记录在工作区变量
loggeddata
中:loggeddata = sldvlogsignals(modelBlock{1});
将记录的数据保存在名为
existingtestcase.mat
的 MAT 文件中:save('existingtestcase.mat', 'loggeddata');
当您分析
sldvdemo_sbr_extend_design
模型时,您将指定此文件。
扩展现有测试用例
您现在可以分析sldvdemo_sbr_extend_design
模型并指定分析扩展已经满足的测试用例。分析使用现有的测试用例数据作为起点,并且不会尝试为 SBR Stateflow 图表中的 KEY_OFF
到 KEY_ON
的转换生成测试用例。
指定起始测试用例并分析模型:
打开模型。
open_system('sldvdemo_sbr_extend_design');
在 Design Verifier 选项卡上,点击Test Generation Settings 。
在配置参数对话框的 测试生成窗格中,在 现有测试用例 下,选择 Extend existing test cases 。
在 数据文件 字段中,输入包含记录数据的 MAT 文件的名称:
existingtestcase.mat
清除 Ignore objectives satisfied by existing test cases 。
当您清除此选项时,软件会将起始测试用例包含在最终测试套件中。您将看到完整的测试套件实现了 100% 的模型覆盖率。
要关闭配置参数对话框,点击OK 。
将
sldvdemo_sbr_extend_design
模型保存在 MATLAB® 路径下,名称为sldvdemo_sbr_extend_design_test
。点击 生成测试 。
日志窗口首先列出起始测试用例满足的目标。
然后,日志窗口会列出除起始测试用例之外所生成的目标。
验证分析结果
为了确保此分析创建完整的测试套件,请生成框架模型,以便您可以使用生成的测试用例仿真该模型:
在 Design Verifier 选项卡的 查看结果 部分中,点击Create Test Harness Model 。
框架模型
sldvdemo_sbr_extend_design_test_harness
中,打开名为Inputs的Signal Builder模块。要使用所有测试用例仿真模型,点击全部运行并得出覆盖率 按钮 。
仿真完成后,将显示模型覆盖率报告。
查看
sldvdemo_sbr_extend_design_test
模型的覆盖率信息,可以看到完整测试套件达到了100%的覆盖率。