第1章 软件测试的金字塔体系 1
1.1从1个中心到5个要素 3
1.2 5个工作面 5
1.3 8组关系 6
1.4 13项原则 8
1.5 21个关键域 11
1.6 34个方法 15
第2章 测试架构从何而来 17
2.1什么是测试架构 18
2.2 测试领域架构 21
2.3自动化测试架构之说 25
2.3.1为何要建立自动化测试架构 25
2.3.2解决什么问题 26
2.3.3软件开发框架的启发 30
2.3.4测试自动化框架的基本构成 31
2.4谁能成为测试架构师 34
第3章 如何让缺陷无处藏身 38
3.1什么是软件可测试性 38
3.2 SOCK模型和James Bach的观点 41
3.3 TDD和代码的可测试性 43
3.4设计的可测试性 48
3.5需求的可测试性 51
第4章 可以像这样设计测试用例吗 53
4.1从需求到测试用例 53
4.2基于流程图设计测试用例 56
4.3基于UML视图的测试用例设计 61
4.4小结 65
第5章 从虚拟测试环境到一键部署 67
5.1虚拟出更多的机器 67
5.2虚拟的疑问 70
5.3另一种把资源用到极致的方法 71
5.4一键部署 73
第6章 客户端的GUI测试自动化 79
6.1初识自动化测试 79
6.2困惑 80
6.3建议 81
6.4三类标准控件的不同处理办法 82
6.4.1标准控件 83
6.4.2自定义控件 84
6.4.3自定义控件库 84
6.5微软的UIA和MSAA 85
6.5.1MSAA 85
6.5.2 UIA 86
6.5.3 Windows Automation API 3.0 88
6.6和开发人员合作的好处 88
第7章 后台自动化测试 90
7.1什么是后台测试 90
7.1.1后台测试的特点 90
7.1.2后台测试的自动化 91
7.2后台自动化测试的统一脚本控制 92
7.2.1自动化测试框架 93
7.2.2自动化测试脚本的分层实现 93
7.3后台自动化测试实例 95
7.3.1测试工具树形图 95
7.3.2基于STAF框架的Python脚本 97
7.4后台大规模性能测试 102
7.4.1测试工具的管理 103
7.4.2同步及异步控制模式 103
7.4.3测试逻辑的同步执行问题 104
7.4.4测试结果的收集 106
7.5小结 107
第8章 高亢之龙——JMeter后台自动化测试 108
8.1潜龙勿用,见龙在田 109
8.2终日乾乾,或跃于渊 113
8.3飞龙在天 117
8.4亢龙有悔 121
8.5小结 123
第9章 重读探索式软件测试 124
9.1概念及目标 124
9.2关键要素 125
9.3常见的认识误区 127
9.4探索思维“十六”计 128
9.5如何应用探索式测试 136
9.6 机遇与挑战 138
9.7小结 139
第10章 完美的功能测试 140
10.1测试准备 141
10.2测试计划 145
10.3功能测试用例的设计 147
10.4用例执行的窍门 149
10.5功能测试的三步曲 150
10.6查找遗漏问题的七大招 152
10.7基于组件元素的通用测试点 154
10.8基于系统行为和操作习惯的测试点 156
第11章 异常测试的方法与技巧 158
11.1异常测试定义与范围 159
11.2技巧之一:改(以彼之道,还施彼身) 160
11.2.1更改“自身” 160
11.2.2更改“相关” 161
11.3技巧之二:借(他山之石,可以攻玉) 162
11.3.1借Code Coverage发现异常 162
11.3.2借JUnit+JMockit测试异常 166
11.3.3借iptables创造异常 167
11.4异常测试其他技巧 169
11.5小结 170
第12章 如何在苹果上找虫 171
12.1造成Mac系统崩溃的常见操作 171
12.2通过崩溃日志来定位问题 172
12.3通过Console来定位崩溃问题 176
12.4通过Shark工具来定位Freeze问题 176
第13章 穿越时空的国际化和本地化测试 182
13.1案例背景 183
13.2时区及夏令时 186
13.3有关时区的应用测试 188
13.4本地化测试的方方面面 190
13.4.1语言标识 190
13.4.2文化生活 191
13.4.3书写习惯 192
13.5本地化测试的主要方法 193
13.6本地化测试的常见问题 194
13.6.1人力资源短缺 194
13.6.2开发人员、翻译组、资源文件维护者与测试人间之间的协作 195
13.6.3基础工作的缺乏 196
第14章 用户体验的享受 198
14.1最终用户特点 198
14.1.1绝大多数的中间用户 199
14.1.2不同用户需求 200
14.2生活中的用户体验 203
14.2.1用户体验的复杂性 203
14.2.2视觉反馈 204
14.2.3听觉反馈——声音 211
14.3 UE测试策略 213
14.3.1少就是多 214
14.3.2工具就放在手边 215
14.3.3提供非模态的反馈 215
14.3.4提供符合情景的信息 216
14.3.5提供直接的操作和图形输入 217
14.3.6不要用对话框来报告常态内容 218
14.3.7提供选择而不是提问 218
14.3.8优化响应能力以调节延迟时间 219
14.3.9多平台多浏览器支持 220
14.4小结 221
第15章 可能没听说过的测试——Accessibility测试 223
15.1测试的范围和要点 224
15.2测试工具 226
15.2.1 SOAtest 226
15.2.2 JAWS 228
15.2.3 ACTF aDesigner 229
15.3 Accessibility测试注意事项 231
15.3.1规范快捷键,尽量与系统操作键统一 231
15.3.2应尽早制定Accessibility Checklist 232
15.3.3注意对其他任务的影响 232
15.3.4 Restore Case要定义明确 232
15.3.5应从用户使用习惯的角度去考虑测试需求 233
第16章 谁说了算?——代码覆盖率 234
16.1衡量代码覆盖率软件的引入 235
16.2 C/C+++代码覆盖率测试工具BullseyeCoverage 237
16.3开源测试代码覆盖率工具EMMA 239
16.4代码覆盖率报告的分析 240
16.5代码覆盖率工具的相关运用 242
16.6代码覆盖率工具应用的局限性 243
16.7小结 244
第17章 Bug的“美丽人生” 246
17.1报告新的Bug 246
17.1.1发现Bug 247
17.1.2隔离分析Bug 248
17.1.3提交一个新的Bug 251
17.2处理已经提交的Bug 254
17.3验证Bug 256
17.4案例说明 256
第18章 从亡羊补牢到未雨绸缪 260
18.1防止“病从口入” 261
18.2缺陷RCA三步曲 262
18.2.1缺陷的分类统计分析 263
18.2.2深度分析找到根本原因 266
18.2.3找到解决问题的办法 268
第19章 云中漫步——后端测试流程管理 269
19.1欢迎来到“云”的世界 271
19.1.1为什么要进行后台测试 271
19.1.2 Shindig框架的部署 273
19.2你不是她,但你处处为她着想 276
19.2.1以用户行为为核心 276
19.2.2以用户数据为核心 277
19.2.3“虫虫”哪里走 278
19.3进入云,必须做好聪明又狂野的准备 279
19.3.1其徐如林——周密计划,才能有条不紊 280
19.3.2其疾如风——快速执行 281
19.3.3侵掠如火——干吧,我们就是为这个来的 282
19.3.4不动如山——牢固占领,“云”上一分钟,“云”下十年功 283
19.4小结 285
第20章 敏捷测试——速度之美 286
20.1敏捷开发和传统瀑布模型比较 286
20.2快速迭代、发布可工作的软件 288
20.2.1面对面交流和简洁的文档 290
20.2.2基于用户故事的测试计划 292
20.2.3面向敏捷开发团队的高效测试用例 294
20.2.4持续集成和持续测试框架Hudson 295
20.2.5有效管理和跟踪测试任务 297
20.2.6快速跟踪和解决缺陷 300
20.3持续回顾和调整 304
20.4小结:速度之美的真正含义 307
第21章 再谈敏捷测试的方法和实践 310
21.1测试驱动开发与敏捷测试 310
21.2敏捷测试自动化 313
21.2.1自动化测试策略 313
21.2.2自动化测试框架 314
21.2.3敏捷测试工具 315
21.3敏捷测试及其管理 316
21.3.1敏捷测试流程的优化 316
21.3.2新功能的测试和回归测试策略 317
21.3.3基于需求测试和基于风险测试的平衡 318
21.4有关敏捷测试的思考 319
21.4.1探索式测试的地位 320
21.4.2测试人员在敏捷方法中的价值 321
21.5小结 322
后记——从“软件测试艺术”讲座品味完美 323
空间之美 324
距离之美 324
技巧之美 325
辩证之美 326
白盒测试方法vs.黑盒测试方法 327
静态测试vs.动态测试 328
被动测试vs.主动测试 329
手工测试vs.自动化测试 330
计划测试vs.探索式测试 332
新功能测试vs.回归测试 332
附录A敏捷方法的相关概念 334
附录B软件测试的详细分类 336
参考文献 342