小酋测试:用例设计之等价类划分法

“世界上有三种人:好人、坏人、不是人。”
你属于哪一种?
这似乎不好回答,因为似乎还应该有“不好不坏”的人,小酋自己就是哒~

用例设计之等价类划分法

那再换一个,人有两种性别:男、女
你属于哪种?

这,我相信大家都能回答?

用例设计之等价类划分法

假如我们现在发明了一台性别检测仪,只要是“”通过它检测,都能判断出其性别。我们应该如何测试机器确实按预期工作?
让所有人都接受其扫描?当前全球人口多达76亿,想想这个数字,作为测试员的我就瑟瑟发抖。

用例设计之等价类划分法

是时候引出我们这章的主题,用例设计方法 等价类划分法 了。

什么是等价类划分法?

等价类划分法就是把输入域的可输入值进行等价性划分(即程序的输入域划分成若干部分(子集)),然后在每一个等价域中取少量的能代表这个等价域的值作为测试用例的输入数据。根据每个等价类值是否对程序有作用,分为有效等价类无效等价类

有效等价类:此类中的值对于我们执行用例的程序来说是有意义且合理的,可以有效的检验程序是否实现了软件需求中预期的功能和性能。

无效等价类:此类中的值正好相反,对程序来说是不合理的、无意义的,输入此类中值程序无法实现相应的功能和性能;但是不是说程序不会对此类中值做出反应,从程序的健壮性来考虑,程序也应该对此类中的值做出正确的反应(即容错处理、异常处理)。

等价类划分的原则:

1、按区间划分

当输入条件已经规定了取值范围(或一段连续的取值时),我们基本可以确定一个有效等价类和两个无效等价类。

举个例子:
当我们对学生成绩进行划分,可以得出其有效值为 [0, 100],无效等价为(-∞,100)、(100,+∞)

2、按数据布尔值划分

在输入条件是布尔值的情况下,可确定一个有效等价类和一个无效等价类。

举个例子:
如果公司门禁系统通过人脸识别检测判断进入的人是员工,则放行。那么有效等价类 (员工),无效等价类 不是(员工)。

3、按数值(集)划分

要规定了输入数据的一组值,如n个(或离散的数据集),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。

用例设计之等价类划分法

举个例子:
如ATM机只支持100、300、500、1000、2000的正整数取款,那么这些数字都是一个有效等价类,而(-∞,100)、(100,300)、(300,500)、(500,1000)、(1000,2000)、(2000, +∞)这些都是无效等价类。

4、按限制条件或规则划分

在规定了输入数据必须遵守的规则情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违背规则)。

举个例子:
注册时输入用户密码,要求密码必须是由数字或字母组成,那有效等价类为“密码是数字和字母的组合” ,无效等价类为“密码包括中文”、“密码包括其它符号”等。 

5、按细分等价划分

在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。

举个例子:
比如一栋高智能的写字楼(里面有多个公司并独立分布在不同的楼层):门禁系统识别来人是大楼里任一公司的员工就放行;进入里面后,又会根据这个员工属于具体哪个公司,从而将其送入对应的楼层。
从大的分类来讲:有效类“写字楼里公司的员工”;无效等价类“不是写字楼里公司的员工”
再细分有效等价类:“X公司的员工”、“Y公司的员工”…… “YY公司的员工”

我们根据上面几条原则将输入域的可输入值进行划分后,就可以在每个等价域中选取少量具有代表意义的值来作为程序执行的输入数据,并开始设计测试用例。

举个例子:
如ATM机只支持100、300、500、1000、2000的正整数取款。
有效等价类输入值:100、300、500、1000、2000  
Case 1:银行卡账户余额充足(钱是个好东西,没钱就不能愉快的进行下去了。括号废话自动忽略^_^),在ATM机中输入金额100,取款成功
……
无效等价类输入值:90、200、600、1100、2100   
Case 1:银行卡账户余额充足,在ATM机中输入金额90,取款失败
……

注意:
①其实我们在设计测试用例时不仅要考虑输入域,还要考虑输出域,输出域的等价类划分和输入域的划分是相同的。
一条测试用例中只对应一个等价类,就好像我们常说的一条测试用例只包含一个测试点一样的。如果你一开始不能分清楚有效等价类和无效等价类,可以先输出等价类表,然后根据等价类表来输出测试用例。

最后,可以考虑开头性别检测仪的测试输入了。把你的答案附上,小酋需要你的帮助,在线等,挺急

用例设计之等价类划分法


小酋测试

(微信扫一扫,有更多精彩等着你哦~)



留言

  1. #1

    测试小酋(2021-01-04 11:34:13)
    @虞晟 Nice!思路清晰,但可以再更进一步,首先搞清楚扫描仪的工作原理是什么? 如根据外貌特征识别,那“测试输入数据”可以考虑女伴男装,男伴女装,假人等,确定扫描特征采样正确。这与我们实际测试工作类似,测一个东西,应该清楚它是如何实现的,这样才能更好的利用测试方法科学合理的设计用例,然后发现更多的问题。

  2. #2

    虞晟(2020-12-30 13:17:03)
    本人测试小白,仅表达个人观点,挑选十个男人,十个女人作为有效等价类,再选择一些动物植物,静态/动态物体等作为无效等价类,在混合到一起进行交叉测试,这样应该能够得到确定性。还望能回复!!! 谢谢!