译者序
致谢
关于作者
前言
第一部分 成为测试者
第1章 测试基础 3
1.1 测试概览 3
1.1.1 测试是什么 3
1.1.2 质量是什么 3
1.1.3 测试为什么重要 4
1.1.4 测试人员做些什么 4
1.1.5 谁是测试人员 4
1.2 QA与测试的区别 4
1.3 优秀测试人员的素质 5
1.4 相关人员 7
1.4.1 你需要从别人那里得到什么 8
1.4.2 别人需要从你这里得到什么 9
1.5 什么是bug 10
1.6 测试之后 11
1.6.1 什么是dogfooding 11
1.6.2 产品发行给谁 12
1.7 测试人员的工作内容 12
第2章 软件测试理论 14
2.1 软件产品生命周期 14
2.1.1 产品规格说明书 15
2.1.2 风险分析 16
2.1.3 里程碑 18
2.2 测试周期 18
2.3 bug生命周期 20
2.3.1 有效地记录bug 20
2.3.2 使用bug模板 21
2.3.3 评价bug优先级和严重性 21
2.3.4 bug的生命 22
2.3.5 维护bug数据库 23
2.4 测试方法 23
2.4.1 测试技巧 23
2.4.2 测试类型 24
2.5 什么时候停止测试 26
第3章 软件测试实践 28
3.1 开始测试 28
3.1.1 测试从哪里开始 28
3.1.2 评审产品规格说明书 28
3.1.3 谁来开始 31
3.2 应用测试技巧 31
3.2.1 分解任务 31
3.2.2 提出恰当问题 32
3.2.3 列举软件状态 32
3.2.4 检查数据输入 34
3.2.5 测试事件顺序 40
3.2.6 检查时间 41
3.2.7 抓住后门 41
3.2.8 尝试可选方法 41
3.2.9 通用测试技巧 42
3.3 报告技巧 43
3.3.1 好的bug报告 43
3.3.2 差的bug报告 44
3.3.3 创建有用的支持文档 45
3.4 不当测试 46
第4章 Web测试入门 49
4.1 组织工作 49
4.1.1 浏览器的历史 50
4.1.2 浏览器的选择 50
4.1.3 其他浏览器 51
4.1.4 平台 52
4.1.5 其他设备 53
4.1.6 矩阵 53
4.2 影响Web应用程序测试的其他因素 54
4.2.1 考虑屏幕分辨率 55
4.2.2 画布的尺寸 55
4.2.3 画布实际可用大小的急剧减少 57
4.2.4 测试颜色深度 58
4.2.5 测试连接速度 58
4.2.6 重新回到矩阵 59
4.2.7 考虑其他因素 60
4.3 基本Web应用程序 60
4.3.1 复杂化Web应用程序场景 62
4.3.2 有关Web如何工作的更多知识 62
4.3.3 请求获取网页 63
4.3.4 对请求的响应 64
4.4 Web应用程序测试技巧 64
4.4.1 包含支持文档 65
4.4.2 处理缓存问题 65
4.4.3 配置浏览器以用于Web应用程序测试 66
4.4.4 配置浏览器的其他设置 67
第二部分 客户端测试
第5章 测试HTML—静态Web 73
5.1 HTML中的编码 73
5.1.1 基本标记符 73
5.1.2 细致的HTML编码 74
5.1.3 遵守外部编码标准 76
5.1.4 保持内部编码标准 76
5.2 测试Web上的设计 79
5.2.1 整洁是最重要的 80
5.2.2 测试其他设计方面的问题 82
5.2.3 测试设计时想着图片 83
5.2.4 测试设计的易用性问题 85
5.2.5 实现可访问性 87
5.2.6 设计用户交互 89
5.2.7 测试性能 93
第6章 动态Web 97
6.1 提供丰富体验 97
6.2 检查应用程序架构 98
6.3 脚本 99
6.3.1 引用脚本 99
6.3.2 JavaScript 100
6.3.3 VBScript 102
6.3.4 认识脚本问题 103
6.3.5 测试脚本 106
6.4 测试ASP 108
6.5 测试CGI 109
6.6 测试ActiveX控件 109
第7章 测试字符集. 代码页和字形 111
7.1 几个定义 111
7.2 字符的显示 112
7.2.1 字符标准的历史 113
7.2.2 阅读代码页 117
7.3 理解字形 120
7.4 处理双向文本 121
7.5 处理复杂脚本 122
7.6 单字节和双字节字符集 123
7.6.1 处理双字节字符集 123
7.6.2 引用双字节字符 124
7.6.3 DBCS测试技巧 125
7.7 Unicode 126
7.8 字体链接 128
7.9 考察字符输入方法 128
7.9.1 Alt键输入 129
7.9.2 字符映射输入 129
7.9.3 IME 130
7.9.4 剪切和粘贴 131
7.10 应用假本地化 132
7.11 转义保留字符 134
7.12 什么使得字符成为问题 134
7.13 认识破坏 135
第三部分 服务器端测试
第8章 性能测试 139
8.1 制定基于性能的决定:决定何时进行测试, 测试什么 139
8.1.1 使用规格说明书指导性能测试 140
8.1.2 找出性能问题 141
8.2 性能测试综述 141
8.2.1 选择用于性能测试的机器 143
8.2.2 在性能测试之前检查配置 143
8.3 开始性能测试 144
8.3.1 构思应用的轮廊 144
8.3.2 获取测量 145
8.4 继续性能测试 147
8.4.1 不仅仅是性能问题 148
8.4.2 优化带宽 149
8.4.3 阅读度量 151
8.4.4 负载测试和压力测试 153
8.4.5 可靠性和稳定性测试 155
8.4.6 可伸缩性测试 157
8.4.7 ASP性能测试 158
8.4.8 自动化性能测试 159
8.4.9 关键的性能测试技巧 160
8.5 改善应用性能 161
第9章 安全性测试 163
9.1 我们面临的对手是谁 163
9.2 选择安全性测试策略 164
9.2.1 协调安全工作 165
9.2.2 开发方法 166
9.3 测试几类安全问题 169
9.3.1 缓冲区泛溢 170
9.3.2 解析问题 176
9.3.3 转换问题 181
9.3.4 共享数据 183
9.3.5 转义 184
9.3.6 跨站点脚本 188
9.3.7 SQL注入 189
9.3.8 错误处理 190
9.3.9 特权提升 190
9.3.10 拒绝服务 191
9.4 测试隐私问题 192
9.5 组件交互测试 193
9.6 通过管理保护应用的安全 195
9.7 测试其他安全问题 195
9.8 其他安全性思考 197
第四部分 作为测试者
第10章 自动化 201
10.1 自动化测试的定义 201
10.2 自动化测试的功能 201
10.3 自动化测试的类型 202
10.4 计划自动化测试 203
10.4.1 确定进行自动化测试的对象 205
10.4.2 测试工具的选择 205
10.4.3 编写自动化测试 207
10.4.4 命名惯例 210
10.4.5 做好未来的计划 211
10.5 继续进行自动化测试 212
10.5.1 效果评测 213
10.5.2 在自动化测试开发中的良好操作实践 215
10.6 关于自动化测试的最后提醒 215
第11章 测试计划与设计 217
11.1 本章内容 217
11.2 本章不涉及的问题 217
11.3 为什么要做测试计划 217
11.4 计划内容 217
11.5 方法学 218
11.5.1 正规方法学 219
11.5.2 方法 222
11.6 编写测试计划 224
11.6.1 协调测试计划与项目和开发计划 224
11.6.2 设计测试组内部使用的测试计划 226
11.6.3 制定测试计划时要考虑的其他事项 226
11.7 在计划中交流 226
11.8 从何处入手 227
第12章 做专业的测试人员 228
12.1 专业测试人员的素质 228
12.2 提高测试技术 229
12.2.1 计划 230
12.2.2 组织 230
12.2.3 准备 230
12.2.4 了解自己的目的和当前所处的位置 231
12.2.5 共享 232
12.2.6 表现自我 232
12.2.7 提出问题 233
12.2.8 使用常识 234
12.2.9 应用最佳实践 234
12.3 发展成专业的测试者 235
第五部分 测试参考附录
附录A 代码页 239
附录B Unicode范围 250
附录C 语言指南 253
附录D 计算机系统配置指南 266
附录E HTTP响应代码 272
附录F 语言与映射 280
附录G 问题字符和样例测试输入 283
附录H 测试检查表和问题 302
附录I 格式和模板 313
附录J 相关工具 321
附录K 相关RFC. ISO标准以及IEEE标准 324
附录L 数字参考 328
附录M 相关参考网站 334
附录N 参考书目及推荐读物 337
附录O 术语表 341
附录P 本书的网站内容介绍 347