应用参数配置后扩展现有测试用例
此示例展示了如何应用参数配置后,通过扩展现有的测试用例来实现缺失覆盖率。
在此示例中,您将为模型生成测试用例并查看分析结果。结果表明,该模型包含无法满足的目标并且没有实现完全覆盖率。然后,您在模型中应用参数配置并重用之前生成的测试用例以实现完整的模型覆盖率。
步骤 1:生成初始测试用例并审查结果
sldvexParameterController 模型是巡航控制模型,通过选择 P 控制器或 PI 控制器来控制油门速度。ControllerModeSelection 子系统使用 SelectMode 参数来选择控制器模式。使用函数 Selectmode 定义 Simulink.defineIntEnumType 的枚举数据类型。有关枚举值的更多信息,请参阅 在 Simulink 模型中使用枚举数据。
Simulink.defineIntEnumType('EnumForControllerSelection',... {'Pmode','PImode'},[1;2]); SelectMode = Simulink.Parameter; SelectMode.Value = EnumForControllerSelection.Pmode; model = 'sldvexParameterController'; open_system(model);

设置 sldvoptions 并使用指定的选项分析模型。
opts = sldvoptions; opts.Mode = 'TestGeneration'; opts.ModelCoverageObjectives = 'MCDC'; [ status, files ] = sldvrun(model, opts, true);
分析完成后,“结果摘要”窗口显示 15 个目标中的 54 个无法满足。
在“结果摘要”窗口中,点击突出显示模型上的分析结果。双击 ControllerModeSelection 子系统。PI_ModeSelection 和 P_ModeSelection 子系统以红色突出显示,包含无法满足的目标。

要查看模型覆盖率报告,请在“结果摘要”窗口中点击仿真测试并生成模型覆盖率报告。报告显示,该模型并未实现全覆盖率。

由于参数值 SelectMode 被限制为默认值 EnumForControllerSelection.Pmode,因此无法实现全面覆盖率。因此,PI_ModeSelection 子系统未能实现全面覆盖率。
步骤 2:配置参数配置并扩展现有测试用例
如果应用参数配置,Simulink Design Verifier 会在分析过程中将参数视为变量,并根据您指定的约束值对值约束。
通过指定 SelectMode 的约束值来应用 parameterValue 参数的参数配置。
controlParameter = [ {'SelectMode'}];
parameterValue = [ {'[EnumForControllerSelection.Pmode EnumForControllerSelection.PImode]'}];
opts.Parameters = 'on';
opts.ParametersUseConfig = 'on';
opts.ParameterNames = controlParameter;
opts.ParameterConstraints = parameterValue;
opts.ParameterUseInAnalysis = {'on'};
为了重用以前生成的测试用例,请配置分析选项以扩展现有的测试用例并指定现有的测试文件。
opts.ExtendExistingTests = 'on'; opts.IgnoreExistTestSatisfied = 'off'; opts.ExistingTestFile = files.DataFile;
步骤 3:执行分析并审查覆盖率报告
使用指定的选项分析模型。
[status, fileNames] = sldvrun(model, opts, true);
分析完成后,“结果摘要”窗口显示所有目标均已满足。
要生成模型覆盖率报告,点击仿真测试并生成模型覆盖率报告。报告显示,该模型实现了全覆盖率。

要完成此示例,请关闭模型。
close_system('sldvexParameterController', 0);