在软件测试中,测试用例的设计是一件很难的事情。你可以拿任何一个公司的两个不同人员就同一功能点所写的测试用例来看,肯定会发现有所不同,这是为什么呢?一是着眼点不一样,二是经验不同,三是思维的问题了。其实你可以看到,有的人写的用例简单明了,有的人写的用例却是复杂冗长,出现这种情况并不奇怪,因为测试用例本身的设计方法与技巧很多都是从经验中来的,有些形成了理论,而有些还形成不了能够指导测试活动的理论。
        有很多同学曾经说,这个等价类方法太简单了,怎么能作为一种方法呢?测试用例技术最关键的问题是---用最少的用例去发现更多的问题。当我们要测试一个软件时,你准备花费多长时间去完成呢?从时间成本上来讲,越短当然就越好。
        我举个例子:比如说腾讯公司的即时聊天工具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个进行测试,如果功能能实现,那么你再随机选这个类别里其他的数据,功能也能实现;如果功能不能实现,你再随机选这个类别里的其他数据,功能也不能实现。也就是说类别里的数据是等价的。
        等价类划分法是软件测试经验的积累,可以提高测试的效率。