本文介绍在黑盒测试中常用的等价类划分法和边界值分析法。
1.等价类划分法:
大家都知道,测试中想要穷举所有可能可以说是不能实现的,所以,测试人员希望可以找到一组可以尽可能代表所有可能的数据,用它们来进行测试。等价类划分法就说解决如何用适当的数据子集来代表整个数据集的问题,通过降低测试的数目去合理的覆盖更多的可能数据。
什么是等价类?
等价类是指某个输入域的一个特定的子集合,在该子集合中各个输入数据对于揭露程序中的错误都是等效的。
(1)有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。(即合理的输入)
(2)无效等价类:指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。(即不合理的输入)
举个例子
现在需要测试一个注册功能,输入条件是:
用户名是10位以内数字和大小写字母,
密码是16位以内的数字、大小写字母。
这个例子中有两个输入域,分别是用户名和密码。
对于用户名来说
有效等价类有:
(1)10位以内数字和大小写字母
无效等价类有:
(2)10位以上的数字和大小写字母
(3)含有数字和大小写字母以外的字符
(4)空
对于密码来说
有效等价类有:
(5)16位以内的数字、大小写字母
无效等价类有:
(6)16位以上的数字和大小写字母
(7)含有数字和大小写字母以外的字符
(8)空
使用等价类划分法编写用例的步骤:
1.建立等价类表,列出所有划分的等价类
2.为每一个等价类规定一个唯一的编号
有效等价类 | 无效等价类 | |
---|---|---|
用户名 | (1)10位以内数字和大小写字母 | (2)10位以上的数字和大小写字母 |
(3)含有数字和大小写字母以外的字符 | ||
(4)空 | ||
密码 | (5)16位以内数字和大小写字母 | (6)16位以上的数字和大小写字母 |
(7)含有数字和大小写字母以外的字符 | ||
(8)空 |
3.设计一个新的测试用例,尽可能多的覆盖尚未覆盖的有效等价类
4.重复步骤3,使得所有有效等价类都被测试用例所覆盖
用例编号 | 覆盖等价类 | 操作说明 | 输入数据 | 预期结果 | 实际结果 |
---|---|---|---|---|---|
1 | (1)(5) | 输入用户名和密码,点击注册 | 用户名=“abc123” 密码=“abc123” | 注册成功 |
5.设计一个新的测试用例,只覆盖一个无效等价类(除覆盖无效等价类的输入域外其他输入都是有效的)
6.重复步骤4,使得所有无效等价类都被测试用例所覆盖
用例编号 | 覆盖等价类 | 操作说明 | 输入数据 | 预期结果 | 实际结果 |
---|---|---|---|---|---|
2 | (2) | 输入用户名和密码,点击注册 | 用户名=“abcdefg1234567” 密码=“abc123” | 注册失败 | |
3 | (3) | 输入用户名和密码,点击注册 | 用户名=“abc123@!” 密码=“abc123” | 注册失败 | |
4 | (4) | 输入用户名和密码,点击注册 | 用户名=“” 密码=“abc123” | 注册失败 | |
5 | (6) | 输入用户名和密码,点击注册 | 用户名=“abc123” 密码=“abcdefghi123456789” | 注册失败 | |
6 | (7) | 输入用户名和密码,点击注册 | 用户名=“abc123” 密码=“abc123_。” | 注册失败 | |
7 | (8) | 输入用户名和密码,点击注册 | 用户名=“abc123” 密码=“” | 注册失败 |
1.边界值分析法:
实践证明,程序往往在输入输出的边界值上出错。
边界值分析法就是在某个输入输出变量范围的边界上,验证系统功能是否正常运行的测试方法。边界值分析法常被看作等价类划分法的一种补充,常常两者结合在一起使用。
(1)如果输入条件规定了数值的范围,那么取边界值和刚好超出边界的值进行测试,如输入条件规定为1-9,那么测试1、9、0、10
(2)如果输入条件规定了值的个数,那么取最大个数、最小个数、比最大值多一个、比最小值少一个的值进行测试,如上面的用户名输入条件是10位以内的数字和大小写字母,那么测试10位、1位、11位、0位的用户名
计算机的数值运算都是有限制的,有时候会出现溢出的情况,这也是需要检验的。
补充说明,边界值分析法还有三个概念:
(1)上点:边界上的点,开区间则上点在区间外,闭区间则上点在区间内
(2)内点:区间内任意一点都是内点
(3)离点:离边界最近的点,开区间则离点在区间内(边界往里一个点),闭区间则离点在区间外(边界往外一个点)
对于输出域的测试与输入域的类似,也是分析等价类和边界值,区别就在于需要从输出结果倒推输入的数据来编写测试样例。
本文部分参考
软件测试方法和技术(第3版)》朱少民主编 清华大学出版社
百度百科相关词条