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