描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302519294
本书循序渐进地讲解了Web自动化测试的各项知识点,使任何层级的读者都能从中受益。绪论部分介绍自动化方面的基础知识,帮助读者少走弯路,正确学会自动化测试。第1~3章介绍Selenium、Python以及Web UI自动化的相关基础知识。第4章和第5章介绍Selenium IDE和Selenium常规对象接口。第6章介绍Web UI自动化特殊场景处理。第7章介绍UnitTest单元测试框架。第8章介绍分层框架设计与实现。第9章介绍测试脚本的部署。第10章和第11章介绍Web API相关基础知识。第12章介绍通过Python发送HTTP请求。第13章介绍API工具的设计与实现。第14章介绍Web服务的集成工作。第15章介绍HTTP Mock的开发。
本书适合Web测试人员、Web自动化人员、Web开发人员等初中级读者以及希望使用Python作为编程语言的软件测试工程师参考。
第1章 Selenium基础 9
1.1 Selenium的历史和分支 9
1.2 Selenium的特点 12
1.3 Selenium名词说明 12
1.3.1 Selenium RC 12
1.3.2 Selenium Server 12
1.3.3 Selenium WebDriver 13
1.3.4 Selenium Client 13
1.3.5 Selenium Grid 13
1.3.6 Selenium IDE 13
1.4 Selenium基本原理 14
1.5 Selenium环境搭建 15
1.5.1 Windows环境搭建 16
1.5.2 Ubuntu环境搭建 22
1.5.3 MacOS环境搭建 26
1.6 Selenium调用不同浏览器 28
1.6.1 调用Firefox浏览器 28
1.6.2 调用Chrome浏览器 29
1.6.3 调用IE浏览器 30
1.6.4 IE浏览器安全机制设置 30
1.7 Selenium Docker的使用 31
1.7.1 Docker环境安装 32
1.7.2 Selenium Docker镜像下载 35
1.7.3 Docker下运行Selenium脚本 36
1.8 Selenium 3说明 38
1.8.1 不再支持Selenium RC 38
1.8.2 仅支持JDK 1.8.0以上版本 38
1.8.3 Selenium IDE支持Chrome插件 38
1.8.4 FireFox需要安装独立驱动 38
1.8.5 仅支持IE 9.0以上版本 39
1.8.6 支持微软的Edge浏览器 39
1.8.7 支持官方的SafariDriver 39
第2章 Python编程基础 41
2.1 基础语法 41
2.1.1 Python语句执行 41
2.1.2 Python语法格式 42
2.1.3 Python变量与类型 44
2.1.4 Python运算符与表达式 47
2.2 控制语句 52
2.2.1 if-else语句 52
2.2.2 for语句 53
2.2.3 while语句 53
2.2.4 continue语句 54
2.2.5 break语句 54
2.2.6 pass语句 55
2.3 模块化 55
2.3.1 函数 55
2.3.2 类与实例 59
2.3.3 模块文件 61
2.3.4 包 62
2.4 基础数据结构 63
2.4.1 列表 63
2.4.2 元组 64
2.4.3 字典 65
2.4.4 遍历数据 67
2.5 输入/输出 67
2.5.1 命令行输入/输出 67
2.5.2 文件输入/输出 69
2.6 内置函数 70
2.6.1 id函数 70
2.6.2 dir函数 71
2.6.3 help函数 71
2.6.4 type函数 72
2.6.5 isinstance函数 72
2.6.6 zip函数 72
2.6.7 filter函数 72
2.6.8 map函数 73
2.6.9 reduce函数 73
2.7 异常 73
2.7.1 异常捕获 73
2.7.2 自定义异常 75
2.8 魔法特性 76
2.8.1 列表推导式 76
2.8.2 迭代器 77
2.8.3 生成器 78
2.8.4 闭包 79
2.8.5 装饰器 79
2.8.6 内省机制 83
2.9 并发任务 86
2.9.1 多进程 86
2.9.2 多线程 91
2.9.3 协程 93
2.10 编解码 96
2.10.1 源码文件编码 97
2.10.2 解释器默认编码 98
2.10.3 外部文件编码 99
2.10.4 数据库编码 100
2.10.5 编解码函数 100
第3章 Web UI自动化基础 102
3.1 HTML与DOM简介 102
3.2 学习元素定位方式 104
3.3 CSS定位技术 106
3.4 使用工具帮助定位 106
3.4.1 IE的Developer Tool 107
3.4.2 Firefox的Web开发者工具 107
3.4.3 Chrome的开发者工具 108
3.4.4 Firefox的XPath Checker插件 108
3.4.5 Chrome的XPath工具 109
3.4.6 Firefox的CSS插件 109
3.4.7 Chrome的CSS工具 110
3.4.8 Firefox的WebDriver Element Locator插件 110
3.5 Selenium中进行元素定位 112
3.5.1 获取一个定位元素 112
3.5.2 获取一组定位元素 113
3.5.3 匹配非个元素 114
第4章 Selenium IDE 115
4.1 Selenium IDE安装 115
4.1.1 Firefox安装 115
4.1.2 Selenium IDE在线安装 116
4.1.3 Selenium IDE本地安装 117
4.2 Selenium IDE功能介绍 120
4.2.1 Selenium IDE窗口 120
4.2.2 菜单栏 121
4.2.3 地址栏 123
4.2.4 工具栏 124
4.2.5 用例管理区 124
4.2.6 用例脚本开发区 125
4.2.7 信息输出区 126
4.3 Selenium IDE使用 126
4.3.1 Selenium IDE录制与回放 126
4.3.2 Selenium IDE脚本编辑 128
4.3.3 Selenium IDE元素定位 138
4.3.4 Selenium IDE匹配模式 141
4.3.5 Selenium IDE脚本转换 143
第5章 Selenium常规对象接口 148
5.1 浏览器对象操作 148
5.1.1 查找元素方法 148
5.1.2 浏览器窗口方法 149
5.1.3 Cookie处理方法 149
5.2 WebElement对象操作 150
5.3 文本框对象操作 152
5.4 按钮对象操作 152
5.5 下拉列表对象操作 153
5.6 链接对象操作 154
第6章 Web UI自动化特殊场景处理 156
6.1 处理多窗口测试场景 156
6.2 处理浏览器弹框场景 158
6.2.1 Alert对象及方法 158
6.2.2 优雅地处理Alert弹框 159
6.3 Selenium进行键盘鼠标操作 160
6.3.1 键盘操作 160
6.3.2 鼠标操作 161
6.4 非Web控件的操作实现 162
6.5 Selenium执行JavaScript及操作DOM 164
6.6 Selenium截屏操作 165
第7章 UnitTest单元测试框架 167
7.1 常规使用方式 167
7.2 测试套件使用 169
7.3 TestLoader的使用 170
7.4 UnitTest加载流程 172
第8章 分层框架设计与实现 173
8.1 数据驱动层 174
8.1.1 文件存储 175
8.1.2 数据库存储 176
8.2 定位符驱动层 180
8.2.1 本地文件存储 181
8.2.2 远程服务存储 183
8.3 页面操作层 185
8.4 业务逻辑层 190
8.4.1 公共业务 190
8.4.2 常规业务 191
8.5 结果驱动层 193
8.5.1 日志Logger记录 193
8.5.2 自定义Logger记录 199
8.5.3 邮件通知结果 203
8.6 异常处理层 204
8.6.1 程序异常处理 204
8.6.2 断言异常处理 208
8.6.3 自定义异常类 209
第9章 测试脚本部署 211
9.1 使用SVN管理测试脚本 211
9.1.1 SVN服务安装 212
9.1.2 SVN客户端安装 217
9.1.3 SVN使用简介 219
9.1.4 SVN操作规范 223
9.2 远程执行用例场景 224
9.3 Selenium Grid模块及搭建 228
9.3.1 Selenium Grid环境搭建 229
9.3.2 Selenium Grid使用 232
9.4 持续集成的自动化测试 232
第10章 Web API介绍 236
10.1 HTTP简介 236
10.1.1 HTTP请求报文 237
10.1.2 HTTP响应报文 239
10.2 Web API介绍 240
10.3 REST API介绍 241
第11章 Web API自动化基础 243
11.1 正则表达式模块学习 243
11.1.1 字符搜索 244
11.1.2 字符替换和分割 246
11.1.3 表达式修饰符 246
11.1.4 其他事项 247
11.2 XML读写模块的学习 248
11.2.1 读取XML文档 249
11.2.2 写入XML文档 252
11.3 JSON模块的学习 253
11.3.1 JSON串生成 254
11.3.2 JSON串解析 256
11.4 MD5、BASE64编解码 256
11.4.1 BASE64编解码 257
11.4.2 MD5加密 258
11.4.3 数据序列化 259
第12章 Python发送HTTP请求 261
12.1 HTTP请求发送 261
12.1.1 requests模块安装 261
12.1.2 发送GET请求 262
12.1.3 发送POST请求 264
12.1.4 发送multipart/form-data请求 265
12.1.5 发送其他类型请求 266
12.2 HTTP请求认证 266
12.2.1 HTTP Basic Auth 267
12.2.2 HTTP Digest Auth 267
12.2.3 OAuth认证 268
12.2.4 自定义认证 268
12.3 URL的编解码 269
12.4 HTTP响应内容验证 271
12.4.1 状态码验证 271
12.4.2 响应头验证 272
12.4.3 响应体验证 273
12.5 多线程发送请求 276
12.5.1 函数式多线程 276
12.5.2 类继承式多线程 279
第13章 API工具设计与实现 282
13.1 简单的API工具 282
13.1.1 请求方法设置 284
13.1.2 请求头设置 288
13.1.3 支持文件上传 289
13.1.4 简单结果验证 292
13.2 测试数据读取 293
13.2.1 测试数据格式 293
13.2.2 数据存储方式 294
13.2.3 实现数据读取 296
13.3 测试数据用例化 299
13.3.1 用例基本信息 299
13.3.2 用例套件信息 301
13.3.3 用例模板信息 302
13.4 测试流程控制 304
13.4.1 钩子函数接口设计 305
13.4.2 钩子函数接口调用 307
13.4.3 钩子函数接口实现 309
13.5 测试结果验证 311
13.5.1 完全匹配 311
13.5.2 内容包含 312
13.5.3 正则匹配 313
13.5.4 JSONPath 313
13.6 测试数据记录 315
13.6.1 结果记录 315
13.6.2 日志记录 317
第14章 集成为Web服务 319
14.1 Web服务简介 319
14.1.1 Web框架选择 320
14.1.2 DEMO实现 321
14.1.3 框架开发学习 322
14.2 Web上启动用例执行 330
14.2.1 运行参数接收 332
14.2.2 测试请求处理 335
14.3 Web上查看测试结果 337
14.3.1 任务列表页 338
14.3.2 用例结果页 340
14.4 持续集成的API自动化测试 342
14.4.1 用例集保存 342
14.4.2 用例集执行 345
第15章 HTTP Mock开发 347
15.1 HTTP Mock介绍 347
15.2 HTTP Mock分析 348
15.3 HTTP Mock实现 349
15.3.1 根据请求URL过滤 349
15.3.2 根据请求方法过滤 350
15.3.3 根据请求头过滤 352
15.3.4 根据请求数据过滤 353
参考文献 356
结束语 357
为什么要写这本书
作为一名测试人员,从工作的天开始我就对自动化测试产生了独特的兴趣。而初的理由也很简单,就像开发人员不愿意只写业务代码一样,测试人员也不希望只局限于手动测试。自动化测试对于当时还是新手测试人员的我而言,完全可以用“高大上”来形容。自此,我便在学习和实践自动化测试的道路上越走越远。
而随着计算机技术及互联网的发展,如今作为一名测试人员,不仅要掌握针对于业务流程的手动测试方法和理论;还要具备一定的自动化、性能的测试能力。甚至于在找工作时会写脚本,会使用自动化工具进行测试已经成为测试人员的一种标配。本书总结了作者在项目实践中的多年工作经验,梳理了自动化测试需要掌握的一些基本技能和知识,帮助初级测试人员快速掌握目前常用的自动化测试手段和方法,提高自身的综合技能水平。
自动化测试对于测试新人而言,往往会理解为手动功能测试的自动化实现。比如:UI自动化测试。但从广义概念来看,自动化测试还要包括:接口自动化、性能自动化、白盒自动化、安全自动化、自动化工具/框架/平台等一系列可以通过开发脚本来实现的测试。而本书所讲到的自动化测试内容包括:UI自动化、自动化框架、接口自动化、自动化工具、自动化持续集成等相关知识。目的是给读者打开一个通向更加广泛的自动化测试之门。
此外,对于一些刚开始接触自动化测试的人员而言,自动化测试几乎等同于高效测试。其实现项目中并没有想象的那么美好,自动化测试需要根据不同的场景和需求来定制不同的自动化测试方案。本书开始的部分就介绍了自动化测试的方法论和实践,避免测试新人误入自动化测试的“陷阱”。
另外,本书也是一本Python的基础学习教程,作为Python的铁杆粉丝,自然也希望能够将Python语言程度地推广到自动化测试领域中来。正所谓“人生苦短,我用Python!”
本书特色
1. 附带读书兴趣小组,方便学习沟通
为了便于读者相互沟通,提高学习效率,作者专门为本书建设了读书兴趣小组,读者可以通过登录testqa.cn并加入seleniumbook小组来学习和交流。另外本书中的源码包也会在这个小组中支持下载。
2. 涵盖多种自动化测试方法
本书涵盖自动化测试中使用到的多种测试方法,除了UI的自动化,还包括接口自动化,测试工具开发、CI的使用。
3. 对Selenium工具的历史和原理进行了分析与说明
除了对于Selenium工具,提供相关接口的实例代码外,还介绍了Selenium的历史和基本原理。使得读者在学习的过程中,知其然也知其所以然。另外对Selenium IDE的操作和使用也做了较为详尽的说明,使得初学者也可以快速上手和使用Selenium进行自动化测试的
实践。
4. 介绍详尽框架的开发
本书除了介绍Selenium的一些基本接口之外,还介绍了在基于Selenium的情况下,如何搭建可用性较高的测试基础框架。使用分层架构、数据驱动、业务解耦、功能封装等方式,让UI自动化测试不再是“可远观而不可亵玩”的技术。
5. 总结自动化实践
本书的开头并没有一上来就开展技术的介绍,而是先从方法论和实践开始。目的是让读者先理解“道”,再学习“术”。这样才能更好地学习和真正地利用自动化的相关测试技术。避免测试新人误入自动化的“陷阱”。
6. 提供基础的Python教程
除了介绍自动化相关的测试技术,本书还涵盖了书中其他地方需要用到的Python编程基础知识。为的是让读者只需一本书就可以开始步入自动化测试的行列。
7. 提供完善的技术支持和售后服务
本书提供了专门的技术支持邮箱:[email protected]。读者在阅读本书过程中有任何疑问都可以通过该邮箱获得帮助。
读者对象
希望学习自动化测试技术的测试人员;
希望提升自身技术的测试人员;
希望了解自动化测试技术的开发人员;
其他希望利用自动化技术的相关人员。
本书主要内容
本书分为三大部分。
部分为方法论,主要介绍入门自动化测试之前需要了解的相关方法论和实践。
第二部分为Selenium介绍,着重讲解Selenium的历史、原理、IDE和接口的使用,同时还介绍了基于Selenium的自动化框架搭建。
第三部分为工具开发介绍,通过一步步深入的介绍带领读者进行接口测试工具、mock测试工具的开发,同时集成到Web服务中。
除了这三个主要部分之外,还会有一些其他的自动化相关知识,各自分散在不同的章节中。比如:CI持续集成的使用,基础环境的搭建,Python语言的学习等。如果你是一名初学者,建议从第1章开始学习。
阅读本书的建议
测试新手读者,建议从第1章顺次阅读。
有一定Python基础的读者,可以根据实际情况有重点地选择阅读各个技术要点。
在学习框架之前,需要保证对Selenium和Python语法章节有了一定的掌握;先通读一遍有个大概印象,然后将每个知识点的示例代码都在开发环境中操作一遍,加深对知识点的印象。
结合github中的完整代码来实际操作,这样理解起来就更加容易,也会更加深刻。
进一步学习建议
当您阅读完本书后,相信已经掌握了Python Web自动化测试的基本知识。但如果还要更进一步深入下去,还必须要进一步地掌握Python的开发技术,以及加深对自动化测试的理解。掌握了扎实的技术能力之后,针对项目中需要提炼的流程和事务,进行分析并有针对性地优化。做好自动化项目重要的一点就是:结合实际业务需求,否则可能就成为“空中
楼阁”。
此外还需要学习性能、白盒、安全等相关测试技术,结合自动化来提升这些测试过程中的效率。比如:测试数据的准备、mock系统的开发、代理监听、信息采集等。
如果希望在Python编程方面有更多的提升,推荐去阅读Python核心编程方面的书籍,而对于项目中的效率提升则需要自己更多地去实践、学习和思考。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意创建一个在线支持与应急方案的二级站点http://www.testqa.cn/seleniumbook。你可以将书中的错误发布在Bug勘误表页面中,同时如果你遇到任何问题,也可以访问seleniumbook小组页面,我将尽量在线上为读者提供满意的解答。书中的全部源文件除可以从github(http://github.com/five3)下载外,还可以从testqa站点下载,我也会及时更新相应的功能。如果你有更多的宝贵意见,也欢迎通过清华大学出版社网站(www.tup.com.cn)与我们联系,期待能够得到你们的真挚反馈。
致谢
首先要感谢我的爱人、岳母,是她们的辛苦付出和支持才让我有时间来进行本书的写作。
感谢出版社的编辑老师,在这一年多的时间中始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。
还要感谢职业生涯中给予过我帮助的同事们,没有你们的信任和无私的帮助就没有这本书。
后感谢我的爸爸、妈妈、哥哥、姐姐,感谢你们将我培养成人,并给予我的一切!
谨以此书献给我亲爱的儿子,希望他一直快乐成长!
评论
还没有评论。