第1章 软件测试基础 1
1.1 软件质量 1
1.1.1 软件质量保证 3
1.1.2 质量成本 4
1.2 软件测试 5
1.2.1 软件测试的定义 6
1.2.2 软件测试的目的 8
1.2.3 软件测试的原则 8
1.3 软件缺陷 9
1.3.1 软件缺陷的定义 9
1.3.2 软件缺陷的分类 10
1.4 测试用例 11
1.5 软件测试分类 13
1.6 本章小结 15
思考题 15
第2章 软件测试模型与过程 16
2.1 软件测试模型 16
2.1.1 V模型 16
2.1.2 W模型 17
2.1.3 X模型 18
2.1.4 H模型 19
2.2 软件测试过程 20
2.3 本章小结 21
思考题 22
第3章 软件测试管理 23
3.1 测试团队的建设与管理 25
3.1.1 测试团队的建设 25
3.1.2 软件测试经理 27
3.1.3 测试小组的分类 28
3.1.4 测试团队成员的合适人选 28
3.2 软件测试计划 30
3.2.1 测试计划模板 31
3.2.2 测试计划跟踪与监控 33
3.3 缺陷管理 35
3.3.1 缺陷状态与管理流程 35
3.3.2 缺陷数据分析 36
3.3.3 测试有效性度量 37
3.4 本章小结 38
思考题 39
第4章 黑盒测试 40
4.1 边界值测试 40
4.1.1 边界条件 40
4.1.2 边界值分析 42
4.1.3 健壮性边界测试 43
4.1.4 最坏情况测试 44
4.1.5 案例 45
4.2 等价类测试 47
4.2.1 等价类 47
4.2.2 等价类测试类型 49
4.2.3 用等价类设计测试用例 51
4.2.4 等价类测试指导方针 52
4.2.5 案例 52
4.3 基于判定表的测试 55
4.3.1 判定表的组成 56
4.3.2 基于判定表的测试 57
4.3.3 基于判定表测试的指导方针 57
4.3.4 案例 58
4.4 因果图 62
4.4.1 因果图的概念 62
4.4.2 因果图测试法 63
4.4.3 案例 64
4.5 其他黑盒测试方法 67
4.6 综合案例 71
4.7 本章小结 73
思考题 74
第5章 白盒测试 76
5.1 程序结构分析 76
5.1.1 基本概念 76
5.1.2 程序的控制流图 77
5.2 逻辑覆盖 79
5.2.1 语句覆盖 80
5.2.2 判定覆盖 81
5.2.3 条件覆盖 82
5.2.4 判定-条件覆盖 83
5.2.5 条件组合覆盖 84
5.2.6 路径覆盖 85
5.2.7 案例 87
5.3 路径测试 89
5.3.1 基路径测试 89
5.3.2 循环测试 95
5.4 数据流测试 98
5.5 其他白盒测试方法 102
5.6 本章小结 103
思考题 105
第6章 单元测试 109
6.1 单元测试概述 109
6.1.1 单元测试的概念 110
6.1.2 单元测试的目的 110
6.1.3 单元测试的过程 112
6.1.4 单元测试的意义 113
6.2 单元测试的环境 114
6.3 单元测试的内容 115
6.4 单元测试的策略和方法 116
6.5 案例 133
6.6 本章小结 147
思考题 148
第7章 集成测试 149
7.1 集成测试概述 149
7.1.1 集成测试的定义 150
7.1.2 集成测试的过程 151
7.2 基于功能分解的集成 152
7.3 基于调用图的集成 156
7.4 基于路径的集成 158
7.5 其他集成测试方法 160
7.6 案例 162
7.7 本章小结 178
思考题 178
第8章 系统测试 180
8.1 系统测试概述 180
8.1.1 系统测试的定义 180
8.1.2 系统测试的过程 181
8.2 系统测试的内容 182
8.2.1 功能测试 182
8.2.2 用户界面测试 184
8.2.3 性能测试 186
8.2.4 负载测试 195
8.2.5 压力测试 196
8.2.6 兼容性测试 196
8.2.7 安全性测试 197
8.2.8 其他测试类型 198
8.3 Web系统的测试 200
8.3.1 Web系统结构概述 200
8.3.2 Web系统的功能测试内容 200
8.3.3 Web系统的性能测试内容 202
8.3.4 其他测试内容 203
8.4 本章小结 207
思考题 207
第9章 面向对象软件的测试 208
9.1 面向对象技术对软件测试的影响 208
9.1.1 封装对测试的影响 209
9.1.2 信息隐藏对测试的影响 214
9.1.3 继承对测试的影响 218
9.1.4 多态和动态绑定对测试的影响 223
9.2 面向对象软件测试的层次 223
9.3 面向对象的单元测试 225
9.3.1 以方法为单元 225
9.3.2 以类为单元 226
9.4 面向对象的集成测试 228
9.4.1 基于UML的集成测试 228
9.4.2 基于MM-路径的集成测试 230
9.5 面向对象的系统测试 230
9.6 面向对象的测试和传统测试的比较 230
9.7 本章小结 231
思考题 231
第10章 自动化测试 232
10.1 自动化测试概述 232
10.1.1 软件自动化测试 232
10.1.2 自动化测试的使用领域 234
10.2 自动化测试技术 237
10.3 自动化测试工具 240
10.3.1 测试工具分类 240
10.3.2 测试工具介绍 241
10.3.3 测试工具的选择 252
10.4 本章小结 252
思考题 253
第11章 Web系统测试案例 254
11.1 博客系统概述 254
11.2 博客系统测试计划 256
11.2.1 测试需求 256
11.2.2 测试资源 256
11.2.3 测试策略 257
11.2.4 测试标准 262
11.3 博客系统功能测试 263
11.3.1 登录个人主页的测试 263
11.3.2 发表日志模块的测试 269
11.3.3 相册模块的测试 278
11.3.4 链接测试 280
11.4 博客系统性能测试 282
11.4.1 测试计划 284
11.4.2 测试用例设计 285
11.4.3 测试脚本开发 288
11.4.4 测试环境 293
11.4.5 测试执行 294
11.4.6 测试结果分析 299
11.5 其他非功能性测试 301
11.6 本章小结 303
思考题 303
第12章 软件测试实验 304
12.1 软件测试管理实验 304
12.1.1 软件测试管理实验内容 304
12.1.2 TestLink简介 304
12.1.3 TestLink的安装 306
12.2 软件缺陷管理实验 311
12.2.1 软件缺陷管理实验内容 311
12.2.2 Mantis简介 312
12.2.3 Mantis的安装 314
12.3 单元测试实验 317
12.3.1 单元测试实验内容 317
12.3.2 JUnit的安装和使用 318
12.3.3 EclEmma的安装和使用 325
12.4 功能测试实验 329
12.4.1 功能测试实验内容 329
12.4.2 Unified Functional Testing简介 330
12.5 性能测试实验 332
12.5.1 性能测试实验内容 332
12.5.2 LoadRunner简介 332
12.6 Web安全测试实验 336
12.6.1 Web安全测试实验内容 336
12.6.2 AppScan简介 336
12.7 软件测试综合实验 339
附录A 单元测试案例测试环境搭建 341
附录B 软件测试术语 343
附录C 软件测试相关网站 349
参考文献 350