主要内容

基于要求的测试测试覆盖范围

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

该示例显示了对链接需求的范围覆盖结果如何揭示不充分的需求链接和测试差距。它还展示了如何增加覆盖率。

该示例中的模型是Cruisecontrolrbtcove示例,表示巡航控制系统。此模型实现并链接到需求。已为此示例创建了测试文件。

打开巡航控制模型

Cruisecontrolrbtcove示例

查看链接要求

此巡航控制系统的要求已在Simulink要求编辑器中捕获。要查看要求,请使用金宝appslreq.open('cruiseControlRBTCovReqs.slreqx')

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

使用sltestmgr打开测试管理器。

点击打开并选择cruiseControlRBTCovTests.mldatx。已经编写了测试以验证模型行为是否满足指定的要求。他们也被设置为记录决策和条件覆盖范围。展开覆盖设置以查看所选指标。

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

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

运行测试。

在测试完成运行时,在结果和工件窗格中单击结果。请注意,报告测试通过并报告100%汇总覆盖范围。

打开考试结果的范围,以连接要求

单击结果和工件窗格中的顶级结果。然后,在聚合覆盖结果窗格中,单击该范围覆盖结果导致链接要求复选框。范围结果意味着每个测试仅对实现该测试验证的要求的相应模型元素贡献覆盖范围。范围检查模型元素由预期的测试用例涵盖。自动更新的覆盖结果现在显示分别为92%和76%的决策和执行的汇总覆盖范围。

查看模型的覆盖结果

单击分析模型列中的型号名称,突出显示模型中的覆盖范围并显示覆盖范围详细信息。

在模型中,如果要求表未显示在模型下方,请通过单击模型画布的右下角的透视图,然后单击“要求”。

打开控制器子系统。没有100%覆盖率的块显示为红色。两组常量块和求和块未链接到需求,从未执行过。

链接块到要求

在这种情况下,缺失的覆盖范围表示链接的不足。这些常量和总和块是实现增量和递减要求所必需的,并且应该与适当的要求相关联。

在“需求”窗格的表中,展开CruiseControl-BtcovReqs。右键单击上常数块并选择要求>在需求浏览器中的选择链接。然后,单击“要求”表中的增量要求。重复此为上总和块。

对于较低的常量和和块,重复链接步骤,但链接到递减要求。

增加特定测试的覆盖率

打开PI控制器,然后单击离散时间Integrator块。覆盖细节显示符合事实的通过增量测试(T4)而不是油门测试(T6)来执行上限的决定。由于该块是节气门要求的实现的一部分,因此应该通过节气门测试来测试,这验证了节气门要求。递增测试不验证此要求,而且当该块时没有贡献范围模型覆盖范围链接要求设置已启用。

要解决此块的缺失覆盖范围,需要更新节气门测试以更多地锻炼离散时间集成器块。

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

选择CruiseControlrbtcovtess.在测试浏览器窗格中,然后重新运行测试。单击范围覆盖结果导致链接要求复选框。覆盖率结果显示100%覆盖率,这表明测试充分执行了模型。

修改测试显示了设计中的问题

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

结论

总之,范围覆盖结果与链接要求可以帮助揭示测试中的差距。范围通过评估通过验证相应要求的测试来锻炼每个模型元素来完成此操作。

相关话题