文章链接:https://codemouse.online/archives/2020-05-03170010
白盒测试
常用的白盒测试方法有
- 逻辑覆盖测试(重点)
- 基本路径覆盖测试
- 数据流测试
- 循环测试
逻辑覆盖
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 路径覆盖
用例:

语句覆盖
概念:使设计的测试用例保证程序中每个可执行语句至少执行一次。
| 测试数据 | 预期结果 |
|---|---|
| x=4,y=2,z=0 | x=3 |
判定覆盖
概念:使设计的测试用例保证程序中每个判断的每个取值分支(T或F)至少经历一次。
| 测试数据 | 预期结果 | 执行路径 | 判定a | 判定b |
|---|---|---|---|---|
| x=4,y=2,z=1 | x=2 | sacde | F | T |
| x=3,y=3,z=0 | x=1 | sabce | T | F |
条件覆盖
概念:设计的测试用例保证程序中每个判断的每个条件的可能取值至少执行一次。
| 测试数据 | 预期结果 | 执行路径 | 覆盖条件 |
|---|---|---|---|
| x=1,y=2,z=0 | x=1.5 | sabcde | y>1,z=0,y=2,x<=y |
| x=3,y=1,z=1 | x=3 | sacde | y<=1,z!=0,y!=2,x>1 |
路径覆盖
概念:设计测试用例,保证覆盖程序中所有可能的路径。
| 测试数据 | 预期结果 | 执行路径 | 判定a | 判定b |
|---|---|---|---|---|
| x=4,y=2,z=0 | x=3 | sabcde | T | T |
| x=3,y=3,z=0 | x=1 | sabce | T | F |
| x=2,y=1,z=0 | x=3 | sacde | F | T |
| x=1,y=1,z=1 | x=1 | sace | F | F |
白盒测试作业:

- 语句覆盖
| 测试数据 | 预期结果 |
|---|---|
| x=100,y=100 | T=1 |
| x=100,y=50 | T=2 |
| x=30,y=80 | T=3 |
- 判定覆盖
| 测试数据 | 预期结果 | 执行路径 | 判定a | 判定b |
|---|---|---|---|---|
| x=100,y=100 | T=1 | 126 | Y | |
| x=100,y=50 | T=2 | 1346 | N | Y |
| x=30,y=80 | T=3 | 1356 | N | N |
- 条件覆盖
| 测试数据 | 预期结果 | 执行路径 | 覆盖条件 |
|---|---|---|---|
| x=100,y=50 | T=2 | 1346 | x>=80,y<80,x+y>=140,x>=90,y<90 |
| x=30,y=90 | T=3 | 1356 | x<80,y>=80,x+y<140,x<90,y>=90 |
- 路径覆盖
| 测试数据 | 预期结果 | 执行路径 | 判定a | 判定b |
|---|---|---|---|---|
| x=100,y=100 | T=1 | 126 | Y | |
| x=100,y=50 | T=2 | 1346 | N | Y |
| x=30,y=80 | T=3 | 1356 | N | N |
黑盒测试
主要的黑盒测试方法有:
- 等价类划分(重点)
- 边界值分析
- 比较测试
- 错误猜测
等价类划分
-
概念:将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例。
-
等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试。 -
把输入数据分为
有效输入数据和无效输入数据有效输入数据指符合规格说明要求的合理的输入数据,主要用来检验程序是否实现了规格说明中的功能。
无效输入数据指不符合规格说明要求的不合理或非法的输入数据,主要用来检验程序是否做了规格说明以外的事。
例子
- 题目:
例:某编译程序的规格说明中关于标识符的规定如下:
1.标识符是由字母开头
2.后跟字母或数字的任意组合构成
3.标识符的字符数为1到8个
4.标识符必须先说明后使用
5.一个说明语句中至少有一个标识符
6.保留字不能用作变量标识符。
等价类划分设计测试用例的步骤
确定等价类:根据软件的规格说明,对每一个输入条件确定若干个有效等价类和若干个无效等价类。
做出下面的表
| 输入条件 | 有效等价类 | 无效等价类 |
|---|---|---|
| 第一个字符 | 字母(1) | 数字(2),非字母数字字符(3) |
| 后跟的字符 | 字母(4),数字(5) | 非字母数字字符(6),与第一个字符形成保留字(7) |
| 字符数 | 1~8个(8) | 0个(9), >8个(10) |
| 标识符的使用 | 先说明后使用(11) | 未说明已使用(12) |
| 标识符个数 | >=1个(13) | 0个(14) |
建立等价类表,列出所有划分出的等价类。并为每个有效等价类
和无效等价类编号。
设计测试用例
(1) 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
(2)为每个无效等价类设计一个新的测试用例
| 输入数据 | 预期结果 | 覆盖的等价类 |
|---|---|---|
| P3t2 | 正确标识符 | (1),(4), (5), (8), (11), (13) |
| 2P | 报错:不正确标识符 | (2) |
| !X | 报错:不正确标识符 | (3) |
| T# | 报错:不正确标识符 | (6) |
| GOTO | 报错:保留字作标识符 | (7) |
| X, | 报错:标识符长度为0 | (9) |
| T12345678 | 报错:标识符字符超长 | (10) |
| VAR PAR: REAL; BEGIN … PAP:3.14 … END; | 报错:未说明已使用 | (12) |
| VAR:REAL; | 报错:标识符个数为0 | (14) |
黑盒测试作业:
练:某程序规定:“输入三个整数a、b、c分别作为三边的边长,通过程序判定是否能构成三角形。”
用等价类划分方法为该程序的输入数据功能进行测试用例设计。
其对输入条件的要求为:
(1) 输入三个数;
(2 )a、b、c均为正数;
(3)任意两边之和大于第三边。
请设计等价类表和测试用例表。
- 设计等价类表
| 输入条件 | 有效等价类 | 无效等价类 |
|---|---|---|
| 输入三个数 | 数字(1),有三个(7) | 非数字(2),不满足三个(8) |
| a,b,c均为正数 | 正数(3) | 非正数(4) |
| 任意两边之和大于第三边 | 任意两边之和大于第三边(5) | 任意两边之和小于第三边(6) |
- 设计测试用例
| 输入数据 | 预期结果 | 覆盖的等价类 |
|---|---|---|
| a=3,b=4,c=5 | 形成三角形 | (1),(3),(5),(7) |
| a=3,b=4,c=f | 报错:输入边不能是非数字 | (2) |
| a=3,b=4,c=-5 | 报错:输入边不能是非正数 | (4) |
| a=3,b=4,c=5 | 报错:两边之和小于第三边 | (6) |
| a=3,b=4 | 报错:输入数据不满足三个 | (8) |
白盒测试与黑盒测试的区别
| 黑盒测试 | 白盒测试 | |
|---|---|---|
| 优点 | 适用于各测试阶段 | 使特定程序部分得到测试 |
| 从产品功能角度测试 | 可获得较多工具支持 | |
| 容易入手生成测试数据 | ||
| 缺点 | 某些代码段得不到测试 | 不易生成测试数据 |
| 如果规格说明有误则无法发现 | 无法对未实现规格说明的部分测试 | |
| 不易进行充分性度量 | 工作量大,通常只用于单元测试,有引用局限 | |
| 性质 | 是一种确认技术,回答“我们在构造一个正确的系统吗?” | 是一种验证技术,回答“我们在正确地构造一个系统吗?” |
本文深入解析白盒测试与黑盒测试的核心方法,包括逻辑覆盖、基本路径覆盖、数据流测试等白盒技术,以及等价类划分、边界值分析等黑盒策略。通过实例展示如何设计有效的测试用例,确保软件质量。
2004

被折叠的 条评论
为什么被折叠?



