第 1 章 转型,你准备好了吗 1
1.1 软件测试 /2
1.1.1 什么是软件测试 /2
1.1.2 业务测试 /3
1.1.3 自动化测试和测试开发 /9
1.2 业务测试的挑战 /13
1.2.1 测试人员的挑战及新要求 /13
1.2.2 转型的基础及必要性 /15
1.3 团队转型的目标及计划 /17
1.3.1 转型路上的迷茫 /17
1.3.2 树立目标 /18
1.3.3 转型过程中你需要种下一棵“技能树”/20
1.4 小结 /22
第 2 章 从 UI 开始初识自动化 23
2.1 Selenium/24
2.1.1 Selenium 的发展历史 /24
2.1.2 Selenium WebDriver 的原理 /26
2.2 SeleniumWebDriver 环境的搭建与测试 /35
2.2.1 配置 Java 和 Maven 环境 /36
2.2.2 创建 Maven 项目 /36
2.2.3 启动第 一个测试 /38
2.3 Selenium 浏览器支持 /40
2.3.1 浏览器的版本映射 /41
2.3.2 常见浏览器的 UI 自动化实例 /43
2.4 WebDriver 对页面的处理 /47
2.4.1 元素的定位原理 /47
2.4.2 元素的定位方式 /48
2.4.3 Selenium 等待 /54 2.4.4 弹框的处理 /55
2.5 UI 自动化测试中的问题 /57
2.6 小结 /58
第 3 章 探索 API 自动化测试 59
3.1 接口与接口测试 /60
3.1.1 接口概述 /60
3.1.2 接口测试概述 /68
3.2 HTTP 单接口测试 /69
3.2.1 HTTP 接口 GET 方法的测试脚本 /69
3.2.2 HTTP 接口 POST 方法的测试脚本 /73
3.3 RPC 协议的接口测试 /76
3.3.1 RPC 接口测试准备 /76
3.3.2 RPC 接口测试脚本 /77
3.4 接口测试脚本附加技能 /78
3.4.1 日志工具 Log4j/78
3.4.2 代码版本控制工具 Git/80
3.5 TestNG 驱动的接口测试脚本 /82
3.5.1 TestNG 简介 /83
3.5.2 TestNG 的 DataProvider/86
3.5.3 TestNG 运行方式 /87
3.5.4 使用 TestNG 驱动的测试脚本 /87
3.5.5 使用 ReportNG 导出测试报告 /89
3.6 小结 /92
第4章 剖析经典 UI 自动化测试框架 93
4.1 hi_po(Python 2.7)开发环境的配置 /94
4.1.1 Windows 系统上 hi_po(Python 2.7)开发环境的配置 /94 4.1.2 Mac 系统上 hi_po(Python 2.7)开发环境的配置 /95
4.1.3 CentOS 上 hi_po(Python 2.7)开发环境的配置 /96
4.2 PageObject 模式 /97 4.3 抽象工厂模式 /98
4.4 PageObject 模式的 UI 测试框架 /100
4.4.1 hi_po 中对 page-objects 的改造 /101
4.4.2 基于 unittest 的 HiPOUnit/104 4.4.3 参数池的设计 /106
4.4.4 报告模块 /108
4.5 PageObject 模式的 UI 测试框架的实践 /110
4.5.1 定义 PageObject 页面 /110 4.5.2 编写测试用例 /112
4.5.3 执行测试 /113
4.6 Headless 浏览器的配置 /114 4.7 hi_po 其他相关介绍 /116
4.7.1 测试字符串 /116
4.7.2 Headless 浏览器的服务器部署 /118
4.8 小结 /119
第5章 深入解析接口测试框架 120
5.1 UI 层其实是多了一层被测件 /121
5.2 工具化的接口测试框架 /122
5.2.1 参数池类的设计 /122
5.2.2 检查点类的设计 /128
5.2.3 关联类的设计 /129
5.2.4 测试框架的设计和实现 /133
5.3 如何开始进行测试 /133
5.3.1 HTTP 接口的测试脚本 /133
5.3.2 RPC 接口的测试脚本 /136
5.4 让框架完成脚本撰写 /137
5.4.1 二叉树 /138
5.4.2 构造适合自动脚本生成的二叉树数据结构 /138
5.4.3 测试脚本自动生成算法 /141
5.5 小结 /143
第6章 走进持续集成的世界 144
6.1 持续集成 /145
6.1.1 实践 /145
6.1.2 持续集成的投入和回报 /146
6.1.3 Jenkins/147
6.2 团队的实践 /150
6.2.1 实现思路 /151
6.2.2 部署服务 /151
6.2.3 测试模块 /158
6.2.4 任务管理服务 /162
6.2.5 扩展 /165
6.3 小结 /165
第7章 刻意练习——众包开发模式 166
7.1 什么是众包开发模式 /167
7.2 如何使用众包开发模式 /167
7.2.1 众包开发模式中的角色 /168
7.2.2 从挖掘痛点到工具化思维 /169
7.3 使用众包开发模式开发合规助手的案例 /172
7.4 众包开发之团队竞争模式探索 /177
7.4.1 团队竞争模式实施简介 /177
7.4.2 竞争规则和任务分配 /177
7.4.3 过程跟进和结果评优 /179
7.4.4 团队竞争模式复盘 /180
7.5 小结 /180
第8章 技能导引——必知必会技能总结 182
8.1 Fiddler/183
8.1.1 Fiddler 常用命令 /183
8.1.2 Fiddler 常用功能 /184
8.2 Postman/185
8.2.1 使用测试用例集管理被测接口 /186
8.2.2 验证接口的返回结果 /186
8.2.3 使用变量解决接口间的相互依赖问题 /188
8.3 Sikuli/189
8.3.1 Sikuli 简介 /189
8.3.2 Sikuli 的 IDE 和脚本编写方法 /190
8.4 简单快速的 Moco 服务 /192
8.4.1 为什么要开发 Moco 这个框架 /192
8.4.2 Moco 环境的配置 /192
8.4.3 Moco 的启动 /193
8.5 识别验证码的 OCR 方法 /205
8.5.1 应用 OCR/205
8.5.2 调用 OCR 方法识别验证码 /206
8.5.3 验证程序 /209
8.6 小结 /210
第 9 章 团队转型回顾与管理 211
9.1 拥抱变化,提升团队士气 /212
9.1.1 拥抱变化 /212
9.1.2 情绪管理 /213
9.2 过程管理与达成预期 /215
9.2.1 过程管理 /215
9.2.2 达成预期 /219
9.3 绩效考核与管理 /221
9.3.1 绩效考核 /221
9.3.2 绩效管理 /224
9.4 团队培养之三大提升 /227
9.4.1 技能的提升 /227
9.4.2 质量的提升 /228
9.4.3 效率的提升 /229
9.5 团队转型中的曲折与回顾 /231
9.5.1 团队转型中的曲折 /231
9.5.2 团队转型中的回顾 /233
9.6 小结 /234
附录 A hi_po 框架代码 235
附录 B
一次聚类算法和缺陷数据特征的试验
249
附录 C
XPath 语法和运算符
252
附录D
CSS 选择器参考手册
256
附录 E
Maven 的配置及其与 Idea 的整合
259
附录 F
HTTP 状态码
264
参考文献
268