软件测试导论
定价:¥79.00
作者: [爱]拉尔夫·比瑞格,斯蒂芬·布朗,埃德加·加尔文,乔·蒂莫尼
出版时间:2024-10-15
出版社:机械工业出版社
- 机械工业出版社
- 9787111761839
- 1-1
- 2024-10-15
内容简介
软件测试可以被视为一门艺术、一门工艺或一门科学,而本书中提出的一种循序渐进且实用的方法在这些不同的视角之间提供了一座桥梁。书中涵盖多种测试技术,首先介绍其优缺点,然后深入细节,帮助读者理解其基本原理。zui后,通过注入故障来展示每种技术的局限性,并提供了每种技术在发现故障方面的成功案例或失败案例。书中讲解的技术涉及黑盒测试、白盒测试、随机测试、单元测试、面向对象的软件测试和应用测试。本书还强调了应用技术的过程,包括分析、测试用例设计、测试实现和测试结果分析。
目录
目 录
Essentials of Software Testing
译者序
前言
致谢
第1章 软件测试简介 1
1.1 软件行业的现状 1
1.1.1 软件测试与软件质量 2
1.1.2 软件测试和风险管理 3
1.2 失误、故障和失效 3
1.2.1 失误 4
1.2.2 故障 4
1.2.3 失效 5
1.2.4 测试的必要性 6
1.3 规范的作用 7
1.4 手工测试举例 8
1.5 软件测试原理 8
1.6 穷尽测试 9
1.6.1 穷尽测试数据 9
1.6.2 穷尽测试的可行性 9
1.7 启发性测试 9
1.7.1 随机测试 10
1.7.2 黑盒测试和白盒测试 11
1.7.3 基于经验的测试 11
1.7.4 故障注入 12
1.8 何时停止测试 12
1.9 静态测试和动态测试 12
1.9.1 基于审查的技术 12
1.9.2 程序证明 13
1.10 在软件开发过程中进行测试 13
1.11 软件测试活动 14
1.11.1 分析 15
1.11.2 测试覆盖项 15
1.11.3 测试用例 16
1.11.4 验证测试用例 17
1.11.5 测试实现 17
1.12 测试的工作产品 17
1.13 故障模型 18
1.14 如何使用本书 18
1.14.1 本书结构 18
1.14.2 测试顺序 19
1.14.3 文档化测试分析 19
1.14.4 编程语言 19
1.14.5 详细程度 19
1.14.6 示例 19
1.14.7 软件测试工具 19
1.15 术语 20
第2章 等价类划分 21
2.1 使用等价类划分进行测试 21
2.2 示例 21
2.2.1 分析 22
2.2.2 测试覆盖项 25
2.2.3 测试用例 25
2.2.4 验证测试用例 27
2.3 测试实现和测试结果 28
2.3.1 手工测试的输出 28
2.3.2 自动化的测试实现 28
2.3.3 测试结果 31
2.4 等价类划分的细节 31
2.4.1 故障模型 31
2.4.2 描述 31
2.4.3 分析:识别等价类划分 31
2.4.4 测试覆盖项 33
2.4.5 测试用例 33
2.4.6 缺点 33
2.5 评估 34
2.5.1 局限性 34
2.5.2 强项和弱项 37
2.6 划重点 37
2.7 给有经验的测试员的建议 37
第3章 边界值分析 38
3.1 使用边界值进行测试 38
3.2 示例 38
3.2.1 分析 38
3.2.2 测试覆盖项 39
3.2.3 测试用例 39
3.2.4 验证测试用例 40
3.3 测试实现和测试结果 41
3.3.1 测试实现 41
3.3.2 测试结果 42
3.4 边界值分析的细节 42
3.4.1 故障模型 42
3.4.2 描述 42
3.4.3 分析:识别边界值 43
3.4.4 测试覆盖项 43
3.4.5 测试用例 43
3.4.6 缺点 44
3.5 评估 44
3.5.1 局限性 44
3.5.2 强项和弱项 46
3.6 划重点 46
3.7 给有经验的测试员的建议 46
第4章 判定表 47
4.1 使用判定表测试组合 47
4.2 示例 47
4.2.1 分析 47
4.2.2 测试覆盖项 52
4.2.3 测试用例 53
4.2.4 验证测试用例 54
4.3 测试实现和测试结果 55
4.3.1 测试实现 55
4.3.2 测试结果 56
4.4 判定表的细节 56
4.4.1 故障模型 56
4.4.2 描述 56
4.4.3 分析:开发判定表 56
4.4.4 测试覆盖项 64
4.4.5 测试用例 64
4.4.6 缺点 64
4.5 评估 64
4.5.1 局限性 64
4.5.2 强项和弱项 66
4.6 划重点 66
4.7 给有经验的测试员的建议 66
第5章 语句覆盖 67
5.1 白盒测试 67
5.2 语句覆盖测试 67
5.2.1 获取语句覆盖率 67
5.3 示例 67
5.3.1 分析 68
5.3.2 测试覆盖项 70
5.3.3 测试用例 70
5.3.4 验证测试用例 71
5.4 测试实现和测试结果 71
5.4.1 测试实现 71
5.4.2 测试结果 72
5.5 语句覆盖的细节 73
5.5.1 故障模型 73
5.5.2 描述 73
5.5.3 分析:识别未执行的语句 73
5.5.4 测试覆盖项 73
5.5.5 测试用例 73
5.6 评估 74
5.6.1 局限性 74
5.6.2 强项和弱项 75
5.7 划重点 76
5.8 给有经验的测试员的建议 76
第6章 分支覆盖 77
6.1 分支覆盖测试 77
6.1.1 获取分支覆盖率 77
6.2 示例 77
6.2.1 分析 78
6.2.2 测试覆盖项 80
6.2.3 测试用例 80
6.2.4 验证测试用例 80
6.3 测试实现和测试结果 81
6.3.1 测试实现 81
6.3.2 测试结果 81
6.4 分支覆盖的细节 83
6.4.1 故障模型 83
6.4.2 描述 83
6.4.3 目标 83
6.4.4 分析:识别未被执行的分支 84
6.4.5 测试覆盖项 84
6.4.6 测试用例 84
6.5 评估 84
6.5.1 局限性 84
6.5.2 强项和弱项 86
6.6 划重点 86
6.7 给有经验的测试员的建议 86
第7章 全路径覆盖 88
7.1 全路径覆盖测试 88
7.2 示例 88
7.2.1 分析 89
7.2.2 测试覆盖项 92
7.2.3 测试用例 92
7.2.4 验证测试用例 93
7.3 测试实现和测试结果 93
7.3.1 测试实现 93
7.3.2 测试结果 93
7.4 全路径覆盖的细节 95
7.4.1 故障模型 95
7.4.2 描述 95
7.4.3 分析:开发控制流图 95
7.4.4 分析:识别点对点路径 98
7.4.5 注入故障6之后的可能
路径 100
7.4.6 测试覆盖项 104
7.4.7 测试用例 104
7.5 评估 104
7.5.1 局限性 104
7.5.2 强项和弱项 106
7.6 划重点 106
7.7 给有经验的测试员的建议 107
第8章 黑盒测试与白盒测试 108
8.1 黑盒测试与白盒测试的比较 108
8.1.1 黑盒测试 109
8.1.2 白盒测试 110
8.1.3 缺失型和多余型错误 111
8.1.4 用法 111
8.2 黑盒测试:还需要考虑的一
些问题 112
8.2.1 字符串和数组 113
8.2.2 不连续的输入等价类划分 113
8.2.3 重叠的输出等价类划分 114
8.2.4 频内错误报告 115
8.2.5 处理相对数值 115
8.2.6 经典的三角形问题 117
8.2.7 基于状态的测试(输入序列
测试) 117
8.2.8 浮点数 119
8.2.9 数值处理 119
8.3 白盒测试:其他技术介绍 120
8.3.1 数据流覆盖(定义–使
用对) 120
8.3.2 条件覆盖 121
8.3.3 判定覆盖 122
8.3.4 判定条件覆盖 122
8.3.5 条件组合覆盖 122
8.3.6 修订的条件/判定覆盖 123
8.3.7 测试分级 124
8.4 基于修复的测试 124
8.4.1 特定的修复性测试 124
8.4.2 通用的修复性测试 124
8.4.3 抽象的修复性测试 124
8.4.4 示例 125
8.4.5 使用基于修复的测试 125
第9章 测试面向对象的软件 126
9.1?在类的上下文中测试 126
9.2?示例 126
9.2.1?分析 128
9.2.2?确定被测方法 128
9.2.3?选择一种测试技术 128
9.2.4?测试覆盖项 130
9.2.5?测试用例 131
9.2.6?验证测试用例 132
9.3?测试实现和测试结果 133
9.3.1?测试实现 133
9.3.2?测试结果 134
9.4?面向对象测试的细节 134
9.4.1?面向对象的编程 134
9.4.2?面向对象的软件测试 135
9.4.3?故障模型 135
9.4.4?在类的上下文中执行测试 136
9.4.5?分析面向对象的测试 137
9.4.6?测试覆盖项 137
9.4.7?测试用例 137
9.4.8?测试实现 138
9.4.9?高级面向对象测试概述 138
9.4.10?继承测试 138
9.4.11?基于状态的测试 139
9.4.12?基于UML的测试 141
9.4.13?内置测试 141
9.5?评估 143
9.5.1?局限性 143
9.5.2?简单的笔误 143
9.5.3?状态故障 144
9.5.4?继承故障 145
9.5.5?强项和弱项 147
9.6?划重点 147
9.7?给有经验的测试员的建议 147
第10章 应用测试 148
10.1?使用用户故事测试Web应用 148
10.2?示例 148
10.2.1?分析 149
10.2.2?测试覆盖项 153
10.2.3?测试用例 153
10.2.4?验证测试用例 155
10.3?测试实现和测试结果 155
10.3.1?测试实现 156
10.3.2?测试结果 159
10.4?应用测试的细节 160
10.4.1?系统测试模型 160
10.4.2?应用测试模型 161
10.4.3?系统测试和集成测试 161
10.4.4?应用测试的故障模型 163
10.4.5?分析 164
10.4.6?测试覆盖项 167
10.4.7?测试用例 167
10.4.8?测试实现 167
10.4.9?与HTML元素进行交互 169
10.4.10?测试输出消息 170
10.4.11?录制与回放测试 170
10.5?评估 171
10.5.1?局限性 171
10.5.2?强项和弱项 175
10.6?划重点 175
10.7 单元测试和应用测试之间的
关键区别 176
10.8?给有经验的测试员的建议 176
第11章 测试自动化 178
11.1 简介 178
11.1.1 解析测试结果 179
11.1.2 文档化自动化测试 179
11.1.3 软件测试自动化和版
本控制 179
11.2 测试框架:TestNG 180
11.2.1 TestNG示例的细节 180
11.3 整理自动化测试代码 181
11.3.1 用XML文件整理TestNG
测试 182
11.4 设置和清除方法 183
11.5 内联测试与参数化测试 185
11.6 测试覆盖率 188
11.7 超时 189
11.8 异常 190
11.9 继承测试 191
11.9.1 使用类的名字 193
11.9.2 继承超类的测试用例 194
11.9.3 继承测试的选择 197
11.10 与Web应用进行交互 198
11.11 与桌面应用进行交互 199
11.12 与移动应用进行交互 200
第12章 随机测试 201
12.1 随机测试简介 201
12.2 随机数据选取 201
12.3 单元测试示例 201
12.3.1 测试覆盖项 202
12.3.2 测试用例 202
12.3.3 测试实现 203
12.3.4 测试结果 204
12.4 应用测试示例 205
12.4.1 分析 205
12.4.2 测试覆盖项 205
12.4.3 测试用例 205
12.4.4 测试实现 206
12.4.5 测试结果 209
12.5 随机测试的细节 210
12.5.1 全自动化的障碍 210
12.5.2 其他随机测试技术 211
12.6 评估 212
12.6.1 局限性 212
12.6.2 强项和弱项 214
12.7 划重点 214
12.8 给有经验的测试员的建议 215
第13章 软件过程中的测试 216
13.1 测试策划 216
13.2 软件开发生命周期 217
13.3 瀑布模型 217
13.4 V模型 218
13.5 递增和敏捷开发过程 219
13.5.1 增量开发模型 219
13.5.2 极限编程 220
13.5.3 Scrum 221
13.6 与过程相关的质量标准和
模型 222
第14章 总结 223
14.1 总结测试技术 223
14.2 对测试的回顾 224
14.2.1 测试实现 224
14.2.2 测试用例 225
14.2.3 测试覆盖项 225
14.2.4 分析 225
14.2.5 软件规范 226
14.2.6 讨论 226
14.3 扩展阅读 226
14.3.1 在软件开发过程中进行
测试 227
14.3.2 软件测试标准 227
14.3.3 软件测试技术 227
14.3.4 测试面向对象的软件 227
14.3.5 集成测试 228
14.3.6 随机测试 228
14.3.7 测试编程语言特定的
风险 228
14.3.8 程序证明 228
14.3.9 测试安全紧要软件 229
14.3.10 不走弯路 229
14.4 研究方向 230
14.4.1 研讨会 230
14.4.2 研究课题 230
附录 运行本书的示例 232
参考文献 233
Essentials of Software Testing
译者序
前言
致谢
第1章 软件测试简介 1
1.1 软件行业的现状 1
1.1.1 软件测试与软件质量 2
1.1.2 软件测试和风险管理 3
1.2 失误、故障和失效 3
1.2.1 失误 4
1.2.2 故障 4
1.2.3 失效 5
1.2.4 测试的必要性 6
1.3 规范的作用 7
1.4 手工测试举例 8
1.5 软件测试原理 8
1.6 穷尽测试 9
1.6.1 穷尽测试数据 9
1.6.2 穷尽测试的可行性 9
1.7 启发性测试 9
1.7.1 随机测试 10
1.7.2 黑盒测试和白盒测试 11
1.7.3 基于经验的测试 11
1.7.4 故障注入 12
1.8 何时停止测试 12
1.9 静态测试和动态测试 12
1.9.1 基于审查的技术 12
1.9.2 程序证明 13
1.10 在软件开发过程中进行测试 13
1.11 软件测试活动 14
1.11.1 分析 15
1.11.2 测试覆盖项 15
1.11.3 测试用例 16
1.11.4 验证测试用例 17
1.11.5 测试实现 17
1.12 测试的工作产品 17
1.13 故障模型 18
1.14 如何使用本书 18
1.14.1 本书结构 18
1.14.2 测试顺序 19
1.14.3 文档化测试分析 19
1.14.4 编程语言 19
1.14.5 详细程度 19
1.14.6 示例 19
1.14.7 软件测试工具 19
1.15 术语 20
第2章 等价类划分 21
2.1 使用等价类划分进行测试 21
2.2 示例 21
2.2.1 分析 22
2.2.2 测试覆盖项 25
2.2.3 测试用例 25
2.2.4 验证测试用例 27
2.3 测试实现和测试结果 28
2.3.1 手工测试的输出 28
2.3.2 自动化的测试实现 28
2.3.3 测试结果 31
2.4 等价类划分的细节 31
2.4.1 故障模型 31
2.4.2 描述 31
2.4.3 分析:识别等价类划分 31
2.4.4 测试覆盖项 33
2.4.5 测试用例 33
2.4.6 缺点 33
2.5 评估 34
2.5.1 局限性 34
2.5.2 强项和弱项 37
2.6 划重点 37
2.7 给有经验的测试员的建议 37
第3章 边界值分析 38
3.1 使用边界值进行测试 38
3.2 示例 38
3.2.1 分析 38
3.2.2 测试覆盖项 39
3.2.3 测试用例 39
3.2.4 验证测试用例 40
3.3 测试实现和测试结果 41
3.3.1 测试实现 41
3.3.2 测试结果 42
3.4 边界值分析的细节 42
3.4.1 故障模型 42
3.4.2 描述 42
3.4.3 分析:识别边界值 43
3.4.4 测试覆盖项 43
3.4.5 测试用例 43
3.4.6 缺点 44
3.5 评估 44
3.5.1 局限性 44
3.5.2 强项和弱项 46
3.6 划重点 46
3.7 给有经验的测试员的建议 46
第4章 判定表 47
4.1 使用判定表测试组合 47
4.2 示例 47
4.2.1 分析 47
4.2.2 测试覆盖项 52
4.2.3 测试用例 53
4.2.4 验证测试用例 54
4.3 测试实现和测试结果 55
4.3.1 测试实现 55
4.3.2 测试结果 56
4.4 判定表的细节 56
4.4.1 故障模型 56
4.4.2 描述 56
4.4.3 分析:开发判定表 56
4.4.4 测试覆盖项 64
4.4.5 测试用例 64
4.4.6 缺点 64
4.5 评估 64
4.5.1 局限性 64
4.5.2 强项和弱项 66
4.6 划重点 66
4.7 给有经验的测试员的建议 66
第5章 语句覆盖 67
5.1 白盒测试 67
5.2 语句覆盖测试 67
5.2.1 获取语句覆盖率 67
5.3 示例 67
5.3.1 分析 68
5.3.2 测试覆盖项 70
5.3.3 测试用例 70
5.3.4 验证测试用例 71
5.4 测试实现和测试结果 71
5.4.1 测试实现 71
5.4.2 测试结果 72
5.5 语句覆盖的细节 73
5.5.1 故障模型 73
5.5.2 描述 73
5.5.3 分析:识别未执行的语句 73
5.5.4 测试覆盖项 73
5.5.5 测试用例 73
5.6 评估 74
5.6.1 局限性 74
5.6.2 强项和弱项 75
5.7 划重点 76
5.8 给有经验的测试员的建议 76
第6章 分支覆盖 77
6.1 分支覆盖测试 77
6.1.1 获取分支覆盖率 77
6.2 示例 77
6.2.1 分析 78
6.2.2 测试覆盖项 80
6.2.3 测试用例 80
6.2.4 验证测试用例 80
6.3 测试实现和测试结果 81
6.3.1 测试实现 81
6.3.2 测试结果 81
6.4 分支覆盖的细节 83
6.4.1 故障模型 83
6.4.2 描述 83
6.4.3 目标 83
6.4.4 分析:识别未被执行的分支 84
6.4.5 测试覆盖项 84
6.4.6 测试用例 84
6.5 评估 84
6.5.1 局限性 84
6.5.2 强项和弱项 86
6.6 划重点 86
6.7 给有经验的测试员的建议 86
第7章 全路径覆盖 88
7.1 全路径覆盖测试 88
7.2 示例 88
7.2.1 分析 89
7.2.2 测试覆盖项 92
7.2.3 测试用例 92
7.2.4 验证测试用例 93
7.3 测试实现和测试结果 93
7.3.1 测试实现 93
7.3.2 测试结果 93
7.4 全路径覆盖的细节 95
7.4.1 故障模型 95
7.4.2 描述 95
7.4.3 分析:开发控制流图 95
7.4.4 分析:识别点对点路径 98
7.4.5 注入故障6之后的可能
路径 100
7.4.6 测试覆盖项 104
7.4.7 测试用例 104
7.5 评估 104
7.5.1 局限性 104
7.5.2 强项和弱项 106
7.6 划重点 106
7.7 给有经验的测试员的建议 107
第8章 黑盒测试与白盒测试 108
8.1 黑盒测试与白盒测试的比较 108
8.1.1 黑盒测试 109
8.1.2 白盒测试 110
8.1.3 缺失型和多余型错误 111
8.1.4 用法 111
8.2 黑盒测试:还需要考虑的一
些问题 112
8.2.1 字符串和数组 113
8.2.2 不连续的输入等价类划分 113
8.2.3 重叠的输出等价类划分 114
8.2.4 频内错误报告 115
8.2.5 处理相对数值 115
8.2.6 经典的三角形问题 117
8.2.7 基于状态的测试(输入序列
测试) 117
8.2.8 浮点数 119
8.2.9 数值处理 119
8.3 白盒测试:其他技术介绍 120
8.3.1 数据流覆盖(定义–使
用对) 120
8.3.2 条件覆盖 121
8.3.3 判定覆盖 122
8.3.4 判定条件覆盖 122
8.3.5 条件组合覆盖 122
8.3.6 修订的条件/判定覆盖 123
8.3.7 测试分级 124
8.4 基于修复的测试 124
8.4.1 特定的修复性测试 124
8.4.2 通用的修复性测试 124
8.4.3 抽象的修复性测试 124
8.4.4 示例 125
8.4.5 使用基于修复的测试 125
第9章 测试面向对象的软件 126
9.1?在类的上下文中测试 126
9.2?示例 126
9.2.1?分析 128
9.2.2?确定被测方法 128
9.2.3?选择一种测试技术 128
9.2.4?测试覆盖项 130
9.2.5?测试用例 131
9.2.6?验证测试用例 132
9.3?测试实现和测试结果 133
9.3.1?测试实现 133
9.3.2?测试结果 134
9.4?面向对象测试的细节 134
9.4.1?面向对象的编程 134
9.4.2?面向对象的软件测试 135
9.4.3?故障模型 135
9.4.4?在类的上下文中执行测试 136
9.4.5?分析面向对象的测试 137
9.4.6?测试覆盖项 137
9.4.7?测试用例 137
9.4.8?测试实现 138
9.4.9?高级面向对象测试概述 138
9.4.10?继承测试 138
9.4.11?基于状态的测试 139
9.4.12?基于UML的测试 141
9.4.13?内置测试 141
9.5?评估 143
9.5.1?局限性 143
9.5.2?简单的笔误 143
9.5.3?状态故障 144
9.5.4?继承故障 145
9.5.5?强项和弱项 147
9.6?划重点 147
9.7?给有经验的测试员的建议 147
第10章 应用测试 148
10.1?使用用户故事测试Web应用 148
10.2?示例 148
10.2.1?分析 149
10.2.2?测试覆盖项 153
10.2.3?测试用例 153
10.2.4?验证测试用例 155
10.3?测试实现和测试结果 155
10.3.1?测试实现 156
10.3.2?测试结果 159
10.4?应用测试的细节 160
10.4.1?系统测试模型 160
10.4.2?应用测试模型 161
10.4.3?系统测试和集成测试 161
10.4.4?应用测试的故障模型 163
10.4.5?分析 164
10.4.6?测试覆盖项 167
10.4.7?测试用例 167
10.4.8?测试实现 167
10.4.9?与HTML元素进行交互 169
10.4.10?测试输出消息 170
10.4.11?录制与回放测试 170
10.5?评估 171
10.5.1?局限性 171
10.5.2?强项和弱项 175
10.6?划重点 175
10.7 单元测试和应用测试之间的
关键区别 176
10.8?给有经验的测试员的建议 176
第11章 测试自动化 178
11.1 简介 178
11.1.1 解析测试结果 179
11.1.2 文档化自动化测试 179
11.1.3 软件测试自动化和版
本控制 179
11.2 测试框架:TestNG 180
11.2.1 TestNG示例的细节 180
11.3 整理自动化测试代码 181
11.3.1 用XML文件整理TestNG
测试 182
11.4 设置和清除方法 183
11.5 内联测试与参数化测试 185
11.6 测试覆盖率 188
11.7 超时 189
11.8 异常 190
11.9 继承测试 191
11.9.1 使用类的名字 193
11.9.2 继承超类的测试用例 194
11.9.3 继承测试的选择 197
11.10 与Web应用进行交互 198
11.11 与桌面应用进行交互 199
11.12 与移动应用进行交互 200
第12章 随机测试 201
12.1 随机测试简介 201
12.2 随机数据选取 201
12.3 单元测试示例 201
12.3.1 测试覆盖项 202
12.3.2 测试用例 202
12.3.3 测试实现 203
12.3.4 测试结果 204
12.4 应用测试示例 205
12.4.1 分析 205
12.4.2 测试覆盖项 205
12.4.3 测试用例 205
12.4.4 测试实现 206
12.4.5 测试结果 209
12.5 随机测试的细节 210
12.5.1 全自动化的障碍 210
12.5.2 其他随机测试技术 211
12.6 评估 212
12.6.1 局限性 212
12.6.2 强项和弱项 214
12.7 划重点 214
12.8 给有经验的测试员的建议 215
第13章 软件过程中的测试 216
13.1 测试策划 216
13.2 软件开发生命周期 217
13.3 瀑布模型 217
13.4 V模型 218
13.5 递增和敏捷开发过程 219
13.5.1 增量开发模型 219
13.5.2 极限编程 220
13.5.3 Scrum 221
13.6 与过程相关的质量标准和
模型 222
第14章 总结 223
14.1 总结测试技术 223
14.2 对测试的回顾 224
14.2.1 测试实现 224
14.2.2 测试用例 225
14.2.3 测试覆盖项 225
14.2.4 分析 225
14.2.5 软件规范 226
14.2.6 讨论 226
14.3 扩展阅读 226
14.3.1 在软件开发过程中进行
测试 227
14.3.2 软件测试标准 227
14.3.3 软件测试技术 227
14.3.4 测试面向对象的软件 227
14.3.5 集成测试 228
14.3.6 随机测试 228
14.3.7 测试编程语言特定的
风险 228
14.3.8 程序证明 228
14.3.9 测试安全紧要软件 229
14.3.10 不走弯路 229
14.4 研究方向 230
14.4.1 研讨会 230
14.4.2 研究课题 230
附录 运行本书的示例 232
参考文献 233





