第1章 测试概述 1
1.1?概述 1
1.2?测试的目标与局限性 2
1.2.1 测试人员的思维 2
1.2.2 用户级别的非软件测试
——买车 3
1.2.3 开发人员级别的非软件
测试——造车 4
1.2.4 测试的4个主要目标 7
1.2.5 开发公理——质量必须
在开发时考虑,而不是
测试时 9
1.3?测试的价值与开销 9
1.3.1 市场级别的非软件测试——
车辆安全与销售额 10
1.3.2 估算失败的开销 10
1.3.3 Basili和Boehm的指数
定律 11
1.3.4 Internet上的“淘金潮” 13
1.3.5 电子商务的致命弱点 13
1.4?测试与软件开发生命周期的关系 13
1.4.1 软件测试作为一项技术
职业的发展史 13
1.4.2 好的软件测试的10个
准则 14
1.4.3 “GOSSIP”游戏 18
1.5?软件测试中的测试人员和开发
人员的角色 19
1.5.1 软件质量期望的简史——
“天堂的迷失” 19
1.5.2 测试人员在软件开发中的
角色 20
1.5.3 测试工具专家在软件
开发中的角色 20
1.5.4 测试组中都有谁 21
1.6?关于软件测试的观点讨论 21
1.7?本章小结 21
1.7.1 4个主要的测试目标 21
1.7.2 开发公理——质量必须在
开发时而不是测试时考虑 22
1.7.3 软件测试作为一项技术
职业的发展史 22
1.7.4 好的软件测试的10个
准则 22
第2章?软件开发生命周期 24
2.1 概述 24
2.2?方法和工具 24
2.3?软件开发生命周期的发展 25
2.3.1 经典的SDLC 25
2.3.2 原型化方法 25
2.3.3 快速应用程序开发 26
2.4?逐步开发方法 27
2.4.1 生命周期阶段 27
2.4.2 系统开发步骤 28
2.4.3 在各阶段中的软件测试 28
2.5?初始调研阶段 30
2.5.1 进行企业分析 30
2.5.2 定义系统目的、目标和
性能标准 31
2.5.3 评估系统和项目风险 32
2.5.4 评估系统和项目的可行性 33
2.5.5 通过JAD会议确认初始
结论 33
2.5.6 获得批准 34
2.6?分析阶段 34
2.6.1 分析功能需求 34
2.6.2 分析已有系统文档 34
2.6.3 访谈 34
2.6.4 调查研究 35
2.6.5 举行JAD会议 35
2.6.6 观察现有系统 35
2.6.7 记录功能需求 35
2.7?设计阶段 36
2.7.1 寻找可行的设计方案 37
2.7.2 评估可行的设计方案 38
2.7.3 举行JAD会议确定并
评估设计方案 39
2.7.4 选取最优的设计方案 39
2.8?初始构建阶段 39
2.8.1 构建每个模块的软件 40
2.8.2 向用户和项目投资方演示
新的系统模块 42
2.9?最终构建阶段 42
2.9.1 构建并测试可投产的软件 42
2.9.2 构建并测试可投产的
数据库或数据仓库 43
2.9.3 安装必要的新硬件和
网络连接 43
2.9.4 准备好所需的物理设施 43
2.9.5 测试硬件配置 43
2.9.6 完成所有文档 43
2.9.7 争取用户同意开始运行 43
2.9.8 培训参与人员和用户 44
2.10?安装阶段 44
2.10.1 安装系统组件 44
2.10.2 移交新系统 44
2.10.3 进行实施后评估 44
2.11?关于PDM的观点讨论 45
2.12?本章小结 45
第3章 结构化测试概述 47
3.1?概述 47
3.2?软件测试人员的清单 48
3.3?SPRAE——一个通用的结构化
测试方法 49
3.3.1 规约 50
3.3.2 预先策划 50
3.3.3 可重复性 50
3.3.4 责任说明 50
3.3.5?经济性 51
3.4?关于结构化测试的观点讨论 52
第4章?测试策略 53
4.1?概述 53
4.2?测试策略中的“棋子” 53
4.2.1 静态测试 53
4.2.2 白盒测试 54
4.2.3 黑盒测试 55
4.2.4 性能测试 55
4.3?二维测试策略棋盘 56
4.4?三维测试策略棋盘 60
4.5?关于测试策略的观点讨论 62
第5章 测试计划 63
5.1?概述 63
5.2?测试计划 63
5.3?测试用例 66
5.3.1 测试用例细节 67
5.3.2 动作 70
5.4?在现实世界中编写测试计划与
测试用例 71
5.5?测试文档标准 72
5.6?关于测试计划的观点讨论 73
第6章 静态测试 74
6.1?概述 74
6.2?静态测试的目标 74
6.3?静态测试的备选文档 74
6.3.1 软件开发管理人员文档 75
6.3.2 软件开发人员文档 76
6.3.3 测试人员文档 76
6.3.4 管理员文档 76
6.3.5 最终用户文档 77
6.4?静态测试技术 77
6.5?跟踪静态测试所发现的错误 78
6.6?关于静态测试的观点讨论 78
第7章 功能测试 80
7.1?概述 80
7.2?从用况到功能测试用例 80
7.3?功能测试方法 83
7.3.1 用户导航测试 83
7.3.2 事务界面测试 83
7.3.3 事务流程测试 84
7.3.4 报告界面测试 84
7.3.5 报告流程测试 85
7.3.6 数据库测试 85
7.4?回归测试的方法 86
7.5?白盒测试技术 86
7.5.1 语句覆盖技术 87
7.5.2 分支(简单条件)覆盖
技术 87
7.5.3 复合条件覆盖技术 87
7.5.4 路径覆盖技术 88
7.5.5 循环覆盖技术 89
7.5.6 直觉和经验 89
7.6?黑盒测试技术 91
7.6.1 等价类技术 91
7.6.2 边界值分析技术 92
7.6.3 预期结果覆盖技术 93
7.6.4 直觉和经验 95
7.7?本章小结 96
7.8?关于功能测试的观点讨论 98
第8章 结构(非功能)测试 99
8.1?概述 99
8.2?接口测试 99
8.3?安全测试 100
8.4?安装测试 101
8.5?冒烟测试 101
8.6?管理测试 102
8.7?备份和恢复测试 102
8.8?关于结构测试的观点讨论 103
8.9?本章小结 103
第9章 性能测试 105
9.1?概述 105
9.2?负载规划技术 105
9.2.1 性能负载需求文档 106
9.2.2 性能负载峰值文档 107
9.3?负载执行技术 108
9.3.1 负载上行到峰值 109
9.3.2 负载从峰值下行 109
9.3.3 峰值性能的度量 110
9.4?构件性能测试 110
9.5?往返性能 110
9.5.1 一个典型的性能响应
曲线 112
9.5.2 空测试系统中的周六
峰值负载 114
9.5.3 周六的峰值负载组合 115
9.5.4 周六负载的致命缺陷 116
9.5.5 周六负载的致命缺陷的
修正 116
9.5.6 工作日负载性能计划的
执行 119
9.6?关于性能测试的观点讨论 119
9.7?本章小结 120
第10章 测试环境 122
10.1?概述 122
10.2?模拟 122
10.3?基准 123
10.4?测试环境 123
10.5?测试环境的目标 124
10.6?好的测试环境及使用它们的
原因 126
10.7?不好的测试环境及避免它们
的原因 127
10.8?关于测试环境的观点讨论 128
10.9?本章小结 128
第11章 自动化测试工具 130
11.1?概述 130
11.2?软件自动化测试工具简史 130
11.3?测试工具记录/回放范型 132
11.4?测试工具触点范型 134
11.4.1 功能测试工具的触点
范型 134
11.4.2 性能测试工具的触点
范型 135
11.5?测试工具执行范型 137
11.6?测试工具带来的好处 138
11.6.1 可重复性——投资回报
问题 138
11.6.2 可重复性的精度——
技术问题 138
11.6.3 隐藏动作和结果的验证
——技术问题 139
11.6.4 时间点精度和分布——
技术问题 139
11.6.5 完成手动测试不可能
完成的任务——投资
回报问题 140
11.6.6 可复用性(回归测试)
——投资回报问题 140
11.7?测试工具带来的问题 140
11.7.1 测试工具成本——财务、
资源和技巧问题 140
11.7.2 一次性的测试安装成本 141
11.7.3 测试工具的能力范围 141
11.8?关于自动化测试工具的观点
讨论 142
11.9?本章小结 142
第12章 分析并解读测试结果 144
12.1?概述 144
12.2?尝试过的测试用例与成功的
测试用例 144
12.3?关注单个缺陷的发现 147
12.4?关注缺陷积压日志的发现 148
12.5?关注缺陷集群的发现 149
12.6?以往错误发现模式的作用 153
12.6.1 使用以往项目缺陷
历史作为出发点 154
12.6.2 在启动新项目之前利用
以往项目的缺陷历史 156
12.6.3 在开始新项目时利用
以往项目的缺陷历史 157
12.6.4 在新项目过程中利用
以往项目的缺陷历史 159
12.7?Rayleigh曲线——缺陷发现模式
的瞄准线 161
12.8?更多的缺陷跟踪度量指标 164
12.9?关于测试结果的观点讨论 165
12.10?本章小结 165
第13章 一个全软件开发生命周期的
测试项目 167
13.1?概述 167
13.2?初始调研阶段 168
13.3?分析阶段 169
13.3.1 初始会议和结论 169
13.3.2 需求撰写和复审——
用况 171
13.3.3 需求静态测试 172
13.3.4 使用静态测试的结果
修正和改进需求 172
13.3.5 完成测试策略 174
13.4?设计阶段 175
13.4.1 支持系统的设计 175
13.4.2 应用软件的逻辑设计 176
13.4.3 逻辑设计的静态测试 177
13.4.4 设计测试计划 177
13.5?初始构建阶段 180
13.5.1 静态测试 180
13.5.2 测试环境搭建和测试
数据准备 181
13.5.3 功能测试 182
13.5.4 结构测试 183
13.5.5 性能测试 184
13.5.6 缺陷追踪和分析 185
13.5.7 初始构建阶段的结束 187
13.6?最终构建阶段 188
13.6.1 静态测试 188
13.6.2 功能测试 189
13.6.3 结构测试 189
13.6.4 性能测试 189
13.6.5 缺陷跟踪和分析 190
13.7?实施阶段 191
13.8?实施后阶段 191
13.9?案例结束 191
13.9.1 小结 192
13.9.2 案例声明 192
第14章 复杂应用测试 193
14.1?概述 193
14.2?单级应用 193
14.3?两级应用 195
14.4?三级应用 198
14.5?多级应用 201
14.6?关于复杂应用测试的观点
讨论 206
14.7?本章小结 206
第15章 测试的未来发展方向 208
15.1?概述 208
15.2?会增加对专业软件测试人员
需求的软件开发的未来发展
方向 208
15.3?软件测试目前面临的挑战 209
15.4?软件测试近期面临的挑战 209
15.5?软件测试将要面临的挑战 210
15.6?关于未来测试方向的观点讨论 211
15.7?本章小结 211
参考文献 213
