第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 基于u n i ttest的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