第1章 软件测试概述 1
1.1 软件测试的意义 1
1.1.1 软件缺陷的典型例子 1
1.1.2 软件缺陷的产生原因 3
1.1.3 软件测试的目标 4
1.2 软件测试中的认识误区 4
1.3 软件测试的发展史及现状 6
1.3.1 软件测试的发展史 6
1.3.2 软件测试的国内外现状 7
1.4 软件测试的发展趋势 8
1.5 小结 9
习题 9
第2章 软件测试基础 10
2.1 软件测试概念 10
2.1.1 软件测试的定义和对象 10
2.1.2 验证与确认 11
2.2 软件测试分类 12
2.2.1 按开发阶段分类 12
2.2.2 按测试实施组织分类 13
2.2.3 按测试策略分类 13
2.2.4 按测试执行方式分类 14
2.2.5 其他测试方法和技术 14
2.3 软件测试过程 16
2.3.1 软件测试过程模型 17
2.3.2 测试过程的实施策略 20
2.4 测试驱动开发 21
2.4.1 测试驱动开发的概念 21
2.4.2 测试驱动开发的优点 22
2.4.3 测试驱动开发的原则 23
2.4.4 关于测试驱动开发的一些讨论 24
2.5 软件测试的原则 25
2.6 软件测试文档 26
2.6.1 软件测试文档概述 26
2.6.2 《计算机软件测试文件编制规范》(GB/T 9386—1988)简介 26
2.6.3 规范GB/T 9386—1988内容要求 29
2.7 小结 34
习题 34
第3章 黑盒测试方法 36
3.1 测试用例 36
3.2 黑盒测试方法概述 37
3.2.1 黑盒测试的概念和对象 37
3.2.2 黑盒测试的优点和局限性 38
3.3 典型的黑盒测试方法 39
3.3.1 等价类划分法 39
3.3.2 边界值分析法 42
3.3.3 错误推测法 42
3.3.4 因果图法 45
3.3.5 判定表法 50
3.3.6 正交试验法 50
3.3.7 场景法 55
3.3.8 功能图法 60
3.4 黑盒测试方法的综合使用策略 61
3.5 小结 61
习题 62
第4章 白盒测试方法 64
4.1 白盒测试方法概述 64
4.1.1 白盒测试的概念 64
4.1.2 白盒测试的优点和局限性 65
4.1.3 白盒测试方法的分类 65
4.2 典型的白盒测试方法 66
4.2.1 代码检查法 66
4.2.2 静态结构分析法 67
4.2.3 代码质量度量法 67
4.2.4 逻辑覆盖法 67
4.2.5 基本路径测试法 70
4.2.6 控制结构测试 75
4.2.7 程序插桩 77
4.3 白盒测试方法的综合使用策略 78
4.4 对黑盒、白盒测试方法的总结 79
4.5 小结 79
习题 80
第5章 单元测试 81
5.1 单元测试概述 81
5.2 单元测试的步骤 83
5.3 单元测试环境 83
5.4 单元测试用例的设计 86
5.4.1 单元测试的内容 86
5.4.2 单元测试用例的设计思路 87
5.5 单元测试工具CppUnit简介 88
5.5.1 CppUnit简介 88
5.5.2 CppUnit单元测试实例1 94
5.5.3 CppUnit单元测试实例2 96
5.6 小结 102
习题 103
第6章 集成测试 104
6.1 集成测试的概念 104
6.1.1 集成测试的含义 104
6.1.2 接口的分类 105
6.1.3 集成测试的测试方法 106
6.2 集成测试的实施 106
6.3 集成测试的策略 107
6.3.1 典型的集成测试策略 107
6.3.2 集成测试策略的选取 112
6.3.3 模块和接口的确定 113
6.4 小结 113
习题 114
第7章 确认测试、系统测试和验收测试 115
7.1 确认测试的概念和活动 115
7.2 系统测试的概念和类型 116
7.2.1 系统测试的概念 116
7.2.2 系统测试的主要类型 117
7.2.3 系统测试与集成测试的区别 124
7.3 性能测试策略 125
7.3.1 全面性能测试模型 125
7.3.2 性能测试策略 128
7.3.3 全面性能测试模型的使用 130
7.4 基于Web的系统测试 131
7.4.1 功能测试 131
7.4.2 用户界面测试 133
7.4.3 兼容性测试和配置测试 134
7.4.4 安全测试 135
7.4.5 接口测试 136
7.5 回归测试 137
7.5.1 回归测试的概念 137
7.5.2 回归测试策略 138
7.6 系统测试步骤 139
7.7 验收测试 140
7.7.1 验收测试的概念 140
7.7.2 验收测试的策略 140
7.8 小结 141
习题 141
第8章 面向对象软件的测试 143
8.1 面向对象开发方法概述 143
8.1.1 面向过程开发方法的不足 143
8.1.2 面向对象的基本概念 144
8.1.3 面向对象开发方法的优点 146
8.1.4 统一建模语言UML简介 147
8.2 面向对象软件测试概述 148
8.2.1 面向对象软件测试的重要性 148
8.2.2 面向对象软件的特点及其对软件测试的影响 148
8.2.3 面向对象软件的测试模型 150
8.3 小结 159
习题 160
第9章 软件测试自动化 161
9.1 自动化测试概述 161
9.2 自动化测试的引入和实施 162
9.2.1 对自动化测试的认识误区 162
9.2.2 自动化测试的实施流程 164
9.3 自动化测试的原理和方法 165
9.3.1 脚本技术 165
9.3.2 脚本预处理 167
9.3.3 自动比较技术 167
9.4 对产品可测试性的考虑 167
9.5 测试工具概述 168
9.5.1 主流测试工具 168
9.5.2 IBM Rational软件自动化测试解决方案 170
9.5.3 HP Mercury软件自动化测试解决方案 175
9.6 使用WinRunner进行功能测试 180
9.6.1 WinRunner简介 180
9.6.2 WinRunner测试流程 184
9.6.3 GUI Map 187
9.6.4 创建测试 192
9.6.5 GUI检查点 196
9.6.6 文本检查点 205
9.6.7 图像检查点 208
9.6.8 使用函数生成器 212
9.6.9 数据驱动测试 215
9.7 小结 215
习题 215
第10章 软件质量和质量保证 216
10.1 软件质量 216
10.1.1 软件质量的含义 216
10.1.2 软件质量模型 217
10.2 软件度量 218
10.2.1 软件度量概述 218
10.2.2 软件度量的目标 220
10.2.3 软件度量的内容 221
10.3 软件能力成熟度模型 223
10.3.1 软件能力成熟度模型概述 223
10.3.2 软件能力成熟度模型的建立和评估 227
10.3.3 个体软件过程PSP和群组软件过程TSP 228
10.3.4 能力成熟度模型集成CMMI 229
10.3.5 SPCA评估体系 232
10.4 其他软件管理体系 233
10.5 软件质量保证 233
10.5.1 软件质量保证概述 233
10.5.2 软件质量保证的工作内容 234
10.5.3 软件质量保证的实施 234
10.5.4 软件质量保证与测试的区别 235
10.6 小结 236
习题 236
第11章 软件测试案例 237
11.1 企业自动化测试方案选型案例 237
11.1.1 公司背景介绍 237
11.1.2 公司应用系统现状 238
11.1.3 公司软件测试现状 238
11.1.4 可供选择的方案 238
11.1.5 最终采用的测试自动化方案 239
11.2 SQL Server 2000压力测试 240
11.2.1 测试项目概述 240
11.2.2 测试计划 240
11.2.3 测试准备 240
11.2.4 测试过程 241
11.2.5 测试结果 243
11.3 某金融业务系统的性能测试 243
11.3.1 测试项目概述 243
11.3.2 被测系统的性能要求 244
11.3.3 性能测试过程 245
11.4 小结 249
附录A 常见的软件测试术语 250
附录B 优秀的测试站点资源 260
参考文献 263