第一篇 软件测试工程师知识筹备与成长发展 3
第1章 本书特色与使用方法 3
1.1 本书特色 3
1.2 本书第3版亮点 3
1.3 本书第1、2、3版之间的关系 4
1.4 本书面向的读者群体 5
1.5 本书4大篇章之间的关系 5
1.6 本书与市面上其他软件实践类书籍的主要区别 8
1.7 如何更好地使用本书 8
1.8 本书及其配套下载资源使用说明 9
1.9 读书笔记 10
第2章 软件测试核心理论知识串讲 11
2.1 软件测试 11
2.1.1 软件测试的定义 11
2.1.2 软件测试的原则 12
2.1.3 软件测试分类 13
2.1.4 软件测试策略 17
2.2 软件测试模型 18
2.2.1 V模型 18
2.2.2 W模型 19
2.2.3 X模型 20
2.2.4 H模型 21
2.2.5 前置模型 21
2.3 软件缺陷 24
2.3.1 软件缺陷的定义 24
2.3.2 软件缺陷的分类 24
2.4 测试用例 26
2.4.1 测试用例的定义 27
2.4.2 测试用例设计方法 27
2.5 软件测试的自动化 38
2.5.1 软件自动化测试 38
2.5.2 软件测试工具分类 39
2.6 软件测试管理 41
2.6.1 测试团队建设与管理 41
2.6.2 软件测试过程管理 42
2.6.3 缺陷管理 43
2.6.4 软件测试文档 45
2.7 读书笔记 46
第3章 软件测试工程师的成长与发展 47
3.1 软件测试工程师应具备的能力和素养 47
3.1.1 计算机专业技能 47
3.1.2 个人能力和素养 48
3.2 软件测试职业发展 48
3.3 软件测试工程师的成长历程 51
3.4 读书笔记 53
第二篇 基于ASP.NET产品线的项目实践 57
第4章 项目初期各阶段的主要工作 57
4.1 项目立项与拟定产品的发展方向阶段 57
4.1.1 产品需求文档的形成及其实例 57
4.1.2 需求阶段测试工程师的工作 59
4.2 产品规格说明书制定阶段 59
4.2.1 产品规格说明书的形成及其实例 59
4.2.2 产品规格说明书制定阶段测试工程师的工作 64
4.3 产品技术文档设计阶段 65
4.3.1 编写技术设计文档 65
4.3.2 技术设计文档阶段测试工程师的工作 71
4.4 读书笔记 72
第5章 软件测试计划的制定 73
5.1 为何要制定测试计划 73
5.2 怎样设计测试计划 73
5.2.1 产品基本情况调研 74
5.2.2 测试需求说明 74
5.2.3 计划表 74
5.2.4 测试资源配置 74
5.2.5 系统风险评估 74
5.2.6 测试的策略和记录 75
5.2.7 问题跟踪报告 75
5.2.8 测试计划的发布 75
5.3 测试计划设计实例 75
5.4 测试计划修改与维护 83
5.5 读书笔记 84
第6章 软件测试用例的编写 85
6.1 白盒测试用例设计方法与案例 85
6.1.1 逻辑覆盖法设计案例 85
6.1.2 基本路径测试法案例 90
6.2 黑盒测试用例设计案例 90
6.2.1 等价类划分法设计案例 91
6.2.2 边界值分析法设计案例 93
6.2.3 因果图法设计案例 94
6.2.4 错误推测法设计案例 96
6.2.5 功能图法设计案例 98
6.2.6 综合法设计案例 99
6.2.7 异常测试法设计案例 100
6.3 压力/性能测试设计案例 102
6.4 安全性测试 105
6.4.1 安全性测试的引入 105
6.4.2 常见的Web安全性测试 105
6.4.3 XSS测试技巧 113
6.5 跨浏览器/跨平台测试设计案例 114
6.5.1 跨浏览器测试设计案例 114
6.5.2 跨平台测试设计案例 115
6.6 本地化测试与国际化测试 119
6.6.1 国际化测试的实例 122
6.6.2 本地化测试的实例 126
6.7 Accessibility测试案例 127
6.8 如何组织和跟踪测试用例 130
6.8.1 组织测试用例 130
6.8.2 测试用例的跟踪 130
6.8.3 测试用例的维护 132
6.9 读书笔记 133
第7章 软件项目各部门相互协作 134
7.1 共同审阅文档 134
7.2 交流与沟通 136
7.2.1 沟通的意义及项目干系人分析 136
7.2.2 沟通与效率的关系 137
7.2.3 沟通的一些要素 138
7.2.4 项目中沟通运用的案例分析 138
7.2.5 结束语 139
7.3 读书笔记 140
第8章 执行测试案例并报告缺陷 141
8.1 项目过程中各阶段测试重点和策略 141
8.2 如何报告所发现的缺陷 146
8.3 如何尽早尽多地报缺陷 148
8.4 发现缺陷的基本方法 148
8.4.1 通过逻辑覆盖法发现的缺陷 152
8.4.2 通过路径覆盖法发现的缺陷 152
8.4.3 通过等价类划分法发现的缺陷 153
8.4.4 通过边界值法发现的缺陷 154
8.4.5 通过因果图法发现的缺陷 155
8.4.6 通过错误推测法发现的缺陷 156
8.4.7 通过功能图法发现的缺陷 158
8.4.8 通过综合法发现的缺陷 159
8.4.9 通过异常法测试发现的缺陷 159
8.4.10 通过压力/性能测试发现的缺陷 161
8.4.11 通过安全性测试发现的缺陷 162
8.4.12 通过跨平台测试发现的缺陷 164
8.4.13 通过跨浏览器测试发现的缺陷 165
8.4.14 通过本地化与国际化测试发现的缺陷 165
8.4.15 通过Accessibility测试发现的缺陷 167
8.5 如何让别人接受你报的缺陷 168
8.5.1 缺陷为什么不被接受 169
8.5.2 不被接受的缺陷的状态 175
8.5.3 如何避免不被接受的缺陷 175
8.5.4 如何处理不被接受的缺陷 176
8.6 如何验证缺陷 178
8.6.1 哪些状态的缺陷可以验证 178
8.6.2 验证缺陷前需要做什么 179
8.6.3 缺陷被完全修改的标准 179
8.6.4 如何验证缺陷 179
8.6.5 验证缺陷后还需要做什么 181
8.7 如何分析缺陷 181
8.7.1 什么是缺陷分析 181
8.7.2 缺陷分析的重要性 181
8.7.3 收集缺陷分析的信息 182
8.7.4 如何进行缺陷分析 182
8.8 一个缺陷管理系统应用实例 186
8.8.1 BugFree的安装 187
8.8.2 缺陷管理 189
8.8.3 Test Case管理 192
8.8.4 统计报表 194
8.9 读书笔记 195
第9章 产品功能完善与修复缺陷阶段 196
9.1 模块功能完成并进行单元测试 196
9.2 系统功能集成并进行整体测试 197
9.3 产品代码冻结 198
9.4 产品发布前的最后检查 199
9.5 读书笔记 203
第10章 测试工程师在产品发布前后的工作 204
10.1 如何评估软件质量 204
10.2 如何发布质量分析报告 207
10.3 如何配合客户做验收测试 211
10.4 如何处理客户发现的问题 215
10.5 读书笔记 216
第三篇 软件测试领域9大专题技术分享 219
第11章 Web测试专题技术分享 219
11.1 Web测试的特点 219
11.2 Web测试基础 220
11.2.1 获取软件版本号 220
11.2.2 修改浏览器的代理设置 221
11.2.3 修改hosts文件 223
11.2.4 测试网上付费购物 225
11.2.5 截屏软件FSCapture的使用 225
11.2.6 截屏软件Jing的使用 227
11.3 界面测试 228
11.3.1 文字或图片重叠 228
11.3.2 文字或图片剪裁 229
11.3.3 文字或图片没对齐 230
11.3.4 重复菜单项或链接 230
11.3.5 提示信息错误 231
11.3.6 界面测试其他问题 231
11.4 功能测试 232
11.4.1 tooltip不显示 233
11.4.2 Js error问题 233
11.4.3 页面链接错误 234
11.4.4 页面访问资源不可用 236
11.4.5 出现404 Error 236
11.4.6 按钮不工作 237
11.4.7 功能未实现 238
11.4.8 错误信息提示不合理 239
11.4.9 数据库访问错误 239
11.4.10 文档无法下载 240
11.5 表单测试 241
11.5.1 文本框测试常见验证点 242
11.5.2 特殊输入域常见验证点 243
11.5.3 单选按钮常见验证点 244
11.5.4 复选框常见验证点 244
11.5.5 大块文字区域常见验证点 244
11.5.6 下拉列表框常见验证点 245
11.5.7 排序常见验证点 245
11.5.8 分页测试常见验证点 245
11.5.9 搜索框填充域常见验证点 246
11.5.10 用户登录常见验证点 246
11.5.11 特殊字符处理常见验证点 247
11.5.12 转义字符处理常见验证点 248
11.5.13 多次快速提交问题 248
11.5.14 共用页面Session问题 248
11.5.15 页面刷新问题 249
11.5.16 浏览器“前进”/“后退”按钮问题 249
11.6 读书笔记 249
第12章 Client测试专题技术分享 250
12.1 Client测试的特点 250
12.2 如何进行Client测试 250
12.2.1 安装测试 251
12.2.2 卸载测试 253
12.2.3 UI测试 254
12.2.4 功能测试 255
12.2.5 字符输入测试 257
12.2.6 tooltip测试 258
12.2.7 链接测试 259
12.2.8 操作按钮测试 259
12.2.9 菜单测试 260
12.2.10 音频测试 260
12.2.11 视频测试 262
12.2.12 程序运行权限测试 262
12.3 如何获取测试需要的Trace 264
12.4 读书笔记 265
第13章 Mobile测试专题技术分享 266
13.1 Mobile的特点 266
13.2 Mobile测试基础 267
13.2.1 手机测试常见类型 267
13.2.2 手机测试与传统测试的区别 267
13.2.3 监控手机流量 268
13.2.4 获取手机的Root权限 269
13.3 手机与计算机的联系 269
13.3.1 碗豆荚的基本操作 270
13.3.2 360手机助手的基本操作 270
13.3.3 腾讯手机管家基本操作 271
13.3.4 iPhone/iPad/iPad Mini与计算机的联系 272
13.3.5 备份手机中的数据 273
13.3.6 截取手机屏幕内容 273
13.3.7 记录手机的Error Log 274
13.3.8 手机数据信息 276
13.4 手机设备自身测试 276
13.5 手机应用软件测试 278
13.6 手机Web应用测试 279
13.7 手机测试问题集锦 279
13.8 读书笔记 282
第14章 国际化本地化测试专题技术分享 283
14.1 软件国际化 283
14.1.1 国际化概述 283
14.1.2 软件国际化误区 284
14.2 软件本地化 286
14.2.1 软件本地化概述 286
14.2.2 软件本地化误区 287
14.3 国际化软件测试 287
14.3.1 在本地化机器上安装使用程序 288
14.3.2 正确的字符集编码 288
14.3.3 伪本地化测试发现文本扩展问题 291
14.3.4 测试区域文化和传统特征 292
14.3.5 保证文本与代码分离 292
14.4 软件本地化测试 294
14.4.1 翻译问题 294
14.4.2 数据格式问题 295
14.4.3 快捷键问题 296
14.4.4 本地化后的排序问题 297
14.4.5 常用本地化测试技巧 297
14.5 读书笔记 299
第15章 跨平台跨浏览器专题技术分享 300
15.1 跨平台测试的特点 300
15.2 软件平台的分类 300
15.2.1 Windows平台 301
15.2.2 Mac平台 301
15.2.3 Linux平台 302
15.2.4 Solaris平台 302
15.2.5 HP-UX平台 302
15.2.6 IBM-AIX平台 302
15.3 跨平台测试需具备的知识 303
15.3.1 Windows平台 303
15.3.2 Mac平台 306
15.3.3 UNIX平台 310
15.4 跨平台测试技术分享 314
15.4.1 应用程序安装 315
15.4.2 应用程序运行 317
15.4.3 程序运行界面测试 319
15.4.4 程序功能测试 319
15.5 浏览器的分类 321
15.5.1 IE 321
15.5.2 Firefox 322
15.5.3 Chrome 322
15.5.4 Safari 322
15.6 跨浏览器测试技术分享 323
15.7 读书笔记 325
第16章 Web安全测试技术专题分享 326
16.1 Web安全测试 326
16.1.1 Web前端工具Firebug的使用 326
16.1.2 Web前端工具Fiddler的使用 328
16.1.3 2010年Web应用十大安全攻击 330
16.1.4 2010年与2007年Web应用十大安全攻击对比 331
16.2 未验证的重定向和转发 332
16.2.1 攻击说明 332
16.2.2 攻击举例 332
16.2.3 开发人员防范方法 333
16.3 传输层保护不足 333
16.3.1 攻击说明 333
16.3.2 攻击举例 333
16.3.3 开发人员防范方法 333
16.4 URL访问控制不当 333
16.4.1 攻击说明 333
16.4.2 攻击举例 334
16.4.3 开发人员防范方法 334
16.5 存储不安全 334
16.5.1 攻击说明 334
16.5.2 攻击举例 334
16.5.3 开发人员防范方法 334
16.6 安全配置错误 335
16.6.1 攻击说明 335
16.6.2 攻击举例 335
16.6.3 开发人员防范方法 335
16.7 跨站请求伪造 335
16.7.1 攻击说明 335
16.7.2 攻击举例 336
16.7.3 开发人员防范方法 336
16.8 不安全的对象直接引用 337
16.8.1 攻击说明 337
16.8.2 攻击举例 337
16.8.3 开发人员防范方法 337
16.9 身份认证和会话管理不当 337
16.9.1 攻击说明 337
16.9.2 攻击举例 338
16.9.3 开发人员防范方法 338
16.10 跨站脚本 338
16.10.1 攻击说明 338
16.10.2 攻击举例 338
16.10.3 开发人员防范方法 340
16.11 注入SQL 340
16.11.1 攻击说明 340
16.11.2 攻击举例 340
16.11.3 开发人员防范方法 342
16.12 开放式Web应用程序安全项目OWASP 342
16.12.1 OWASP组织介绍 342
16.12.2 OWASP 上最新Web安全攻击与防范技术 342
16.12.3 WiKi上最新Web安全攻击与防范技术 342
16.13 读书笔记 344
第17章 敏捷测试专题技术分享 345
17.1 敏捷软件开发简介 346
17.1.1 敏捷开发的流程 346
17.1.2 敏捷开发的质量管理 347
17.1.3 敏捷开发中的关键概念 347
17.2 敏捷测试的定义 349
17.3 敏捷测试的实质 350
17.4 敏捷测试与普通测试的区别 350
17.5 敏捷项目测试实例介绍 351
17.5.1 实例项目介绍 351
17.5.2 用户故事设计和发布计划阶段 353
17.5.3 迭代Sprint阶段 354
17.5.4 Sprint结束和下一个Sprint开始 357
17.6 读书笔记 359
第18章 软件自动化测试专题技术分享 360
18.1 引入自动化测试 360
18.2 什么是自动化测试 364
18.2.1 自动化测试是怎样工作的 364
18.2.2 自动化测试的类别 366
18.2.3 设计一个常见的自动化测试框架 367
18.3 持续集成自动化测试 368
18.4 自动化测试工具JMeter 368
18.4.1 JMeter是什么 369
18.4.2 JMeter的安装和运行 369
18.4.3 JMeter自动化脚本设计策略 372
18.4.4 抓取一个简单的请求 372
18.4.5 设置配置文件 377
18.5 设计一个简单的脚本 387
18.5.1 添加图书——HTTP Request 387
18.5.2 查看运行结果——View Results Tree 391
18.5.3 访问数据库——JDBC Request 391
18.5.4 验证测试结果——Response Assertion 395
18.5.5 清理数据 397
18.6 读书笔记 399
第19章 压力与性能测试专题技术分享 400
19.1 什么是压力、性能测试 400
19.2 压力、性能测试用例设计 401
19.3 压力、性能测试——J Meter 403
19.3.1 单线程添加多个用户 404
19.3.2 多线程添加多个用户 410
19.4 生成和分析测试报告 416
19.4.1 生成测试报告 416
19.4.2 分析测试报告 416
19.5 读书笔记 421
第四篇 师生动手实践篇 425
第20章 自己动手完成软件测试实践 425
20.1 中心在线的网站测试实践 425
20.2 国内知名网站或应用测试实践 427
20.3 如何设计测试案例 427
20.3.1 看清项目测试范围 427
20.3.2 编写测试案例 429
20.4 准确汇报Bug的技巧 433
20.4.1 准确汇报Bug的几条基本准则 434
20.4.2 描述Bug中需要注意的事项 434
20.4.3 在汇报英文Bug时的专业英文描述 434
20.4.4 与外国人进行项目交流常见英文信件含义 435
20.5 寻找软件产品缺陷获奖作品欣赏 437
20.5.1 全国大学生寻找产品缺陷(Find Bug)技能大赛说明 437
20.5.2 汇报产品缺陷模板 438
20.5.3 参赛选手提交的作品内容 439
20.5.4 大赛组委会审阅评价 446
20.6 读书笔记 447
附录A大学图书管理系统说明书 448
附录B软件测试常见英文与中文对照描述 465
附录C软件测试工程师经典面试题与参考回答 468
附录D作者与贡献者简介 480
参考文献 486