赞
踩
黑盒测试又称功能测试,它是通过一系列测试用例来检测软件的功能是否正常。在黑盒测试中,我们把软件看成是一个黑盒子(不关注内部的实现原理),通过关注软件的输入输出结果,来判断软件是否存在问题。
黑盒测试主要有以下几种方法:
等价类划分法将程序所有可能输入的数据划分为若干部分(子集),然后从每个子集中选取具有代表性的数据作为测试用例,测试用例包含有效等价类和无效等价类,二者间的区别为:
等价类 | 输入 | 关注点 |
---|---|---|
有效等价类 | 合理的、有意义的 | 功能和性能 |
无效等价类 | 不合理的、无意义的 | 异常处理 |
例如一个Web登录界面中,需要输入用户的邮箱,那么有效等价类可以理解为符合邮箱格式规范的字符串集合,例如123@126.com
、10000@qq.com
等,无效等价类可以理解为不符合邮箱格式规范的字符串集合,例如123456
、abbbc@@
等字符串。
等价类划分法是一种典型的、常用的测试方法。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。软件不能只接收合理的数据,还要经受意外的考验,接受无效的或不合理的数据,这样软件才能具有较高的可靠性。
等价类划分主要有4种方法:
按双边区间划分
如果输入条件规定了取值范围,或者值得个数,则可以确定一个有效等价类和两个无效等价类。
例如一个用户的ID的取值范围是
[
1000
,
9999
]
[1000,9999]
[1000,9999] ,那么有效等价类为区间
[
1000
,
9999
]
[1000,9999]
[1000,9999] 中所有得ID,无效等价类为
(
−
∞
,
1000
)
(-∞,1000)
(−∞,1000) 和
(
10000
,
+
∞
)
(10000,+∞)
(10000,+∞)
按取值划分
如果规定了输入数据的一组值(假定n
个),且程序要对每一个输入值分别进行处理的情况下,可确定n
个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。
例如,程序输入x
取值于一个固定的枚举类型
{
1
,
3
,
7
,
10
}
\{1,3,7,10\}
{1,3,7,10},且程序中对这4个数值分别进行了处理。那么有效等价类为
x
=
1
,
3
,
7
,
10
x=1,3,7,10
x=1,3,7,10,无效等价类为
x
≠
1
,
3
,
7
,
10
x≠1,3,7,10
x=1,3,7,10。
按单边区间划分
如果输入条件规定了输入值的集合,这时可确立一个有效等价类和一个无效等价类。
例如,在头像上传API中,规定头像大小不能超过100KB,那么有效等价类为小于等于100K的图片,无效等价类为大于100K的图片。
按限制条件/规则划分
如果规定了输入数据必须遵守的规则或限制条件,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
例如规定了输入数据为非0正整数,那么有效等价类为非0的正整数,无效等价类为0、字符串、负数、小数等。
等价类测试的类型按照测试用例的完整性划分,具体可以划分为两个大类:弱等价类测试,强等价类测试。其中,强等价类测试可以再划分为弱一般等价类测试和弱健壮等价类测试。强等价类测试可以划分为强一般等价类测试、强健壮等价类测试。
所谓弱,是指从各个等价类中选取值时只考虑等价类自身,查出的缺陷属于“单缺陷”,即单一因素造成的缺陷。所谓强,是指考虑了等价类之间的相互影响,查出的缺陷属于多种因素造成的“多缺陷”。
从测试用例的选型上来看:
在“一般”和“健壮”上:
综上所述,这四种等价类测试类型可以理解为:
弱一般等价类测试
单缺陷假设(取值不组合),不考虑异常区域。在设计测试用例上:
1、对于有效输入,取每个有效等价类的一个值
2、对于无效数据,不考虑(不取无效等价类)
强一般等价类测试
多缺陷假设(取值组合),不考虑异常区域测试用例的设计时需要考虑等价类之间的相互作用,选取等价类的笛卡尔积的元素值来实现。在设计测试用例上:
1、对于有效输入,考虑有效等价类之间的组合
2、对于无效输入,不考虑
弱健壮等价类测试(传统的等价类测试类型)
基于单缺陷假设,考虑无效等价类,选取的测试用例要覆盖每一个有效等价类和无效等价类,但时不能同时覆盖两个无效等价类。
强健壮等价类测试
每个无效等价类和有效等价类的组合都要覆盖到,考虑所有的有效和无效情况。
软件的很多错误都是发生在输入或者输出范围的边界上,而不是输入输出范围的内部,所以边界值分析法也就诞生了。边界值分析法是一种对输入或输出的边界值进行测试的一种黑盒测试方法,是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界点分为上点、内点和离点:
上点:就是边界上的点,不管它是开区间还是闭区间,就是说,如果该点是封闭的,那上点就在域范围内,如果该点是开放的,那上点就在域范围外。
内点:就是在域范围内的任意一个点。
离点:就是离上点最近的一个点,如果边界是封闭的,那离点就是域范围外离上点最近的点,如果边界是开放的,那离点就是域范围内离上点最近的点。
下面一系列图片中,蓝色的为上点,橘色为离点,绿色为内点:
边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
如果输入条件规定了值的范围
则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
例如程序的需求文档中提到:“如果身高在170cm至180cm,则…”,那么测试数据应当选取170
和180
,还应当选取170.1
、169.9
、179.9
、180.1
等。
如果输入条件规定了值的个数
则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
例如ID的范围应当是
[
1
,
1000
]
[1,1000]
[1,1000],那么测试数据可以取值为1
、1000
、0
、1001
。
如果输出条件规定了值的范围
则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
如果输出条件规定了值的个数
则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
分析需求,找出其它可能的边界条件
假设变量 x 1 x_1 x1、 x 2 x_2 x2 的取值范围分别是 [ a , b ] [a,b] [a,b]、 [ c , d ] [c,d] [c,d]
一般边界条件测试用例设计法
该方法生成的测试用例有
4
n
+
1
4n+1
4n+1 个,分别是
{
a
,
b
,
c
,
d
,
a
+
,
b
−
,
c
+
,
d
−
,
n
o
r
m
a
l
}
\{a,b,c,d,a+,b-,c+,d-,normal\}
{a,b,c,d,a+,b−,c+,d−,normal}
健壮性边界条件测试用例设计法
取值包含
{
a
,
b
,
c
,
d
,
a
+
,
a
−
,
b
−
,
b
+
,
c
+
,
c
−
,
d
+
,
d
−
,
n
o
r
m
a
l
}
\{a,b,c,d,a+,a-,b-,b+,c+,c-,d+,d-,normal\}
{a,b,c,d,a+,a−,b−,b+,c+,c−,d+,d−,normal},一共是
6
n
+
1
6n+1
6n+1 个测试用例
最坏边界条件测试用例设计法
测试用例一共有
5
n
5^n
5n 个
健壮最坏边界条件测试用例设计法
测试用例包含
7
n
7^n
7n 个
等价类划分法和边界值分析方法比较适合输入变量或输入条件相互独立的情况,但是当输入变量或输入条件相互依赖、相互制约的时候,采用等价类划分法和边界值分析方法是难以描述的,测试效果也很难保障,而判定表驱动法就是为了解决这类问题。
什么是判定表驱动法?
判定表驱动法(或决策表法) 是根据需求描述建立判定表后,导出测试用例的方法。在所有的黑盒测试方法中,基于判定表的测试是最为严格、最具有逻辑性的测试方法,并且可以设计出完整的测试用例集合。
什么是判定表?
判定表(也称决策表)是一个用来表示条件和行动的二维表,是分析和表达多逻辑条件下执行不同操作的情况的工具。
上述判定表可以简化,简化规则主要有:
按照上述规则,我们可以对“阅读指南判定表”进行合并:
合并后:
继续合并:
当输入条件过多时,使用判定表会产生大量测试用例,而且也不能覆盖条件之间的先后关系,因果图法就解决了这个问题。
因果图法(Cause-Effect Graphics)是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。
与判定表法相比,因果图法存在以下优缺点:
当条件和动作关系不明确,先使用因果图
如果需求是以判定表形式给出的、项目在设计阶段就采用了判定表,则直接用判定表设计测试用例。
因果图关系符号有4种:恒等、非、或、与
c
c
c 表示原因,通常在图的左部,
e
e
e 表示结果,通常在图的右部。
c
c
c 和
e
e
e 均可取值为0或1,0表示状态不发生,1表示状态发生。
某软件的一个模块的需求规格说明书中描述:
请绘制出因果图和判定表,并给出相应的测试用例。
首先分析原因和结果:
原因 | 结果 |
---|---|
C1:年薪制员工 | A1:扣年终风险金的4% |
C2:非年薪制员工 | A2:扣年终风险金的2% |
C3:严重过失 | A3:扣当月薪资的8% |
C4:过失 | A4:扣当月薪资的4% |
然后画出因果图:
根据因果图也可将其转换为决策表:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。