第1章 软件测试的背景 3
1.1 臭名昭著的软件错误用例研究 3
1.1.1 迪斯尼的狮子王,1994—1995 3
第一部分 软件测试综述 3
1.1.2 英特尔奔腾浮点除法缺陷,1994 4
1.1.3 美国航天局火星极地登陆者号探测器,1999 4
1.1.4 爱国者导弹防御系统,1991 5
1.1.5 千年虫问题,大约1974 5
1.1.6 危险的预见,2004 5
1.2.1 软件失败的术语 6
1.2 软件缺陷是什么 6
1.2.2 软件缺陷的官方定义 7
1.3 为什么会出现软件缺陷 8
1.4 软件缺陷的修复费用 9
1.5 软件测试员究竟做些什么 10
1.6 优秀的软件测试员应具备的素质 10
1.7 小结 11
1.8 小测验 12
2.1.1 软件产品需要多少投入 13
2.1 产品的组成部分 13
第2章 软件开发的过程 13
2.1.2 软件产品由哪些部分组成 16
2.2 软件项目成员 17
2.3 软件开发生命周期模式 18
2.3.1 大爆炸模式 18
2.3.2 边写边改模式 19
2.3.3 瀑布模式 20
2.3.4 螺旋模式 21
2.5 小测验 22
2.4 小结 22
第3章 软件测试的实质 23
3.1 测试的原则 23
3.1.1 完全测试程序是不可能的 23
3.1.2 软件测试是有风险的行为 24
3.1.3 测试无法显示潜伏的软件缺陷 24
3.1.4 找到的软件缺陷越多,就说明软件缺陷越多 25
3.1.5 杀虫剂怪事 25
3.1.6 并非所有软件缺陷都要修复 26
3.1.7 什么时候才叫缺陷难以说清 27
3.1.10 软件测试是一项讲究条理的技术专业 28
3.1.8 产品说明书从没有最终版本 28
3.1.9 软件测试员在产品小组中不受欢迎 28
3.2 软件测试的术语和定义 29
3.2.1 精确和准确 29
3.2.2 确认和验证 30
3.2.3 质量和可靠性 30
3.2.4 测试和质量保证(QA) 30
3.3 小结 31
3.4 小测验 31
4.1 开始测试 35
第二部分 测试基础 35
第4章 检查产品说明书 35
4.1.1 黑盒测试和白盒测试 36
4.1.2 静态测试和动态测试 37
4.1.3 静态黑盒测试、测试产品说明书 37
4.2 对产品说明书进行高级审查 37
4.2.1 假设自己是客户 38
4.2.2 研究现有的标准和规范 38
4.3.1 产品说明书属性检查清单 39
4.3 产品说明书的低层次测试技术 39
4.2.3 审查和测试类似软件 39
4.3.2 产品说明书术语检查清单 40
4.4 小结 40
4.5 小测验 40
第5章 带上眼罩测试软件 42
5.1 动态黑盒测试:带上眼罩测试软件 42
5.2 通过性测试和失效性测试 43
5.3 等价类划分 44
5.4 数据测试 46
5.4.1 边界条件 47
5.4.2 次边界条件 49
5.4.3 默认、空白、空值、零值和无 51
5.4.4 非法、错误、不正确和垃圾数据 52
5.5 状态测试 53
5.5.1 测试软件的逻辑流程 54
5.5.2 失败状态测试 57
5.6 其他黑盒测试技术 58
5.6.1 像笨拙的用户那样做 58
5.7 小结 59
5.6.4 凭借经验、直觉和预感 59
5.6.2 在已经找到的软件缺陷的地方再找找 59
5.6.3 像黑客一样考虑问题 59
5.8 小测验 60
第6章 检查代码 61
6.1 静态白盒测试:检查设计和代码 61
6.2 正式审查 62
6.2.1 同事审查 63
6.2.2 走查 63
6.2.3 检验 63
6.3.1 编程标准和规范示例 64
6.3 编码标准和规范 64
6.3.2 获取标准 66
6.4 通用代码审查清单 66
6.4.1 数据引用错误 66
6.4.2 数据声明错误 67
6.4.3 计算错误 67
6.4.4 比较错误 67
6.4.8 其他检查 68
6.4.7 输入/输出错误 68
6.4.6 子程序参数错误 68
6.4.5 控制流程错误 68
6.5 小结 69
6.6 小测验 69
第7章 带上X光眼镜测试软件 70
7.1 动态白盒测试 70
7.2 动态白盒测试和调试 71
7.3 分段测试 72
7.3.1 单元测试和集成测试 72
7.3.2 单元测试示例 74
7.4 数据覆盖 75
7.4.1 数据流 76
7.4.2 次边界 76
7.4.3 公式和等式 77
7.4.4 错误强制 77
7.5 代码覆盖 78
7.5.1 程序语句和代码行覆盖 79
7.5.2 分支覆盖 79
7.5.3 条件覆盖 80
7.7 小测验 81
7.6 小结 81
第8章 配置测试 85
8.1 配置测试综述 85
第三部分 运用测试技术 85
8.1.1 分离配置缺陷 88
8.1.2 计算工作量 89
8.2 执行任务 90
8.2.1 确定所需的硬件类型 90
8.2.2 确定有哪些厂商的硬件、型号和驱动程序可用 90
8.2.4 将确定后的硬件配置缩减为可控制的范围 91
8.2.3 确定可能的硬件特性、模式和选项 91
8.2.5 明确与硬件配置有关的软件唯一特性 92
8.2.6 设计在每一种配置中执行的测试用例 93
8.2.7 在每种配置中执行测试 93
8.2.8 反复测试直到小组对结果满意为止 93
8.3 获得硬件 93
8.4 明确硬件标准 94
8.6 小结 95
8.7 小测验 95
8.5 对其他硬件进行配置测试 95
第9章 兼容性测试 96
9.1 兼容性测试综述 96
9.2 平台和应用程序版本 97
9.2.1 向后和向前兼容 97
9.2.2 测试多个版本的影响 98
9.3 标准和规范 99
9.3.1 高级标准和规范 99
9.4 数据共享兼容性 100
9.3.2 低级标准和规范 100
9.5 小结 102
9.6 小测验 102
第10章 外国语言测试 103
10.1 使文字和图片有意义 103
10.2 翻译问题 104
10.2.1 文本扩展 104
10.2.2 ASCII、DBCS和Unicode 105
10.2.3 热键和快捷键 105
10.2.5 字符计算 106
10.2.4 扩展字符 106
10.2.6 从左向右和从右向左读 107
10.2.7 图形中的文字 107
10.2.8 让文本与代码脱离 107
10.3 本地化问题 108
10.3.1 内容 108
10.3.2 数据格式 109
10.4 配置和兼容性问题 110
10.4.1 国外平台配置 110
10.4.2 数据兼容性 111
10.5 测试量有多大 112
10.6 小结 113
10.7 小测验 113
第11章 易用性测试 114
11.1 用户界面测试 114
11.2 优秀UI由什么构成 115
11.2.1 符合标准和规范 115
11.2.2 直观 116
11.2.4 灵活 117
11.2.3 一致 117
11.2.5 舒适 118
11.2.6 正确 118
11.2.7 实用 119
11.3 为有残疾障碍的人员测试:辅助选项测试 119
11.3.1 法律要求 120
11.3.2 软件中的辅助特性 120
11.4 小结 122
11.5 小测验 122
12.1 软件文档的类型 123
第12章 测试文档 123
12.2 文档测试的重要性 125
12.3 审查文档时要找什么 126
12.4 文档测试的实质 127
12.5 小结 127
12.6 小测验 127
第13章 软件安全性测试 129
13.1 战争游戏——电影 129
13.2 了解动机 130
13.3 威胁模式分析 131
13.4 软件安全是一项功能吗?软件漏洞是一个缺陷吗 134
13.5 了解缓冲区溢出 134
13.6 使用安全的字符串函数 135
13.7 计算机取证 137
13.8 小结 139
13.9 小测验 139
第14章 网站测试 141
14.1 网页基础 141
14.2 黑盒测试 142
14.2.1 文本 143
14.2.2 超级链接 144
14.2.3 图片 145
14.2.4 表单 145
14.2.5 对象和其他各种简单的功能 145
14.3 灰盒测试 146
14.4 白盒测试 147
14.5 配置和兼容性测试 148
14.6 易用性测试 149
14.9 小测验 151
14.7 自动化测试简介 151
14.8 小结 151
第四部分 测试的补充第15章 自动测试和测试工具 155
15.1 工具和自动化的好处 155
15.2 测试工具 156
15.2.1 查看器和监视器 156
15.2.2 驱动程序 157
15.2.3 桩 158
15.2.5 干扰注入器和噪声发生器 159
15.2.4 压力和负载工具 159
15.2.6 分析工具 160
15.3 软件测试自动化 160
15.3.1 宏录制和回放 161
15.3.2 可编程的宏 162
15.3.3 完全可编程的自动测试工具 163
15.4 随机测试:猴子和大猩猩 164
15.4.1 笨拙的猴子 165
15.4.2 半聪明的猴子 166
15.4.3 聪明的猴子 166
15.6 小结 168
15.5 使用测试工具和自动化的实质 168
15.7 小测验 169
第16章 缺陷轰炸和beta测试 170
16.1 让别人测试你的软件 170
16.2 测试共享 171
16.3 beta测试 172
16.4 外包测试 173
16.5 小结 173
16.6 小测验 174
第五部分 使用测试文档 177
第17章 计划测试工作 177
17.1 测试计划的目标 177
17.2 测试计划主题 178
17.2.1 高级期望 178
17.2.2 人、地点和事 179
17.2.3 定义 179
17.2.4 团队之间的责任 180
17.2.7 测试策略 182
17.2.6 测试的阶段 182
17.2.5 哪些要测试,哪些不要测试 182
17.2.8 资源需求 183
17.2.9 测试员的任务分配 183
17.2.10 测试进度 183
17.2.11 测试用例 185
17.2.12 软件缺陷报告 185
17.2.13 度量和统计 185
17.2.14 风险和问题 185
17.3 小结 185
17.4 小测验 186
第18章 编写和跟踪测试用例 187
18.1 测试用例计划的目标 187
18.2 测试用例计划综述 188
18.2.1 测试设计 189
18.2.2 测试用例 191
18.2.3 测试程序 192
18.3 测试用例组织和跟踪 194
18.4 小结 195
18.5 小测验 195
第19章 报告发现的问题 197
19.1 设法修复软件缺陷 198
19.2 分离和再现软件缺陷 200
19.3 并非所有软件缺陷生来就是平等的 202
19.4 软件缺陷的生命周期 203
19.5 软件缺陷跟踪系统 205
19.5.1 标准:测试事件报告 205
19.5.2 手工软件缺陷报告和跟踪 206
19.5.3 自动化软件缺陷报告和跟踪 206
19.6 小结 210
19.7 小测验 211
第20章 成效评价 212
20.1 使用软件缺陷跟踪数据库中的信息 212
20.2 在日常测试中使用的度量 213
20.3 常用项目级度量 216
20.4 小结 220
20.5 小测验 221
第六部分 软件测试的未来 225
第21章 软件质量保证 225
21.1 质量是免费的 225
21.2.1 软件测试 226
21.2 工作现场的测试和质量保证 226
21.2.2 质量保证 227
21.2.3 软件测试团队的其他名称 228
21.3 测试的管理和组织结构 228
21.4 能力成熟度模型(CMM) 230
21.5 ISO 9000 232
21.6 小结 233
21.7 小测验 233
22.1 软件测试员的工作 234
第22章 软件测试员的职业 234
22.2 寻求软件测试职位 235
22.3 获得亲身体验 236
22.4 正规培训机会 237
22.5 网站 237
22.6 专注于软件和软件质量的专业组织 238
22.7 更进一步阅读 238
22.8 小结 239
22.9 小测验 240
附录A 小测验问题解答 241