![310cdf121e4b7d80e7c89082bc4de385.png](https://i-blog.csdnimg.cn/blog_migrate/1a3eca5db19a509a891493dcf3dd6699.jpeg)
上一篇文章功能安全实践 | CTM方法实践步骤01介绍了软件测试分类树CTM实践的前期内容,本文首先对上篇文章中关于等价类划分的相关内容做一些补充。
a,文章中的等价类并不是结果一样,比如,对于数值计算来说,所谓等价类并不是说同一个等价类中所有输入计算的输出都是一样的(事实上绝大多数结果都是不同的)。
b,等价类的划分需要具备完整性不能遗漏值。测试过程中用到的所有值都需要分配给一个类。
c,等价类的划分需要保证独立性。说白了就是与测试相关的某一个值只能归为一个类,而不是多个类。这个定义与高等数学上映射的定义很像。
下面是一个等价类划分的具体例子:制动器高温报警
假设我们需要测试某个车型仪表上的制动器高温报警提醒。制动器高温报警提醒的判断所用的温度信号来自ESP内部的温度模型算法。这个算法计算的温度范围是-40℃到550℃。当温度低于300℃时,高温报警系统关闭,当温度高于300℃时高温报警打开。
很显然对于制动高温报警提醒来说,温度是唯一的测试相关方面。为了合理的保证测试效果,我们并不希望把每个相关的温度都测试一遍。所以,我们需要根据等价类划分原则对数据进行等价分类。
首先需要进行的最佳实践是找出可能的无效输入值。在我们这个例子中汽车启动或者总线断路等都会导致一个无效值。因此,我们首先需要将输入温度划分为有效和无效两个大类。无效值包括温度太高(高于550摄氏度)和温度太低(低于负40摄氏度)。在高低温之间的是有效值。在有效值中,我们可以根据制动器高温报警的功能描述再进一步划分出两组,即温度报警打开(300℃-550℃)和温度报警关闭(-40℃到300℃)。如下图所示,我们至少可以分出4个等价类进行测试。
![71c7be96081bb5f53547d75a92d92f14.png](https://i-blog.csdnimg.cn/blog_migrate/67e4883bbb0365b9b6378628fbb71b38.png)
前面文章中介绍过,等价类划分好需要进行进一步的等价类优化,还以本文中的制动器高温报警为例子进行分析。在有效值的这两组组,分类还不够详细。为什么这么说,主要是因为按照等价类方法论,我可以在关闭报警这一组选择任何一个值进行测试。比如,我们选择了3℃,那么就会存在小于0的负温度没有被测试到的问题。同样对于报警打开的这一组,我们可以选择301℃,但是,对于衰退温度500℃以上的温度也缺少了对应的测试案例,所以我们需要进一步的分组优化。如下图所示;
![e1c75f3a41bf0af21cec63c88f3b7e27.png](https://i-blog.csdnimg.cn/blog_migrate/67034fa7202011f417b9703ee71f59fa.jpeg)
最终的分组可以将原来4组优化后,分为现在的6组。进行分组优化所用的知识就与个人的经验以及对系统的认识息息相关了。
下期预告:
功能安全实践 | CTM中边界值方法实践
介绍CTM中包含的边界值方法