基于需求的测试的测试覆盖率
此示例显示如何收集实现需求的模型的测试覆盖率。覆盖率是指通过分析模型逻辑的执行程度来确定测试的完整性。对于基于需求的测试,覆盖率结果可以限定在链接需求范围内。通过此范围界定,您可以评估每个模型元素是否被预期的测试用例覆盖。
这个例子展示了如何将覆盖率结果限定到链接需求上,以揭示需求链接不足和测试差距。它还展示了如何增加覆盖率。
本例中的模型是 cruiseControlRBTCovExample
,它代表巡航控制系统。该模型与需求相联系。已经为此示例创建了一个测试文件。
打开巡航控制模型
cruiseControlRBTCovExample
查看链接的需求
该巡航控制系统的需求已被捕获到需求编辑器中。要查看需求,请使用 slreq.open('cruiseControlRBTCovReqs.slreqx')
。
打开测试管理器和测试文件
使用 sltestmgr
打开测试管理器。
点击打开并选择 cruiseControlRBTCovTests.mldatx
。已经编写了测试来验证模型行为是否满足指定的需求。它们还被设立来记录决策和条件覆盖率。展开覆盖率设置以查看所选度量。
每个测试用例都会验证并链接到一个需求。例如,油门测试可验证油门需求。此需求指定当速度与目标速度不同时,平稳应用节气门。测试使用逻辑评估来验证此行为,逻辑评估检查节气门变化率是否在每秒 -1 到 1 弧度之间,如需求描述中所定义。
运行测试并查看覆盖率结果
运行测试。
测试运行完成后,单击“结果和工件”窗格中的“结果”。请注意,测试通过并且报告了 100% 的聚合覆盖率。
打开将测试结果范围限定到链接需求
单击“结果和工件”窗格中的顶层结果。然后,在“聚合覆盖率结果”窗格中,点击“Scope coverage results to linked requirements
”复选框。确定结果范围意味着每个测试仅为实现该测试验证的需求的相应模型元素提供覆盖率。范围检查模型元素是否被预期的测试用例所覆盖。覆盖率结果会自动更新,目前显示决策和执行的总体覆盖率分别为 92% 和 76%。
查看模型中的覆盖率结果
点击分析模型列中的模型名称,可以突出显示该模型中的覆盖率结果,并显示覆盖率报告详细信息。
在模型中,如果需求表未显示在模型下方,请单击模型画布右下角的“透视”视图,然后单击“需求”来打开它。
打开控制器子系统。覆盖率未达到 100% 的模块将显示为红色。两组 Constant 和 Sum 模块与需求无关,也从未执行过。
将区模块链接到需求
在这种情况下,缺失的覆盖率表明需求链接不足。这些 Constant 和 Sum 模块对于实现 INCREMENT 和 DECREMENT 需求是必需的,并且应该与相应的需求相联系。
在需求窗格的表中,展开 cruiseControlRbtCovReqs
。右键单击上方的 Constant 模块并选择需求 > 链接到需求浏览器中的选择。然后,点击需求表中的 INCREMENT 需求。对上方的 Sum 模块重复此操作。
对于较低的 Constant 和 Sum 模块,重复链接步骤,但链接到 DECREMENT 需求。
增加特定测试的覆盖率
打开 PI 控制器并点击 Discrete-Time Integrator 模块。覆盖率详细信息显示,上限的 true
决策是由增量测试 (T4) 执行的,而不是节流测试 (T6)。由于该模块是 THROTTLE 需求实现的一部分,因此应该通过 Throttle Test 进行测试,以验证 THROTTLE 需求。当启用 Scope model coverage to linked requirements
设置时,增量测试不会验证此需求,也不会为该模块提供覆盖率。
为了解决该模块缺失的覆盖率问题,需要更新油门测试以更多地锻炼 Discrete-Time Integrator 模块。
在测试管理器的测试浏览器窗格中,选择 Throttle Test。在输入下,选择 td_throttle_updated.mat
作为外部输入文件。这个更新的输入节气门数据文件有一些额外的秒的测试数据,可以在保持实际速度的同时更积极地提高目标速度。
在测试浏览器窗格中选择 cruiseControlRBTCovTests
并重新运行测试。单击 Scope coverage results to linked requirements
复选框。覆盖率结果显示覆盖率为 100%,这表明测试充分执行了模型。
修订后的测试揭示了设计中的问题
修改后的油门测试现在无法通过验证。发生故障的原因是节气门增加得太猛,超出了测试中规定的要求范围。这表明模型设计存在问题。需要更新 PI Controller 模块实现以在所需的限制内应用节气门,包括当目标速度和实际速度存在很大差异时。
结论
总之,将覆盖率结果范围限定到链接需求可以帮助揭示测试中的差距。范围界定通过评估每个模型元素是否经过了验证相应需求的测试来实现这一点。