主要内容

基于需求的测试的测试覆盖率

这个例子展示了如何为实现需求的模型收集测试覆盖率。覆盖率指的是通过分析执行了多少模型逻辑来确定测试的完整性。对于基于需求的测试,覆盖结果可以限定在链接的需求范围内。通过这个范围,您可以评估每个模型元素是否被预期的测试用例所覆盖。

这个例子展示了范围覆盖如何导致链接的需求,可以揭示不充分的需求链接和测试差距。它还展示了如何增加覆盖率。

本例中的模型为cruiseControlRBTCovExample,表示巡航控制系统。该模型实现并链接到需求。已经为这个示例创建了一个测试文件。

打开巡航控制模型

cruiseControlRBTCovExample

查看相关需求

这个巡航控制系统的需求已经在需求编辑器中被捕获。要查看需求,请使用slreq.open(“cruiseControlRBTCovReqs.slreqx”)

打开测试管理器和测试文件

使用sltestmgr打开测试管理器。

点击开放并选择cruiseControlRBTCovTests.mldatx.编写测试是为了验证模型行为满足指定的需求。它们还用于记录决策和条件覆盖率。展开Coverage Settings以查看所选指标。

每个测试用例验证并链接到一个需求。例如,Throttle Test验证Throttle需求。这一要求规定,如果速度与目标不同,油门是平稳应用的。该测试使用逻辑评估来验证此行为,该评估检查变更的节流速率在-1到1弧度每秒之间,如需求描述中所定义的那样。

运行测试并查看覆盖率结果

运行测试。

当测试运行结束时,单击Results and Artifacts窗格中的Results。请注意,测试通过了,并且报告了100%的聚合覆盖率。

打开将测试结果限定在链接的需求上

单击Results and Artifacts窗格中的顶级结果。然后,在“聚合覆盖率结果”窗格中,单击范围覆盖导致链接的需求复选框。确定结果的范围意味着每个测试仅为实现该测试验证的需求的相应模型元素贡献覆盖率。范围检查模型元素是否被预期的测试用例所覆盖。自动更新的覆盖结果现在显示了决策和执行的聚合覆盖率,分别为92%和76%。

在模型中查看覆盖结果

单击Analyzed model列中的模型名称,以突出显示模型中的覆盖结果,并显示coverage Report详细信息。

在模型中,如果需求表没有显示在模型下面,单击模型画布右下角的Perspectives视图打开它,然后单击需求。

打开Controller子系统。没有100%覆盖的块显示为红色。两组Constant和Sum块没有链接到需求,并且从未执行过。

链接块到需求

在这种情况下,缺失的覆盖表明需求链接不足。这些Constant和Sum块对于实现增量和递减需求是必要的,并且应该链接到适当的需求。

在Requirements窗格中的表中展开cruiseControlRbtCovReqs.右键单击上面的Constant块并选择需求>链接到需求浏览器中的选项.然后,单击Requirements表中的INCREMENT需求。对上面的Sum块重复此操作。

对于较低的Constant和Sum块,重复链接步骤,但链接到DECREMENT要求。

增加特定测试的覆盖率

打开PI控制器并单击离散时间积分器块。覆盖细节显示真正的上限的决定是通过增量测试(T4)执行的,而不是节流测试(T6)。由于该块是THROTTLE需求实现的一部分,因此它应该已经经过了THROTTLE Test的测试,后者验证了THROTTLE需求。增量测试不验证此需求,也不为此块提供覆盖率范围模型覆盖到链接的需求已启用“设置”。

为了解决这个块的覆盖率缺失问题,需要更新Throttle Test以更多地使用离散时间积分器块。

在测试管理器的测试浏览器窗格中,选择Throttle Test。在输入下,选择td_throttle_updated.mat作为外部输入文件。这个更新的输入油门数据文件有一些额外的秒测试数据,增加目标速度更积极,同时保持实际速度。

选择cruiseControlRBTCovTests在Test Browser窗格中并重新运行测试。单击范围覆盖导致链接的需求复选框。覆盖率结果显示100%的覆盖率,这表明测试充分地执行了模型。

修改后的测试揭示了设计中的一个问题

修改后的油门测试现在无法验证。故障发生的原因是节流阀增加过于剧烈,超出了测试中指定的所需边界。这表明模型设计存在问题。PI Controller块实现需要更新,以便在所需的限制范围内应用油门,包括当目标速度和实际速度显著不同时。

结论

总之,将覆盖范围确定为关联需求的结果可以帮助揭示测试中的差距。作用域通过评估每个模型元素是否由验证相应需求的测试执行来实现这一点。

相关的话题