第一部分 软件测试概述 1
第1章 软件测试核心概念 1
1.1引子:猎人打鸟 1
1.2软件测试的概念 2
1.2.1软件的定义及特点 2
1.2.2软件测试的定义 3
1.2.3捉虫实践1:很简单? 6
1.2.4软件测试的认识误区 8
1.3软件缺陷的概念 11
1.3.1惨痛的教训:小虫子,大问题 12
1.3.2软件缺陷的定义 14
1.3.3捉虫实践2:虫子捉完了吗? 17
1.3.4软件缺陷的来源及代价 20
1.4测试用例的概念 20
1.4.1测试用例的定义 20
4.2测试用例的设计 21
1.4.3捉虫实践3:如何提高效率? 21
1.5自动化测试 23
1.5.1自动化测试的定义 23
1.5.2自动化测试的任务 23
1.5.3自动化测试技术 25
1.5.4捉虫实践4:如何消灭所有的虫子? 26
1.5.5自动化测试实施要点 31
1.5.6自动化测试的局限性 32
1.6本章小结 33
思考与练习 33
第2章 软件测试背景 34
2.1引子:一个中国黑客高手 34
2.2软件测试的发展历程及现状 35
2.2.1软件测试的发展历程 35
2.2.2软件测试的现状 36
2.2.3外包测试的现状 37
2.3软件测试的研究热点 37
2.4国内软件测试职业现状 40
2.5本章小结 41
思考与练习 41
第二部分 软件测试技术 42
第3章 黑盒测试技术 42
3.1概述 42
3.1.1基本原理和特点 42
3.1.2适用阶段 42
3.1.3测试方法的评价 43
3.2边界值测试 43
3.2.1基本原理 43
3.2.2测试用例设计 43
3.2.3捉虫实践1:第二日问题的边界值测试 47
3.2.4针对输出域的边界值分析 49
3.2.5捉虫实践2:佣金问题的边界值测试 49
3.2.6边界值测试小结 50
3.3等价类测试 51
3.3.1基本原理 51
3.3.2测试用例设计 52
3.3.3捉虫实践3:第二日问题的等价类测试 55
3.3.4针对输出域的等价类测试 60
3.3.5捉虫实践4:佣金问题的等价类测试 60
3.3.6等价类测试小结 61
3.4基于决策表的测试 61
3.4.1基本原理 61
3.4.2测试用例设计 62
3.4.3捉虫实践5:第二日问题的决策表测试 63
3.4.4决策表测试小结 65
3.5基于正交表的测试 66
3.5.1基本原理 66
3.5.2测试用例设计 66
3.5.3捉虫实践6:第二日问题的正交表测试 70
3.5.4正交表测试小结 75
3.6基于场景的测试 76
3.6.1基本原理 76
3.6.2测试用例设计 76
3.6.3捉虫实践7:自动柜员机问题的场景测试 78
3.6.4场景测试小结 81
3.7黑盒测试总结 81
3.8本章小结 82
思考与练习 82
第4章 黑盒测试案例实践 83
4.1保险金案例实践 83
4.1.1案例说明 83
4.1.2测试分析 83
4.1.3测试用例设计 84
4.1.4测试小结 86
4.2信息采集系统案例实践 87
4.2.1案例说明 87
4.2.2测试分析 93
4.2.3测试用例设计 93
4.2.4测试小结 102
4.3本章小结 102
思考与练习 102
第5章 白盒测试技术 103
5.1概述 103
5.1.1基本原理和特点 103
5.1.2适用阶段 103
5.1.3测试方法的评价 104
5.2静态白盒测试 104
5.2.1概述 104
5.2.2代码检查 104
5.2.3静态结构分析 110
5.2.4代码质量度量 111
5.2.5捉虫实践1:自动柜员机问题的函数调用图分析 113
5.2.6捉虫实践2:第二日问题的控制流图分析 114
5.2.7静态白盒测试小结 117
5.3对判定的测试 118
5.3.1基本原理 118
5.3.2案例描述 119
5.3.3测试用例设计 119
5.3.4测试用例优化 125
5.3.5捉虫实践3:第二日问题的判定测试 125
5.3.6对判定的测试小结 128
5.4对路径的测试 129
5.4.1弥诺陶洛斯迷宫的传说 129
5.4.2相关概念 130
5.4.3基本原理 134
5.4.4测试用例设计 135
5.4.5捉虫实践4:第二日问题的路径测试 137
5.4.6捉虫实践5:自动柜员机问题的路径测试 143
5.4.7捉虫实践6:信息采集系统的路径测试 144
5.4.8对路径的测试小结 145
5.5对循环的测试 146
5.5.1基本原理 146
5.5.2测试用例设计 146
5.5.3捉虫实践7:B样条曲线问题的测试 149
5.5.4对循环的测试小结 152
5.6对变量的测试 152
5.6.1基本原理 152
5.6.2测试用例设计 153
5.6.3捉虫实践8:佣金问题的数据流测试 154
5.6.4对变量的测试小结 156
5.7白盒测试总结 157
5.7.1测试方法总结 157
5.7.2综合使用策略 157
5.7.3测试覆盖指标 158
5.7.4对黑盒测试的评估 158
5.8本章小结 159
思考与练习 160
第6章 白盒测试案例实践 161
6.1保险金案例实践 161
6.1.1被测代码说明 161
6.1.2测试分析 162
6.1.3测试用例设计 162
6.1.4测试小结 165
6.2人寿保险金案例实践 166
6.2.1问题描述 166
6.2.2被测代码说明 166
6.2.3测试分析 167
6.2.4测试用例设计 167
6.2.5测试小结 173
6.3信息采集系统案例实践 173
6.3.1被测代码说明 173
6.3.2测试分析 173
6.3.3测试用例设计 173
6.3.4测试小结 180
6.4本章小结 180
思考与练习 180
第三部分 软件测试应用 181
第7章 单元测试 181
7.1概述 181
7.2单元测试的内容 181
7.2.1静态检查 182
7.2.2动态测试 182
7.3驱动和桩模块的设计 183
7.3.1驱动模块和桩模块的定义 183
7.3.2驱动模块和桩模块的设计 184
7.3.3捉虫实践1:账单计算问题的驱动设计 185
7.4测试需求分析 188
7.4.1测试需求概述 188
7.4.2测试需求的定义 189
7.4.3测试需求的属性 189
7.4.4测试需求的分析 190
7.4.5应注意的问题 191
7.4.6认识的误区 191
7.4.7捉虫实践2:辖区移交问题的测试需求分析 192
7.5单元测试的过程 193
7.5.1测试过程概述 193
7.5.2计划阶段 194
7.5.3设计阶段 198
7.5.4实施阶段 198
7.5.5执行阶段 199
7.5.6评估阶段 199
76日构建 200
7.6.1日构建的概念 200
7.6.2日构建的过程 200
7.6.3日构建脚本的开发 200
7.6.4日构建的优势 200
7.6.5日构建的不足 201
7.7回归测试 201
7.7.1回归测试的定义和目的 201
7.7.2回归测试的策略 202
7.7.3回归测试的实施 202
7.8捉虫实践3:第二日问题的单元测试 203
7.8.1代码说明 203
7.8.2单元测试计划 203
7.8.3单元测试设计 208
7.8.4单元测试用例 211
7.8.5单元测试脚本 216
7.8.6单元测试执行 220
7.8.7单元测试评估总结 221
7.9捉虫实践4:第二日问题的单元测试改进 221
7.9.1存在的不足 221
7.9.2改进措施 221
7.9.3改进的单元测试脚本 221
7.9.4更多讨论 223
7.10本章小结 223
思考与练习 224
第8章 集成测试 225
8.1概述 225
8.1.1集成测试的定义 225
8.1.2集成测试的内容 225
8.2集成测试的评价 225
8.3单个集成测试用例的设计 226
8.3.1成对集成 226
8.3.2捉虫实践1:第二日问题的成对集成 226
8.3.3邻居集成 227
8.3.4捉虫实践2:第二日问题的邻居集成 227
8.3.5基于独立路径的集成 227
8.3.6捉虫实践3:第二日问题基于独立路径的集成 227
8.4集成测试遍历顺序的设计 228
8.4.1大爆炸集成 228
8.4.2自顶向下的集成 229
8.4.3自底向上的集成 230
8.4.4三明治集成 231
8.5集成测试策略的比较 233
8.5.1策略比较 233
8.5.2捉虫实践8:第二日问题的综合集成测试 233
8.6本章小结 233
思考与练习 234
第9章 系统测试 235
9.1概述 235
9.2功能测试 235
9.2.1以数据为中心的系统 236
9.2.2以活动序列为中心的系统 236
9.3性能测试 237
9.4安全性测试 238
9.5兼容性测试 239
9.5.1与硬件的兼容性测试 239
9.5.2与其他软件平台和应用程序的兼容性测试 239
9.5.3数据共享的兼容性测试 239
9.6用户界面测试 240
9.7可安装性测试 242
9.8本章小结 243
思考与练习 243
第10章 测试过程管理 244
10.1软件测试过程模型 244
10.1.1 V模型 244
10.1.2 W模型 245
10.1.3 H模型 245
10.1.4 X模型 246
10.1.5综合策略 247
10.2测试用例的管理 247
10.2.1测试用例报告的撰写 247
10.2.2测试用例的组织和跟踪 249
10.3软件缺陷的管理 252
10.3.1缺陷的属性 252
10.3.2缺陷报告的撰写 254
10.3.3缺陷的跟踪和管理 261
10.4测试团队的管理 262
10.4.1测试团队的责任 262
10.4.2测试团队组织架构 263
10.4.3测试团队各角色职责 263
10.5本章小结 265
思考与练习 265
第11章 测试应用案例实践 266
11.1保险金案例实践 266
11.1.1自动化测试设计 266
11.1.2 JUnit概述 268
11.1.3基于Eclipse的JUnit4测试开发 270
11.1.4 Ant概述 272
11.1.5基于Eclipse的Ant使用 275
11.1.6测试小结 276
11.2信息采集系统案例实践 277
11.2.1自动化测试设计 277
11.2.2部分缺陷分析 278
11.2.3测试小结 278
11.3网络教学平台案例实践 279
11.3.1案例说明 279
11.3.2测试需求分析 282
11.3.3测试用例设计 283
11.3.4自动化测试设计 285
11.3.5 QTP概述 285
11.3.6基于QTp的功能测试 286
11.3.7测试小结 291
11.4分布式搜索系统案例实践 291
11.4.1案例说明 291
11.4.2自动化测试设计 291
11.4.3 LoadRunner概述 292
11.4.4基于LoadRunner的性能测试 292
11.4.5测试小结 301
11.5本章小结 301
思考与练习 301