第一部分 基础篇 3
第1章 软件测试概述 3
1.1 软件测试背景 3
1.1.1 著名软件错误案例 3
1.1.2 软件的定义及分类方法 5
1.1.3 软件工程 6
1.1.4 软件质量 7
1.2 软件测试基本概念 8
1.2.1 软件缺陷的定义 8
1.2.2 软件缺陷出现的原因 9
1.2.3 软件测试的定义 10
1.3 软件测试的目的和原则 10
1.3.1 软件测试的目的 10
1.3.2 软件测试的原则 11
1.4 软件测试的分类 13
1.4.1 按测试阶段划分 13
1.4.2 按是否需要执行被测试软件划分 14
1.4.3 按是否需要查看代码划分 16
1.4.4 按测试执行时是否需要人工干预划分 17
1.4.5 按测试实施组织划分 18
1.4.6 其他测试类型 18
1.5 测试用例 19
1.5.1 测试用例编写 19
1.5.2 测试用例设计 20
1.6 软件测试行业的历史、现状和前景 21
1.6.1 软件测试的历史回顾 21
1.6.2 软件测试的现状 22
1.6.3 软件测试的前景 23
1.7 小结 24
本章习题 25
第2章 软件测试生命周期 26
2.1 软件开发的基本过程 26
2.1.1 需求分析 26
2.1.2 设计 27
2.1.3 编码 29
2.1.4 测试 30
2.1.5 项目管理 30
2.2 软件开发过程模型 31
2.2.1 编码修正模型 32
2.2.2 瀑布模型 32
2.2.3 增量模型 33
2.2.4 演化模型 33
2.2.5 螺旋模型 34
2.2.6 RUP模型 36
2.2.7 MSF过程模型 37
2.2.8 敏捷开发过程模型 38
2.3 软件项目中的测试流程 38
2.3.1 软件生命周期中的测试 39
2.3.2 测试的基本流程 39
2.3.3 软件测试的组织 40
2.4 小结 40
本章习题 41
第3章 测试过程相关模型 42
3.1 测试过程模型 42
3.1.1 V模型 42
3.1.2 W模型 43
3.1.3 H模型 43
3.1.4 X模型 44
3.1.5 前置测试模型 45
3.2 测试过程改进模型 47
3.2.1 TMM 47
3.2.2 FPI 49
3.2.3 其他模型 53
3.3 小结 54
本章习题 54
第二部分 方法篇 59
第4章 静态测试与动态测试 59
4.1 静态测试技术 59
4.1.1 概述 59
4.1.2 代码检查 60
4.1.3 静态结构分析 75
4.2 动态测试技术 78
4.2.1 概述 78
4.2.2 主动测试与被动测试 79
4.3 小结 79
本章习题 80
第5章 白盒测试 81
5.1 白盒测试概述 81
5.2 程序插桩技术 81
5.3 逻辑覆盖法 84
5.3.1 语句覆盖 84
5.3.2 判定覆盖 85
5.3.3 条件覆盖 85
5.3.4 条件判定覆盖 86
5.3.5 条件组合覆盖 87
5.3.6 路径覆盖 88
5.4 基本路径法 89
5.5 白盒测试方法选择 91
5.6 小结 92
本章习题 92
第6章 黑盒测试 94
6.1 黑盒测试方法 94
6.1.1 等价类划分法 94
6.1.2 边界值分析法 97
6.1.3 因果图法 99
6.1.4 决策表法 101
6.1.5 正交试验法 102
6.1.6 场景法 103
6.2 黑盒测试方法选择 105
6.3 黑盒测试和白盒测试比较 105
6.4 小结 106
本章习题 106
第三部分 过程篇 111
第7章 单元测试 111
7.1 单元测试概述 111
7.1.1 单元测试原则 112
7.1.2 单元测试内容 112
7.1.3 单元测试方法 114
7.2 单元测试过程 116
7.2.1 进入单元测试的条件 116
7.2.2 测试策划 116
7.2.3 测试设计 117
7.2.4 测试执行 117
7.2.5 测试总结 118
7.3 单元测试中的覆盖率 118
7.3.1 函数覆盖 119
7.3.2 Z路径覆盖 119
7.3.3 ESTCA覆盖 119
7.3.4 LCSAJ覆盖 119
7.3.5 MC/DC覆盖 121
7.4 单元测试案例 122
7.4.1 测试策划 123
7.4.2 测试设计 124
7.4.3 测试执行 129
7.4.4 测试总结 130
7.5 小结 130
本章习题 130
第8章 集成测试 132
8.1 集成测试概述 132
8.1.1 集成测试原则 133
8.1.2 集成测试分析 133
8.1.3 集成测试内容 134
8.1.4 集成测试过程 135
8.2 集成测试策略 137
8.2.1 非增量式集成测试 137
8.2.2 增量式集成测试 138
8.3 常用的集成测试方法 140
8.3.1 基于功能分解的集成测试 141
8.3.2 基于调用图的功能测试 141
8.3.3 基于路径的集成测试 143
8.4 集成测试案例 146
8.4.1 测试前的准备 146
8.4.2 测试策划 147
8.4.3 测试设计与执行 149
8.4.4 集成测试验收标准 151
8.4.5 测试总结 151
8.5 小结 151
本章习题 152
第9章 系统测试 153
9.1 系统测试概述 153
9.2 系统测试类型 154
9.2.1 功能测试 154
9.2.2 性能测试 155
9.2.3 安装测试 156
9.2.4 可用性测试 158
9.2.5 压力测试 159
9.2.6 容量测试 162
9.2.7 安全性测试 162
9.2.8 健壮性测试 164
9.2.9 图形用户界面测试 165
9.2.10 文档测试 167
9.3 系统测试案例 169
9.3.1 测试准备 169
9.3.2 测试概要 169
9.3.3 测试环境 170
9.3.4 测试结果 171
9.3.5 测试结论 174
9.3.6 分析与量度 175
9.4 小结 179
本章习题 179
第10章 验收测试 180
10.1 验收测试概述 180
10.1.1 验收测试的目的 180
10.1.2 进入验收测试的条件 181
10.2 验收测试的内容及过程 181
10.2.1 验收测试的内容 182
10.2.2 验收测试的过程 183
10.3 测试的深度与广度 185
10.4 验收测试阶段 188
10.4.1 α测试阶段 188
10.4.2 β测试阶段 189
10.4.3 预最终测试阶段 190
10.4.4 最终完整性测试阶段 192
10.5 验收测试案例 192
10.5.1 项目概述 193
10.5.2 系统简介 193
10.5.3 测试内容 193
10.5.4 测试结论 194
10.6 小结 194
本章习题 194
第11章 面向对象的软件测试 195
11.1 面向对象概述 195
11.1.1 面向对象的基本概念 195
11.1.2 面向对象的开发方法 198
11.1.3 面向对象的分析与设计 200
11.1.4 面向对象模型 203
11.2 面向对象软件的测试策略 205
11.2.1 面向对象的单元测试 205
11.2.2 面向对象的集成测试 207
11.2.3 面向对象的系统测试 208
11.2.4 面向对象系统的回归测试 208
11.2.5 面向对象测试的相关模型 209
11.3 面向对象软件的测试用例设计 211
11.3.1 面向对象测试用例设计的基本概念 211
11.3.2 面向对象编程对测试的影响 211
11.3.3 基于故障的测试 212
11.3.4 基于场景的测试 212
11.3.5 表层结构和深层结构的测试 213
11.4 面向对象的软件测试案例 213
11.4.1 HelloWorld类的测试 213
11.4.2 Date.increment方法的测试 214
11.5 小结 217
本章习题 217
第四部分 工具篇 221
第12章 软件测试自动化 221
12.1 软件自动测试概述 221
12.2 手工测试与自动测试 221
12.2.1 自动测试与手工测试的比较 222
12.2.2 自动测试的优、缺点 222
12.3 自动测试的原理和方法 223
12.3.1 代码分析 223
12.3.2 捕获回放 224
12.3.3 录制回放 224
12.3.4 脚本技术 225
12.3.5 自动化比较 225
12.4 软件自动测试的开展 226
12.4.1 软件自动测试的引入原则 226
12.4.2 软件自动测试的生命周期 227
12.4.3 软件自动测试的成本 229
12.4.4 软件自动测试的导入时机 229
12.4.5 软件自动测试的人员要求 230
12.4.6 软件自动测试在实施中存在的问题 230
12.5 软件自动测试的方案选择 231
12.5.1 确定自动测试的对象和范围 231
12.5.2 选择自动测试的方案和脚本编写方法 232
12.6 软件自动测试的工具 234
12.6.1 自动测试工具的特征 234
12.6.2 自动测试工具的作用和优势 235
12.6.3 自动测试工具的选择 236
12.6.4 自动测试工具的分类 236
12.6.5 自动测试工具的局限性 240
12.7 小结 240
本章习题 240
第13章 单元测试工具JUnit 242
13.1 JUnit慨述 242
13.1.1 JUnit简介 242
13.1.2 JUnit框架组成 243
13.2 JUnit测试过程 248
13.3 JUnit测试用例 248
13.4 JUnit安装与集成 249
13.4.1 JUnit简单安装 249
13.4.2 JUnit与IDE集成安装 250
13.5 从JUnit3到JUnit4 255
13.5.1 代码构成 255
13.5.2 运行原理 257
13.5.3 打包测试 258
13.5.4 多线程测试 259
13.6 JUnit实例 259
13.6.1 实例介绍 259
13.6.2 常规测试 260
13.6.3 使用JUnit测试 261
13.7 小结 272
本章习题 272
第14章 负载测试工具LoadRunner 273
14.1 LoadRunner综述 273
14.1.1 LoadRunner简介 273
14.1.2 LoadRunner主要特性 274
14.1.3 LoadRunner组件和术语 276
14.1.4 LoadRunner工作流程 276
14.2 制定负载测试计划 277
14.2.1 分析应用程序 277
14.2.2 计划怎样执行 278
14.3 创建测试脚本 278
14.3.1 创建空白脚本 278
14.3.2 VuGen界面介绍 280
14.3.3 录制脚本 283
14.4 设计运行场景 287
14.4.1 新建场景 287
14.4.2 负载生成器管理 290
14.4.3 虚拟用户管理 291
14.4.4 运行设置 291
14.5 运行测试场景 291
14.6 监视场景 292
14.7 结果分析 294
14.8 LoadRunner综合应用 295
14.9 小结 298
本章习题 299
第五部分 实战篇 303
第15章 聚合文件管理工具测试 303
15.1 案例概述 303
15.2 测试计划 306
15.3 测试用例 311
15.3.1 单元测试用例 311
15.3.2 功能测试用例 314
15.4 测试分析报告 318
15.5 小结 320
本章习题 321
第16章 网上书店系统测试 322
16.1 网站测试概述 322
16.1.1 网站测试概念 322
16.1.2 网站测试过程 324
16.1.3 数据库测试 325
16.1.4 用户界面测试 326
16.1.5 构件级测试 327
16.1.6 配置测试 328
16.1.7 安全性测试 329
16.1.8 系统性能测试 330
16.2 案例概述 332
16.2.1 用户简介 332
16.2.2 项目的目的与目标 332
16.2.3 目标系统功能需求 333
16.2.4 目标系统性能需求 344
16.2.5 目标系统界面需求 345
16.2.6 目标系统的其他需求 345
16.2.7 目标系统的假设与约束条件 345
16.3 项目测试计划 345
16.3.1 测试项目 345
16.3.2 测试方案 345
16.3.3 测试资源 346
16.4 测试用例设计 346
16.4.1 单元测试用例 346
16.4.2 功能测试用例 350
16.4.3 性能测试用例 352
16.5 测试进度 353
16.5.1 单元测试 353
16.5.2 集成测试 354
16.5.3 系统测试 354
16.5.4 验收测试 355
16.6 评价 355
16.6.1 范围 355
16.6.2 数据整理 355
16.6.3 量度 356
16.7 测试分析报告 356
16.7.1 引言 356
16.7.2 测试计划实施 357
16.7.3 评价 358
16.8 小结 358
本章习题 358
第17章 手机视频播放软件测试 360
17.1 手机软件测试概述 360
17.1.1 移动终端介绍 360
17.1.2 手机软件测试用例设计 361
17.1.3 手机软件测试基本流程 363
17.2 手机软件测试技术 365
17.2.1 手机智能终端平台简介 365
17.2.2 测试环境搭建实例 372
17.2.3 业务应用软件测试 382
17.3 案例概述 388
17.3.1 项目概述 388
17.3.2 功能需求 389
17.3.3 性能需求 391
17.4 测试计划 392
17.4.1 测试目标 392
17.4.2 测试方案 392
17.4.3 测试资源 392
17.5 测试用例 393
17.5.1 功能测试用例 393
17.5.2 性能测试用例 399
17.6 测试过程 399
17.6.1 单元测试 399
17.6.2 集成测试 400
17.6.3 系统测试 401
17.6.4 验收测试 402
17.7 测试分析报告 403
17.7.1 引言 403
17.7.2 测试概要 403
17.7.3 测试结果及发现 403
17.7.4 分析摘要 404
17.7.5 测试资源消耗 405
17.8 小结 405
本章习题 405
部分习题参考答案 406
附录A 测试文档模板 424
参考文献 428