累计覆盖率分析
此示例说明了如何使用覆盖率结果资源管理器简化跨越一组多次覆盖率运行的累计覆盖率数据和报告的生成。
打开示例模型
此示例使用 slvnvdemo_ratelim_harness
模型来解释累积覆盖率的设置和选项。该模型内部是可调速率限制器的实现。它使用三个 Switch 模块来控制何时限制输出以及应用的限制类型。
输入由三个 From Workspace 模块产生:增益、上升限制和下降限制。输入的值由 MATLAB® 工作区中定义的六个变量指定:t_gain、u_gain、t_pos、u_pos、t_neg 和 u_neg。
open_system('slvnvdemo_ratelim_harness');
open_system('slvnvdemo_ratelim_harness/Adjustable Rate Limiter');
启用覆盖率分析
首先打开覆盖率设置。从建模选项卡中,选择模型设置。
要启用覆盖率工具,请在覆盖率窗格中选择启用覆盖率分析。此设置可启用“覆盖率”窗格中的其他选项。
对于此示例,收集条件和决策覆盖率。在覆盖率度量面板下,将结构覆盖率级别设置为条件决策。
点击确定应用您选择的设置并关闭此对话框。
使用第一个测试用例仿真模型
第一个测试用例练习输入值不会快速变化的场景。它使用正弦波作为时变信号,并使用常数作为上升和下降限值。
t_gain = (0:0.02:2.0)'; u_gain = sin(2*pi*t_gain);
使用 MATLAB diff
函数计算时间变化输入的最小和最大变化。
max_change = max(diff(u_gain)) min_change = min(diff(u_gain))
max_change = 0.1253 min_change = -0.1253
根据这些最小和最大变化率,将速率限制设置为 1
和 -1
。因此,在本次测试运行中,输入的变化率将很好地处于这些限制之内。
t_pos = [0;2]; u_pos = [1;1]; t_neg = [0;2]; u_neg = [-1;-1];
通过点击运行(覆盖率)按钮,使用第一组输入变量仿真模型。
在结果资源管理器中查看第一个测试用例
要打开结果浏览器,请在覆盖率分析器应用中点击结果浏览器。
此时,当前累积数据仅包含第一次覆盖率运行(标记为运行 1)。结果浏览器最初显示有关此最新覆盖率运行的信息,包括每个启用度量的结果摘要。
为了跟踪此仿真的目的,请在描述字段中输入文本 "Test within rate limits"
,然后点击应用。
使用第二个测试用例仿真模型
第二个测试用例对第一个用例进行了补充,其增益上升超过了速率限制。一秒钟后,它会增加速率限制,以便增益变化低于该限制。
t_gain = [0;2]; u_gain = [0;4]; t_pos = [0;1;1;2]; u_pos = [1;1;5;5]*0.02; t_neg = [0;2]; u_neg = [0;0];
通过点击运行(覆盖率)按钮,使用第二组变量仿真模型。
生成第二个测试用例的累积进度报告
现在已经执行了多次覆盖率运行,您可以生成累计覆盖率报告。
首先,添加本次运行的简要描述,就像上次仿真一样。在运行 2 的描述字段中输入文本 "Test rising rate limit"
,然后点击应用。
可以生成不同格式的覆盖率报告。为了直观地了解最近的仿真如何影响累计覆盖率结果,您可以生成累积进度报告。
在结果资源管理器中的设置下,选择显示累积进度报告,然后点击应用。
点击结果浏览器最左侧窗格中的当前累积数据。请注意,摘要 表示从运行 1 和运行 2 累积的累计覆盖率结果。点击生成报告来创建累积进度报告。
累积进度报告的摘要部分包含三列:当前运行、增量和累计。当前运行列显示当前累积数据下列出的最后一次仿真的覆盖率(在本例中为运行 2)。Delta 列显示当前运行所暴露的覆盖率,该覆盖率在本次仿真之前的累积结果中未实现。Cumulative 列给出了当前累计覆盖率结果。
使用第三个测试用例仿真模型
第三个测试用例是第二个测试用例的镜像,其中上升的增益被下降的增益所取代。
t_gain = [0;2]; u_gain = [-0.02;-4.02]; t_pos = [0;2]; u_pos = [0;0]; t_neg = [0;1;1;2]; u_neg = [-1;-1;-5;-5]*0.02;
通过点击运行(覆盖率)按钮,使用第三组变量仿真模型。
生成第三个测试用例的累积进度报告
再次添加最新运行的简短描述。在运行 3 的描述字段中输入文本 "Test falling rate limit"
,然后点击应用。
导航到当前累积数据并点击生成报告以创建本次最新运行的累积进度报告。
请注意,通过此次最新运行,累积结果实现了对决策、条件和执行度量的全覆盖。
完善累积数据集
如果您确定特定的覆盖率运行没有必要,则可以从累积数据集中排除此运行并生成新的累积报告。
在结果资源管理器中的当前累积数据下,右键点击运行 1 并选择从累积数据中排除。
生成最终累计覆盖率报告
现在您已经选择了所需的测试运行子集,您可以为累积结果生成覆盖率报告。
导航到设置,取消选择显示累积进度报告,然后点击应用。
导航到当前累计数据并点击生成报告。
累计覆盖率报告显示与当前累积数据相关的结果。请注意,在测试部分下,有一个描述为 "Test rising rate limit,Test falling rate limit"
的测试,表明该测试包含第 2 次和第 3 次运行的累积结果。
摘要部分显示,这些累积结果实现了对所有分析度量的全覆盖。