第1章 测试概述 1
1.1概述 1
1.2测试的目标与局限性 2
测试人员的思维 2
用户级别的非软件测试——买车 3
开发人员级别的非软件测试——造车 4
测试的4个主要目标 7
开发公理——质量必须在开发时考虑,而不是测试时 9
1.3测试的价值与开销 9
市场级别的非软件测试——车辆安全与销售额 10
估算失败的开销 10
Basili和Boehm的指数定律 11
Internet上的“淘金潮” 13
电子商务的致命弱点 13
1.4测试与软件开发生命周期的关系 13
软件测试作为一项技术职业的发展史 13
好的软件测试的10个准则 14
“GOSSIP”游戏 18
1.5软件测试中的测试人员和开发人员的角色 19
软件质量期望的简史——“天堂的迷失” 19
测试人员在软件开发中的角色 20
测试工具专家在软件开发中的角色 20
测试组中都有谁 21
1.6关于软件测试的观点讨论 21
1.7本章小结 21
4个主要的测试目标 21
开发公理——质量必须在开发时而不是测试时考虑 22
软件测试作为一项技术职业的发展史 22
好的软件测试的10个准则 22
第2章 软件开发生命周期 24
2.1概述 24
2.2方法和工具 24
2.3软件开发生命周期的发展 25
经典的SDLC 25
原型化方法 25
快速应用程序开发 26
2.4逐步开发方法 27
生命周期阶段 27
系统开发步骤 28
在各阶段中的软件测试 28
2.5初始调研阶段 30
进行企业分析 30
定义系统目的、目标和性能标准 31
评估系统和项目风险 32
评估系统和项目的可行性 33
通过JAD会议确认初始结论 33
获得批准 34
2.6 分析阶段 34
分析功能需求 34
分析已有系统文档 34
访谈 34
调查研究 35
举行JAD会议 35
观察现有系统 35
记录功能需求 35
2.7设计阶段 36
寻找可行的设计方案 37
评估可行的设计方案 38
举行JAD会议确定并评估设计方案 39
选取最优的设计方案 39
2.8初始构建阶段 39
构建每个模块的软件 40
向用户和项目投资方演示新的系统模块 42
2.9最终构建阶段 42
构建并测试可投产的软件 42
构建并测试可投产的数据库或数据仓库 43
安装必要的新硬件和网络连接 43
准备好所需的物理设施 43
测试硬件配置 43
完成所有文档 43
争取用户同意开始运行 43
培训参与人员和用户 44
2.10安装阶段 44
安装系统组件 44
移交新系统 44
进行实施后评估 44
2.11关于PDM的观点讨论 45
2.12本章小结 45
第3章 结构化测试概述 47
3.1概述 47
3.2软件测试人员的清单 48
3.3 SPRAE——一个通用的结构化测试方法 49
规约 50
预先策划 50
可重复性 50
责任说明 50
经济性 51
3.4关于结构化测试的观点讨论 52
第4章 测试策略 53
4.1概述 53
4.2测试策略中的“棋子” 53
静态测试 53
白盒测试 54
黑盒测试 55
性能测试 55
4.3二维测试策略棋盘 56
4.4三维测试策略棋盘 60
4.5关于测试策略的观点讨论 62
第5章 测试计划 63
5.1概述 63
5.2测试计划 63
5.3测试用例 66
测试用例细节 67
动作 70
5.4在现实世界中编写测试计划与测试用例 71
5.5测试文档标准 72
5.6关于测试计划的观点讨论 73
第6章 静态测试 74
6.1概述 74
6.2静态测试的目标 74
6.3静态测试的备选文档 74
软件开发管理人员文档 75
软件开发人员文档 76
测试人员文档 76
管理员文档 76
最终用户文档 77
6.4静态测试技术 77
6.5跟踪静态测试所发现的错误 78
6.6关于静态测试的观点讨论 78
第7章 功能测试 80
7.1概述 80
7.2从用况到功能测试用例 80
7.3功能测试方法 83
用户导航测试 83
事务界面测试 83
事务流程测试 84
报告界面测试 84
报告流程测试 85
数据库测试 85
7.4回归测试的方法 86
7.5白盒测试技术 86
语句覆盖技术 87
分支(简单条件)覆盖技术 87
复合条件覆盖技术 87
路径覆盖技术 88
循环覆盖技术 89
直觉和经验 89
7.6黑盒测试技术 91
等价类技术 91
边界值分析技术 92
预期结果覆盖技术 93
直觉和经验 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
性能负载需求文档 106
性能负载峰值文档 107
9.3负载执行技术 108
负载上行到峰值 109
负载从峰值下行 109
峰值性能的度量 110
9.4构件性能测试 110
9.5往返性能 110
一个典型的性能响应曲线 112
空测试系统中的周六峰值负载 114
周六的峰值负载组合 115
周六负载的致命缺陷 116
周六负载的致命缺陷的修正 116
工作日负载性能计划的执行 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
功能测试工具的触点范型 134
性能测试工具的触点范型 135
11.5测试工具执行范型 137
11.6测试工具带来的好处 138
可重复性——投资回报问题 138
可重复性的精度——技术问题 138
隐藏动作和结果的验证——技术问题 139
时间点精度和分布——技术问题 139
完成手动测试不可能完成的任务——投资回报问题 140
可复用性(回归测试)——投资回报问题 140
11.7测试工具带来的问题 140
测试工具成本——财务、资源和技巧问题 140
一次性的测试安装成本 141
测试工具的能力范围 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
使用以往项目缺陷历史作为出发点 154
在启动新项目之前利用以往项目的缺陷历史 156
在开始新项目时利用以往项目的缺陷历史 157
在新项目过程中利用以往项目的缺陷历史 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
初始会议和结论 169
需求撰写和复审——用况 171
需求静态测试 172
使用静态测试的结果 172
修正和改进需求 172
完成测试策略 174
13.4设计阶段 175
支持系统的设计 175
应用软件的逻辑设计 176
逻辑设计的静态测试 177
设计测试计划 177
13.5初始构建阶段 180
静态测试 180
测试环境搭建和测试数据准备 181
功能测试 182
结构测试 183
性能测试 184
缺陷追踪和分析 185
初始构建阶段的结束 187
13.6最终构建阶段 188
静态测试 188
功能测试 189
结构测试 189
性能测试 189
缺陷跟踪和分析 190
13.7实施阶段 191
13.8实施后阶段 191
13.9案例结束 191
小结 192
案例声明 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