等价类划分

等价类划分,指的是一种典型的、重要的黑盒测试方法。其就是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现合理的覆盖,以此来发现更多的软件缺陷。

概述

等价类划分法将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例进行合理的分类,测试用例由有效等价类和无效等价类的代表组成,从而保证测试用例具有完整性和代表性。等价类划分法是一种系统性的确定要输入的测试条件的方法。等价类划分不仅可以用来确定测试用例中的数据的输入输出的精确取值范围,也可以用来准备中间值、状态和与时间相关的数据以及接口参数等。

等价类相关基本概念

有效等价类:指对于程序规格说明来说,是合理的、有意义的输入数据构成的集合。利用有效等价类可以检验程序是否实现了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个,根据系统的输入域划分若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,等价类是输入域的集合。

无效等价类:和有效等价类相反,无效等价类是指对于软件规格说明而言,没有意义的、不合理的输入数据集合。利用无效等价类,可以找出程序异常说明情况,检查程序的功能和性能的实现是否有不符合规格说明要求的地方。

弱一般等价类:  基于单缺陷假设,只针对有效等价类中进行用例设计,不针对无效等价类进行用例设计。也就是用例仅覆盖正常场景。这里描述的所谓的“弱”主就是指基于单缺陷假设,“一般”是指仅考虑有效等价类的覆盖,也就是正常场景。

强一般等价类:基于多缺陷假设,覆盖每个有效等价类进行用例设计。不针对无效等价类进行用例设计。所谓的“强”指的是基于多缺陷假设,也就是1个用例中考虑多个等价类中取值的组合。

弱健壮等价类:基于单缺陷假设的健壮性测试,同时考虑覆盖有效等价类和无效等价类。所谓的“健壮”是指同时覆盖了有效等价类,也就是异常场景。一个程序只有同时能够处理各种异常的输入,才能称之为程序具有健壮性。

强健壮等价类:基于多缺陷假设的健壮性测试。同时考虑覆盖有效等价类和无效等价类。

这里描述的概念后续都会通过实际案例进行讲解,如果不能马上理解,可以继续先往下看,最后再来看这些基本概念,可能就更容易明白。

等价类划分方法和原则

划分等价类最重要的是:集合的划分,划分为一组互不相交的子集,而子集的并集是一个集合。下面根据不同场景举例等价类划分的方法和原则。

(1)在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。假设输入学生成绩范围为[0,100],则有效等价类为[0,100],无效等价类为成绩<0和>100。

(2)在规定了输入数据的一组值中(假定有n个值),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。假设程序选项输入为1、2、3三个选项。则有效等价类1、2、3,无效等价类为非整数值1/2/3。

(3)在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。假设程序规定输入为非0的正整数。应该充分考虑是否可以拆分为单一的子规则,然后得到从不同角度违反规则的无效等价类。该例子起码可以拆分为非0、数字、正数、整数4个子规则。至少每一个子规则对应1个无效等价类。即0、字符串、负数、小数,设置可以挖掘出输入为空的隐含等价类。

(4)在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。假设程序设定连续输入密码错误次数最多为3次。则有效等价类为小于等于3次,无效等价类为大于3次。

(5)在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,则应将该等价类进一步地划分为更小的等价类。假设程序为测试输入日期的有效性,初步有效等价类是Month=[1,12],Day=[1,31],可是考虑到闰年、闰月、长月、短月等。需要进一步细分,当然这还涉及到年月日组合的问题。

等价类表转换测试用例方法

(1)按照输入条件、有效等价类、无效等价类、 建立等价类表,列出所有划分出的等价类。

(2)为每一个等价类规定一个唯一的编号。

(3)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。

(4)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值