等价类划分的目的就是为了在有限的测试资源的情况下,用少量有代表性的数据得到比较好的测试效果。有有效等价类盒无效等价类。有效等价类中的数据代表的是一组符合需求文档的正确的有意义数据。无效等价类则正相反。我们来看几个例子来理解怎样划分等价类(注意我不会用书中的例子,而是举实际我们遇到的一些软件或者网页上的例子)
a) 一个取值范围的情况 (1个有效等价,2个无效等价)
大家看到密码输入框的限制是密码长度>=4。但是其实还是有个隐含的条件。也就是密码字段在数据库中的限制,当然可以用varchar,但是一般用固定长的字符类型的,比如20。所以有效等价类:密码长度大于等于4小于等于20。无效等价类密码长度小于4或者大于20。所以我们从有效等价类中挑选长度为4的密码形成一个test case。从无效等价类中挑选3,21作为2个test case。(注:也许大家想加入20这个case,但是这个是边界值分析考虑的事情了)
b) 布尔型取值(1个有效等价,1个无效等价)
对于验证码我们很熟悉了,其实是一种布尔型取值。True或者False。这里就是一个有效等价类和一个无效等价类。4828和4827分别作为test case
c) 独立的N种取值(n个有效等价,1个无效等价)
这个是windows中Notepad的选择字体的对话框,其中Font style。可以选择Regular, Italic, Bold, Bold Italic。注意他们可能都是独立的。(注意我这里用独立是因为没有需求文档,我不清楚bold Italic是否是独立的,暂且算作独立)。那么有效等价类是4个,无效等价类是1个,既是非这些里面的取值。
d)等价类的划分可能是渐进的。
比如初一看两个1个有效等价类既是有效的email和1个无效等价类一个无效的email。但是如果有更多的要求。比如注册过的email是不允许的,那么无效等价类变为2个。