有没有想过这样一个问题,即使测试一个很简单的应用程序时,要用所有可能的输入进行测试也通常是不可能的,无论使用手动测试还是自动化测试。
比如有这样一个应用:
我们有一个应用程序,界面上有两个字段年份和月份,用户可以输入年份和和月份去查询当年当月的消费明细。年份的范围到从2000年到至今,月份范围在1到12月。
如果现在是2019年9月,那么所有有效输入的测试用例个数就是(2019 - 2000) * 12 + 9 = 237。采取手动测试,执行完所有测试用例肯定让测试工程师测到怀疑人生。
然而除了有效输入,无效输入也必须考虑在测试范围内,那么针对这个应用,它是无穷尽的,2020、2021、2022...你无法穷举所有输入。
所以答案就是,我们应该去寻找一把钥匙——用最少的输入去覆盖最全面的测试。为了打开这所大门,一种测试方法被引入,那就是等价类划分。
等价类划分是最典型的软件测试技术,它把程序输入划分成若干集合,然后从中选取代表性数据作为测试用例。集合中的一个数据相对集合中的其他数据对于程序输出效果都是一样的,什么意思呢?拿前面的例子来说,无论你输入2000、2001、2002还是2019,这些数据对于程序的效果都是相同的。
等价类划分分为两种:有效等价类 和 无效等价类
有效等价类,顾名思义,有效等价类的输入数据对于程序的定义说明来说是合理的,比如2000。利用有效等价类可以检验程序是否按照产品定义去设计。
无效等价类,和有效等价类相反,其中的输入数据是异常和不合理的,比如1999,它可以检验程序的健壮性和可靠性。
套路
我们再举例一个应用程序的例子,这是一个我们再熟悉不过的新用户注册功能,页面上需要用户填写用户ID和密码,用户ID只能包含字母和数字,最长字符大小不超过10,密码只能包含字母和数字,长度最小6,最大10。
那么我们如何通过等价类划分去设计我们的测试用例呢?
1.建立等价类表,为每个等价类规定一个唯一的编号。
2.设计测试用例,尽可能覆盖未被覆盖的有效等价类,重复这个步骤,直到所有有效等价类被覆盖。
3.设计测试用例,尽可能覆盖未被覆盖的无效等价类,重复这个步骤直到所有无效等价类被覆盖。

测试用例

小贴士
等价类确定的原则
a.输入条件是布尔类型,那么显然意见,可以确定只有一个有效等价类和一个无效等价类,不是true就是false啦。
b.输入数据必须遵守规则,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
c.输入数据是一组值(n个),并且程序对每一个输入值分别处理,可确立n个有效等价类和一个无效等价类。
d.在已划分的等价类中,各元素在程序处理中的方式不同,应再将该等价类进一步划分为更小的等价类。
e.输入条件规定了取值范围,可确立一个有效等价类和两个无效等价类。
等价类划分的好处
拥有等价类可以在不影响测试覆盖率或测试质量的情况下大大减少测试用例的数量。由于测试数据集的减少,它有助于减少整个测试执行时间。
它可以应用于所有级别的测试,如单元测试、集成测试、系统测试等。
等价类划分的缺点
它不考虑边界值的条件。
等价类的识别很大程度上依赖于测试人员的专业知识。
网友评论