目录
黑盒测试定义和分类
黑盒测试就是在不关心程序内部逻辑和实现的情况下,只根据程序的需求规格说明,检查程序的输出是否符合预期的测试方法。
黑盒测试方法主要有以下几种:
基于数据的测试:
- 等价类划分
- 边界值分析
- 正交实验测试
基于流程的测试:
- 场景法
- 因果图
- 判定表
- 状态转移图
- 错误推测法
基于数据的测试
等价类划分
1.定义
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试用例设计方法。
2.划分等价类
等价类是指某个输入域的子集合。在该子集合中,程序内部对该集合中所有数据的操作是相同的。因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分可有两种不同的情况:有效等价类和无效等价类。
- 有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。 - 无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要有一定的容错性,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准
- 分而不交:无冗余
- 和而不变:无漏洞
- 类内等价:以一代全
4.划分等价类的方法
- 在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;有效等价类是[1,100]。无效等价类是(-∞,1)和(100,+∞)。
- 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类;
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
- 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
- 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类。
5.选择覆盖标准
在确立等价类之后,还应当根据实际情况选择合适的覆盖标准来设计测试用例。
对无效等价类来说,应当使用单缺陷原则来设计测试用例,即一次只引入一个无效等价类。这种方式易于缺陷的定位。
对有效等价类来说,覆盖标准有很多,主要可以分为:
- 强覆盖:设计的测试用例应当覆盖所有等价类的所有组合(笛卡尔积)。如果有如果有2个输入,每个输入有3个等价类,则应当有2x3=6个测试用例。
- 弱覆盖:设计的测试用例对于每种等价类只需要覆盖一次。
- 组合覆盖:在所有可能输入条件中,选取出k个输入条件进行组合测试。正交表测试法就是组合覆盖的一种情况。
6.当输入存在关联时需要注意
当输入存在关联时,我们可以简单的使用独立性假设,即假设输入不存在关联设计等价类,这样设计出的等价类是无漏洞的,但是它是有冗余的。因为在去除输入的关联性来设计等价类时,相当于扩大了输入域。所以,在输入存在关联时,最好要考虑输入的关联性,然后进行等价类划分。或者在使用独立性假设进行等价类划分后,采用决策表去除冗余。
7.对输出也要进行等价类测试
对输入划分了等价类不等于对输出也划分了等价类,因此在实际操作过程中,我们也应当对输出进行等价类划分,从输出推测输入进行测试。
边界值分析
1.定义
边界值分析就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2.边界值分析方法的考虑
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
3.边界值分析法步骤
- 确定有几个输入
- 确定每个输入的边界
- 取边界值的一个领域
- 在领域内取2~3个数据
- 基于单边界原则(即一次只测试一个输入数据的一个边界)来设计测试用例
4.常见的边界值举例
- 对16-bit 的整数而言 32767 和 -32768 是边界
- 屏幕上光标在最左上、最右下位置
- 报表的第一行和最后一行
- 数组元素的第一个和最后一个
- 循环的第 0 次、第 1 次和倒数第 2 次、最后一次
5.对输出也要进行边界值分析
正交实验测试
1.定义
依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。
其实正交实验测试其实是等价类测试的一种特殊情况,他就是将等价类测试的覆盖准则设定为组合测试情况下的一种测试方法。而且恰好这种组合测试中,每个输入的可能取值个数是相同的。
2.特点
测试数据均匀分散,每个输入的每种取值相较于其他取值的出现次数都是相同的。因而保证了数据的代表性。
3.目的
正交实验测试的主要目的就是在减少测试用例的同时,保证测试用例有一定代表性。
4.步骤
- 确定实际输入的个数(因子数 )
- 根据等价类划分的方法,确定在所有的Q中最大的可能取值个数(水平数 )
- 利用查表得方法,获取 最小的正交表 ,其中 , ,且
- 对实际输入和取值进行相应修改以满足正交表
- 根据正交表获得测试用例
5.和组合测试的区别
正交实验测试本质就是组合测试,它是在每个输入的可能取值个数都相同时,可以达到无漏洞无冗余的组合测试。然而在每个输入的可能取值个数不同时,正交实验测试是有冗余的。为了减少这种冗余,可以采用启发式算法,如AETG、IPO等算法进行组合测试用例的生成。
在该网址可以获取很多组合测试用例生成的工具:
http://www.pairwise.org/index.asp