什么是黑盒测试
黑盒测试
又称功能测试
,
是在不了解程序内部结构和内部特性的情况下进行的测试方法
,
黑盒测试只验证程序是否能按照需求规格说明书的规定正常使用
,是否能适当的接收数据并给出适当的输出结果,如错误提示,或正确的界面等。
常用黑盒测试方法
有等价类划分法
、边界值分析法、正交实验法、流程分析法(场景法)、因图法、判定表法、输入域覆盖法、输出域覆盖法、猜错法(异常分析法)。
一、 等价类划分法
1.1
简介
等价类划分法是指将程序的输入值的集合划分为若干等价类
,
等价类又分为有效等价类和无效等价类
,
从每一类中选取少量数据进行测试
。
1.2
构造测试用例方法
① 根据需求文档明确需求
②
分析需求中的每一个功能数
③
确定每一个功能有多少个输入
④ 确定每个输入有多少规则
⑤ 针对输入规则划分输入的等价类
⑥
根据等价类设计测试用例
1.3
举例
1.
在输入条件中确立一个范围时
,
可分为一个有效等价类和两个无效等价类
。
如成绩的输入
,
要求分数在
[0,100]
之间
,
划分等价类如下
:
有效等价类
:
分数在
[0,100]
之间
无效等价类
:
分数小于
0
分数大于
100
2.
确定输入取值为
n
个
值中的一个的时候,可划分为
n
个有效等价类和
1
个无效等价类,
如
学历的输入
,要求只能输入专科、本科、硕士、博士四种,划分等价类如下:
有效等价类
:
输入
专科、本科、硕士、博士其中的一个
无效等价类
:
输入除四种学历之外的数据
3.
在输入条件是真假值时
,
可确立为一个有效等价类
(真)和一个无效等价类(假),
如一个判断题的对错,划分等价类如下:
有效等价类
:
对
无效等价类
:
错
4.
在输入数据确定了只有一种符合条件的情况下
,
可确立为一个无效等价类和多个有效等价类
,
如填空题
1+1=
?,
划分等价类如下
:
有效等价类
:2
无效等价类
:
除
2
之外的数字
5.
在输入数据确定了个数的时候
,可分为一个有效等价类和两个无效等价类,
如一天必须上
2-10
节课
,
等价类划分如下
;
有效等价类
:一天上
2-10
节课
无效等价类
:
一天上课的节数小于
2
一天上课的节数大于
10
6.
在输入数据确定了格式的时候
,
可分为一个有效等价类和多个无效等价类
,
如设置密码时要求为字符
、
数字
、
特殊字符的组合
,
可划分等价类如下
:
有效等价类
:
字符
、
数字
、
特殊字符的组合
无效等价类
:纯
字符
三者两两组合
7.
在输入值是一个路径的时候
,
可分为一个有效等价类和多个无效等价类
,
如输入图片的路径
,可划分等价类如下:
有效等价类
:存在的图片路径
无效等价类
:
除图片之外的其他文件的路径
超出深度要求的路径
格式错误的路径
(区分
/
和
\
,区分大小写的时候)
不存在的图片路径
不存在的其他文件路径
路径中存在空格或其他特殊字符
二、
边界值分析法
2.1
简介
边界值分析法是针对输入数据的边界值的测试
,
一般情况下与等价类划分法结合使用
,
根据各个等价类的边界值设计测试用例
。
2.2
构造测试用例方法
① 根据每个输入的等价类设计边界值测试用例,包括等价类的上点和离点(上点:边界值上的点;离点距离边界最近的点)
2.3
举例
1.
成绩的输入
,
分为三个等价类
:
有效等价类
:
输入分数在
[0,100]
无效等价类
:
分数
小于
0
分数大于
100
可根据这三个等价类的边界值设计测试用例如下
:
2.
除去对等价类的边界值进行分析,还需对输入数据的类型以及各种场景的边界值进行测试,
如:
a:
整型数据的边界值
:-32767
和
32768
b:
布尔值的边界值
:
真和假
c:
循环的边界值
:
第一轮循环和最后一轮循环
d:
报表的第一行和最后一行
e:浏览器的左上角和右下角
f:数组里的第一个元素和最后一个元素
三、
判定表法
3.1
简介
是根据判定条件列出所有可能的组合
,
当有
n
个条件时
,
就需要列出相应的
2
n
个测试用例
。
3.2
构造测试用例方法
①
在需求中找到输入参数要满足的条件
②
在需求中找到满足条件后得到的结果
③
将所有的
n
个输入条件进行全排列组合
,
形成
2
n
组测试用例
,
④ 查看是否可以合并测试用例
⑤
设计测试用例时可以忽略没有数据可取的不存在的结果
3.3
举例
如下是对闰年判定的测试用例
,
其中闰年的判定条件为能被
4
整除但不能被
100
整除或者能被
400
整除。
4.1
简介
正交实验法是利用正交表来对程序进行测试
,
用较少的测试用例进行较全面的测试
。根据正交表的正交性,从全面试验中挑选出适量的、有代表性的点进行试验。
正交表是一种特制的表格
,
一般用
Ln
(
m
k
)来表示,其中
L
表示正交表,
n
表示测试用例数,
k
表示最多可安排影响指标因素的个数或正交表的列数,
m
表示每个因素的水平数即状态,
n=k*
(
m-
1
)
-1,
即最少的测试用例数
。
4.2
构造测试用例方法
① 从需求中找出所有的因素(输入参数)
②
从需求中找出所有的水平
(因素状态)并编号,画出因素状态表
③ 通过因素状态表绘制出正交表
④
根据正交表
,
设计测试用例
,
一行是一条用例
4.3
举例
1.
因素数和水平数刚好符合正交表
如测试一个登陆
,
需要输入用户名
、
密码和验证码
,则用户名、密码和验证码是因素,每个因素都有填和不填两种水平(状态),则
n= k*
(
m-
1
)
-1=3*
(
2-
1
)
+1=4
组测试用例
,
根据正交实验法设计正交表如下
五、
流程图分析法
5.1
简介
当一个事件触发时
,
就形成了一个场景
,
而同一事件的不同触发顺序和处理结果就形成了事件流
。在测试一个软件的时候,在场景法中,测试流程是软件功能按照正确的事件流实现的一条正确的流程,即基本流,而凡是出现故障或缺陷的过程,就称为备选流,备选流是可以从基本流来的,或是由备选流引出的。
5.2
构造测试用例方法
① 根据业务流程绘制出流程图,流程图包含基本流和备选流
②
根据基本流和备选流生成不同的场景
③
对每一个场景生成相应的测试用例
④
对生成的测试用例重新评审
,
去掉多余的测试用例
,
测试用例确定后
,
对每一个测试用例确定测试数据值
5.3
举例
1.
例如一个需要输入用户名和密码的登陆并付款购物功能
,
其中如果密码错误
3
次会锁定用户
的事件流如下
:
6.1
简介
因果图法是一种利用图解法分析输入的各种组合情况
,
从而设计测试用例的方法
,
适用于检查程序输入的各种组合条件
。
因果图法比较合适输入条件比较多的情况,测试所有的输入条件的排列组合,所谓的原因就是输入,所谓的结果就是输出。
因果图的
“因”—输入条件
因果图的
“果”—输出结果
因果图法要注意考虑:
1.
所有输入
/
输出条件的相互制约关系以及组合关系
2.
输入条件的依赖关系,也就是什么样的输入组合会产生怎么样的输出结果,即“因果关系”
因果图中的基本符号:
因果图如下
:
输入
:
输出:
根据因果图
,
判定表如下
:
八、
输出域覆盖法
8.1
简介
输出域覆盖是指在了解程序功能的所有输出后
,
查看测试用例中所有的输入产生的输出结果是否能够涵盖所有输出结果
,
如果不完善
,则根据输出结果推导出相应的输入数据,将其补充到测试用例中。
九、
猜错法
9.1
简介
猜错法是基于经验和直觉
,以及参考以往测试结果中出现较频繁及较隐蔽的错误,从而
推测出程序所有可能出现的错误或异常
,选择这些情况下的用例进行测试。