有很多同学曾经说,这个等价类方法太简单了,怎么能作为一种方法呢?测试用例技术最关键的问题是---用最少的用例去发现更多的问题。当我们要测试一个软件时,你准备花费多长时间去完成呢?从时间成本上来讲,越短当然就越好。
我举个例子:比如说腾讯公司的即时聊天工具QQ:
关于QQ用户登录框,你该怎么去考虑测试用例的设计呢?当然,我们要从两个方面去考虑:一是QQ帐号,二是QQ密码。就拿QQ帐号这一个输入框,你怎么去考虑进行测试用例的设计?
目前,一个QQ服务器就允许有10万以上个用户同时登录进行即时聊天,有多少个QQ帐号啊?现在一个人还不只一个QQ号呢,呵呵。
如果有很多QQ帐号的话,怎么进行测试呢?如果只测试几个,覆盖率不足;全部都测试一遍,不可能有那么长时间,而且太多了也不好实施。
所以,QQ帐号的测试就陷入了僵局?我们先分析一下QQ帐号:由6-10位自然数构成。一是位数长度有一定的限制,二是类型是固定的,由0-9自然数构成。要想测试覆盖全面,又要节省时间,最好的办法是尽量简化测试用例的设计。通过对以上QQ帐号的分析,可以看到有效的帐号有它自己的特点:长度与类型要符合要求,这样只要在腾讯公司的服务器上申请了帐号,就可以进行即时通信了。
那么,这样就有一个解决问题的方法了:进行类别的划分。我们知道软件的功能测试要进行两个方面的测试:通过测试和失败测试。要进行通过测试的话,帐号要符合规范,要进行失败测试的话,就要破坏帐号的规范。好,这样的话,QQ帐号的测试我们就可以进行了。
把QQ帐号进行分类:有效的和无效的。
有效的:(1)长度在6-10位之间
(2)类型是0-9自然数
无效的:(1)长度小于6
(2)长度大于10
(3)负数
(4)小数
(5)英文字母
(6)字符
(7)特殊字符
(8)中文
(9)编程语言中的转义字符
(10)空
这样就可以看出来,有效的当中只要取1或几个就可以通过测试了,在无效的当中取1或几个就可以进行失败测试了,所以这样的方法很简单、高效。
这种方法就是等价类划分法。也就是说,在这个类别里你随机选取1个进行测试,如果功能能实现,那么你再随机选这个类别里其他的数据,功能也能实现;如果功能不能实现,你再随机选这个类别里的其他数据,功能也不能实现。也就是说类别里的数据是等价的。
等价类划分法是软件测试经验的积累,可以提高测试的效率。