Pat Canny,MathWorks
从R2020a开始,您可以使用Simulink覆盖率将覆盖率结果限定到链接的基于需求的测试™. 此设置确定聚合覆盖率结果的范围,以便每个测试仅为实现该测试验证的需求的相应模型元素提供覆万博1manbetx盖率。这提高了预期测试用例覆盖模型元素的信心。本视频将向您展示如何使用此新设置。
在执行基于需求的测试时,您可以使用Simulink覆盖率测量模型的测试覆盖率,以确定您的设计在模拟过程中经过了多少测试。万博1manbetx
为了简单起见,让我们把与相同需求相关联的设计元素和测试用例称为“兄弟”。
模型覆盖结果应该根据需求进行分析。如果某个设计元素从未被同类测试执行过呢?这可能是测试不完整、不正确的可跟踪性或需求缺失的标志。
使用MAT万博1manbetxLAB Release 2020a中的Simulink覆盖率,您可以将覆盖率结果集中显示为仅显示兄弟测试收到的覆盖率。我们将这种“范围界定”称为对需求的覆盖。
让我们通过一个示例进行演示。
这款车型是一款简单的巡航控制系统的一部分。该模型计算发动机控制器的油门需求以及目标转速。该模型使用来自方向盘巡航控制开关的多个布尔输入、一个布尔制动输入和车速。
我们对这个设计有几个需求,这些需求是用Simulink requirements管理的。万博1manbetx
我们还有六个与需求相关联的测试用例,它们使用Simulink测试进行管理。万博1manbetx
让我们在Simulink测试中运行测试套件。万博1manbetx
让我们看看结果。
我们的六项测试都通过了,我们已经实现了决策、条件和执行的100%覆盖率。这太棒了!我们现在结束了吗?
不完全是。
让我们确保我们从测试用例中获得的覆盖率与同级需求相关联。
我们可以通过在测试管理器中点击“范围覆盖结果到链接需求”来做到这一点。
万博1manbetxSimulink覆盖率使用需求、设计和测试用例之间的可追溯性数据来过滤相应的覆盖率。
看来我们失去了一些保险!让我们打开模型来了解更多。
缺少覆盖率的模型元素用红色突出显示。
看起来用于递增和递减逻辑的常量和和块缺少覆盖。让我们点击其中一个求和块来了解更多信息。
块缺少执行覆盖率。这是因为此块没有实现链接。我们可以通过打开需求透视图来确认这一点。
这两个块应该链接到INCREMENT需求。我们可以在Requirements浏览器中选择INCREMENT需求,然后右键单击块并添加链接。一旦我们保存了模型,让我们回到Test Manager并重新运行测试套件,看看这是如何改进我们的覆盖率的。
那很容易!
现在让我们看看PI控制器,它现在似乎只有83%的决策覆盖率。
看起来PI控制器子系统可以追溯到一个需求和一个标记为T6的测试用例。
离散时间积分器块有一个决策目标缺失。
积分结果从来没有等于或超过上限,这意味着我们从来没有测试的积分输出的全范围。
但是等等——看起来测试用例T4达到了上限。让我们点击T4了解更多信息。
测试用例T4是增量测试,它与增量需求相关联。
我们可以用几种不同的方法来解决这个差异:
1)我们可以将Increment测试用例与Throttle需求联系起来。这在这个场景中是没有意义的,因为增量测试用例的预期结果与Throttle需求没有任何关系。
2) 我们可以创建一个需求,定义达到积分器限制时的预期行为。这可能是太多的设计细节。
3) 最后,我们可以修改油门测试输入,以便更积极地使用控制器。在这种情况下,我们可以通过简单地扩展现有的油门测试用例并在测试结束时增加设定速度来实现这一点。这是最好的选择,因为预期结果不应该改变;我们仍在验证油门需求定义的行为。
当我们重新运行油门测试时,测试失败,因为油门变化率超过了要求。这是由于设计上的缺陷造成的。
这个例子展示了如何使用覆盖范围到需求的结果来揭示不完整的需求可追溯性和不完整的测试用例。
单击下面的链接自己运行这个示例,或者访问mathworks.com上的Simulink Coverage产品页面,请求试用。万博1manbetx
你是说“与需求相关联的测试用例”吗?
我对如何思考缺失的cov的框架有点不同,所以我们见面时再深入讨论这一部分。
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。