上一篇文章功能安全实践 | CTM方法实践步骤01介绍了软件测试分类树CTM实践的前期内容,本文首先对上篇文章中关于等价类划分的相关内容做一些补充。
a,文章中的等价类并不是结果一样,比如,对于数值计算来说,所谓等价类并不是说同一个等价类中所有输入计算的输出都是一样的(事实上绝大多数结果都是不同的)。
b,等价类的划分需要具备完整性不能遗漏值。测试过程中用到的所有值都需要分配给一个类。
c,等价类的划分需要保证独立性。说白了就是与测试相关的某一个值只能归为一个类,而不是多个类。这个定义与高等数学上映射的定义很像。
下面是一个等价类划分的具体例子:制动器高温报警
假设我们需要测试某个车型仪表上的制动器高温报警提醒。制动器高温报警提醒的判断所用的温度信号来自ESP内部的温度模型算法。这个算法计算的温度范围是-40℃到550℃。当温度低于300℃时,高温报警系统关闭,当温度高于300℃时高温报警打开。
很显然对于制动高温报警提醒来说,温度是唯一的测试相关方面。为了合理的保证测试效果,我们并不希望把每个相关的温度都测试一遍。所以,我们需要根据等价类划分原则对数据进行等价分类。
首先需要进行的最佳实践是找出可能的无效输入值。在我们这个例子中汽车启动或者总线断路等都会导致一个无效值。因此,我们首先需要将输入温度划分为有效和无效两个大类。无效值包括温度太高(高于550摄氏度)和温度太低(低于负40摄氏度)。在高低温之间的是有效值。在有效值中,我们可以根据制动器高温报警的功能描述再进一步划分出两组,即温度报警打开(300℃-550℃)和温度报警关闭(-40℃到300℃)。如下图所示,我们至少可以分出4个等价类进行测试。