首页>参考读物>计算机科学与技术>综合

从0到1搭建自动化测试框架:原理、实现与工程实践
作者 : 蔡超 著
出版日期 : 2021-11-19
ISBN : 978-7-111-69520-2
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 328
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
这是一本从架构设计、工作原理、设计原则、代码实现、工程实践等维度全面讲解自动化测试框架的著作,既讲透了当下流行的各种自动化测试框架,又详细讲解了从0到1搭建自动化测试框架的方法和步骤,能指导读者快速实现从测试工程师向测试开发工程师的转型,完成职业生涯的飞跃。
具体内容方面,全书共16章,分为如下几个部分:
第1部分(第1~2章):全面介绍了自动化测试框架的概念、原理、类型及通用模块,详细论述了自动化测试框架的设计原则,以及微服务测试下自动化测试框架应该如何规划和组织。
第二部分(第3~5章):着重介绍了Python语言体系下的两个经典开源框架unittest和pytest,以及如何用它们搭建自动化测试框架。
第三部分(第6~14章):是本书的重点,全面讲解了如何从0开始、不依赖任何开源框架、自主开发自动化测试框架,手把手带领读者完成自研测试框架开发。
第四部分(第15章):讲解了持续集成的核心原理和所用工具,以及如何将自研的自动化测试框架集成到企业现有的自动化测试流水线中,从而实现持续测试。
第五部分(第16章):介绍了如何将自研的自动化测试框架发布至Python官方仓库供他人下载使用。

图书特色

资深测试专家10余年经验总结,拉勾教育超12000付费,手把手教你从测试工程师转型为测试开发工程师
从架构设计、工作原理、设计原则、代码实现、工程实践等维度
深入分析如何从0到1搭建自动化测试框架

图书前言

为什么要写这本书
随着敏捷开发、微服务架构、DevOps逐渐深入人心,频繁迭代、持续交付已然成为软件开发的基本要求。企业对自动化测试、持续测试的需求也越来越多,这导致市场上需要大量具备“测试开发”技能的专业人才。遗憾的是,这样的人才十分稀有。一方面,技术更新快,企业对软件测试工程师的技术要求越来越高;另一方面,大量测试工程师不了解测试框架的原理,不具备独立开发测试框架的能力,找工作越来越困难。
当前软件行业存在这样一种现象:软件开发职能越分越细,软件质量要求越来越高,软件发布越来越频繁,而测试开发比却越来越低。在这个背景下,作为软件测试工程师,不但需要对被测软件有充分的认知,还要能够全局思考,能多维度、系统性地将软件测试体系纳入公司已有的技术架构下。“一个测试工程师就是一个测试团队”成为众多互联网公司的需求。作为技术能力的最直接体现,自研自动化测试框架就变成了软件测试工程师的刚需技能。
然而,现实情况是,除了少数公司外,大部分公司的软件测试工程师执行手工测试和自动化测试的时间比例仍为6:4、7:3甚至9:1。他们既无法胜任有更高技术要求的测试工作,又无法在工作中提升自己。用自研框架将测试流水线融入公司的技术体系,就变成了一句空谈。
基于此,笔者在拉勾教育开设了《测试开发入门与实战》专栏,指导测试工程师从功能测试向测试开发转型。在专栏开设后的短短几个月内,订阅学习的软件测试工程师就超过了1.22万人。通过打牢基础、项目实战、能力修炼、深入原理几个模块的练习,很多测试工程师走上了测试开发的岗位。与此同时,在读者粉丝群、微信公众号iTesting里,笔者也收到了大量咨询和讨论,其中最典型的几个问题如下。
自研测试框架的模块和实例,您是怎么总结出来的?
为什么我想不到这么设计,能否分享一下您的设计思路?
能否从0到1地带我们搭建一个完全自研的测试框架?
在读者的热情留言的鼓舞下,笔者充分调研了市面上的自动化测试、测试开发类图书,决定以自研自动化测试框架本身为侧重点,写一本详细讲解自动化测试框架搭建、原理、设计原则和具体实现的书。
读者对象
本书适合以下读者。
希望搭建企业级测试框架的软件测试人员。
希望深入了解测试框架设计思路、工作原理、实现逻辑的中级测试工程师。
希望转型测试开发的初级自动化测试工程师、手工测试人员。
希望提升团队自动化测试技术水平的测试管理者。
对自动化测试、测试开发技术有实际需求的软件测试人员。
高等院校软件专业的学生。
本书特色
本书由浅入深地介绍了自动化测试框架的实现原理、架构设计、工程实践,通过先简述框架模型,再介绍开发测试框架涉及的知识点,最后带领读者编码实现自动化测试框架功能模块的方式,将开发测试框架涉及的重要功能点一一自研实现,这些功能点包括测试环境切换、数据驱动、自动化测试用例组织、在运行中挑选测试用例、并发执行测试用例、错误处理、日志系统搭建、测试报告、API测试和UI测试融合以及集成测试框架到CI/CD系统等。通过阅读本书并跟随练习,读者可以体验从写下第一行代码开始,到创建一个完整的、结合持续集成和持续测试的自动化测试框架的全部过程,并通过这个过程掌握自动化测试框架开发方法。
如何阅读本书
第1、2章全面介绍自动化测试框架的概念、原理、类型及通用模块,论述自动化测试框架的设计原则,并根据分层自动化测试的特点,结合当下流行的微服务架构下的测试,详细讲解如何将分层自动化的测试理念应用到自动化测试框架的设计中,以及微服务测试下自动化测试框架应该如何规划和组织。
第3~5章着重介绍Python语言体系下的两个经典开源框架unittest和pytest的特点、使用方法、最佳实践等,并讲解部分源码的实现原理。学完本部分内容,读者可以直接使用unittest和pytest搭建一套开源的测试框架。
第6~14章是本书的重点,介绍测试框架的重点功能,从测试框架的入口—交互式命令出发,到完善自动化测试框架,手把手带领读者开发测试框架。学完本部分内容,读者即可自主开发自动化测试框架。
第15章介绍持续集成的核心原理、用到的工具,并从项目实际需求的角度出发,结合GitHub、Jenkins Blue Ocean、Docker将自动化测试框架集成到自动化测试流水线中,从而实现持续测试。
第16章介绍如何将自动化测试框架发布至Python官方仓库供他人下载使用。
通过阅读本书,读者既能了解设计原理,又能学会设计要点,还可以跟随具体介绍详细了解源码构建,真正实现从第一行代码开始,从0到1完整搭建自研自动化测试框架,并将其嵌入公司的技术架构。相信这个过程和体验是那些“只告诉你怎么用,不告诉你为什么这么用”的开源测试框架不能比拟的。
希望读者通过阅读本书完全掌握自动化测试框架开发方法,也希望读者不吝分享,将本书推荐给同事和朋友,更希望读者能以本书所介绍的框架为基础,早日开发出符合自身需求、功能强大的自研测试框架。
勘误和支持
限于个人水平,书中内容难免有不妥之处,恳请各位读者海涵,欢迎批评指正。读者可通过微信公众号“iTesting”直接留言联系笔者,也可以发邮件至testertalk@outlook.com进行反馈。
另外,书中的源代码文件可以通过关注微信公众号“iTesting”并回复“测试框架”获取。
致谢
首先,感谢推荐本书的测试同行,能够获得你们的认可和鼓励是我的荣耀。
其次,感谢关注公众号iTesting的朋友和经常听我“唠叨”的各位同人,你们的热情鼓励使得本书能够尽早与读者见面。
再次,感谢拉勾教育、机械工业出版社的诸多老师,特别是杨福川、韩蕊,为了本书的出版,你们付出了很多。
最后,感谢我最亲爱的家人,特别是我的妻子明莉及儿子享享。你们是最好的拉拉队员,作为首席“小迷妹”和“大迷弟”,你们无条件地支持与鼓励我,使我得以在繁重的工作间隙仍有无限动力完成此书。

蔡 超  
2021年11月

专家评论

本书详细介绍了如何搭建一个完整的Python自动化测试框架,并通过大量的应用实例辅助读者理解搭建原理,是初学者和从业者的不二选择。相信读者通过本书一定能够掌握搭建自动化测试框架的方法。
—杨忠琪 东方证券测试总监
本书全面讲解了自动化测试框架的实现原理、架构设计与工程实践,并列举了大量项目案例,实操性很强,非常适合对自动化测试感兴趣的读者阅读。
—艾辉 融360技术总监、《机器学习测试入门与实践》
《大数据测试技术与实践》作者
本书基于Python语言,以持续测试为目标,为读者提供了完整的框架设计思路及实践经验,是构建团队轻量级框架的优秀参考书。
—陈霁(云层) TestOps测试运维推动者
只有高度定制化的自动化测试框架才能高效执行自动化测试。本书深入介绍如何构建一个完整的自动化测试框架,帮助读者定制自己的自动化测试框架,有效提高软件的研发效能。
—刘冉 ThoughtWorks首席软件测试与质量咨询师
从0到1构建自动化测试框架对于很多测试人员来说是一件很有难度的事情。本书使用Python循序渐进地介绍了自动化测试框架的设计、开发和应用实践,并提供了大量开箱即用的代码,对致力于向自动化测试方向发展的测试人员来说无疑是一本不可多得的好书。
—陈晓鹏 项目管理专家、中国商业联合会互联网应用委员会智库专家
本书以自动化测试所面临的痛点为切入点,从方法论到实践落地,再到底层原理和源码解析,让你知其然也知其所以然。
—周辰晨 拉勾教育《说透性能测试》专栏作者
蔡超把自动化测试框架的理论知识与实践落地经验相结合,系统化、体系化地介绍了自动化测试框架的原理、设计思路、搭建和实现运用,并结合测试工作中的痛点详细讲解,值得每位测试从业者细细品读。
—司文 招商银行信用卡中心技术经理、
《敏捷测试高效实践:测试架构师成长记》作者
本书循序渐进地演示了如何从0开始,自主打造一个可在实际项目中直接使用的自动化测试框架。想在工作中落地Python自动化测试,跟蔡老师,新书学习就够了。
—陈冬严 《精通自动化测试框架设计》第一作者

上架指导

计算机\软件测试

封底文字

本书以“提质增效”的重要抓手——自研自动化测试框架为切入点,深入讲解自动化测试框架的设计原则、工作原理以及代码实践,值得一读。
童庭坚 PerfMa联合创始人
本书对自动化测试框架原理进行了深入浅出的介绍和分析,带领读者从无到有,从0到1完整地去实现一个自动化测试框架,帮助读者知其然,更知其所以然。测试本身重在实践,本书就是一本优秀的实践指南。当你能自己动手,构建属于自己的自动化测试框架后,测试开发这条路就为你打开了。
徐琨 Testin云测总裁
自动化测试一直是测试行业经久不衰的话题,也是测试人员职业技能进阶的必经之路。本书值得测试从业者仔细品读,其行业价值值得期待!
王斌 IT东方会联合发起人/ PerfMa合伙人
本书讲解了自动化测试框架的原理、设计思路和具体实现,并辅以大量工程实践代码,可以让读者有更多实操锻炼的机会,甚至拿来为己所用,构建自己的自动化测试框架。
朱少民 《全程软件测试》《敏捷测试》作者/ QECon大会发起人 
如果你想使用Python来开发完整的自动化测试框架,那么本书将会是一个很好的选择。本书将理论与实践相结合,由浅入深,详细讲解了开发自动化测试框架的各个维度。
茹炳晟 腾讯T4级技术专家/腾讯研究院特约研究员/畅销书《测试工程师全栈技术进阶与实践》作者

作者简介

蔡超 著:蔡超
资深测试专家,测试开发社区VIPTEST联合创始人,自动化测试框架 Ktest 作者。
在测试领域从业10余年,曾先后服务于惠普、英孚教育等多家国际知名企业,开发过测试报告系统、测试论坛、爬虫网站,对测试框架、自动化测试有深入研究,并被聘为中商联互联网应用工作委员会智库专家。
长期致力于软件测试的技术传播工作,著有图书《前端自动化测试框架:Cypress从入门到精通》;在拉勾教育上开设的专栏《测试开发入门与实战》曾创下24小时售卖超过10000份的纪录;软件测试类目微信公众号iTesting维护者。

图书目录

赞誉
前言
第1章 自动化测试框架基础 1
1.1 自动化测试框架概述 1
1.1.1 自动化测试框架的定义 1
1.1.2 为什么需要自动化测试框架 2
1.1.3 自动化测试框架的演化 2
1.2 自动化测试框架的通用原理 4
1.3 自动化测试框架的通用模块 5
1.3.1 基础模块 5
1.3.2 管理模块 6
1.3.3 运行模块 6
1.3.4 统计模块 6
1.4 自动化测试框架的类型 7
1.4.1 简单测试框架 7
1.4.2 X-Driven测试框架 7
1.4.3 混合型测试框架 8
1.4.4 不同类型测试框架的对比 8
1.5 自动化测试框架的设计原则 9
1.6 本章小结 10
第2章 分层自动化测试与测试框架 11
2.1 分层自动化测试概述 11
2.1.1 什么是分层自动化测试 11
2.1.2 分层自动化测试的模型 13
2.2 分层自动化测试的误区 16
2.2.1 测试一定是按顺序进行的 16
2.2.2 分层自动化测试跨层执行是反模式 17
2.2.3 分层后单元测试越多越好 17
2.3 分层自动化测试的最佳实践 17
2.3.1 测试尽量下沉 17
2.3.2 不要重复测试 18
2.3.3 合理选择分层模型 19
2.3.4 考虑用户场景 19
2.4 微服务下的自动化测试分层 20
2.4.1 微服务精要 20
2.4.2 微服务实施带来的挑战及解决之道 22
2.5 测试框架与分层自动化 24
2.6 本章小结 27
第3章 自动化测试框架初体验 28
3.1 他山之石—unittest测试框架核心原理 28
3.1.1 unittest框架概述 28
3.1.2 unittest框架运行原理 29
3.2 融会贯通—深入使用unittest测试框架 32
3.2.1 测试夹具的使用 32
3.2.2 运行指定文件夹下的测试用例 33
3.2.3 动态查找测试用例并执行 37
3.2.4 按需组装测试用例并执行 38
3.2.5 自定义测试用例查找原则 39
3.2.6 执行时忽略某些测试用例 40
3.3 unittest自动化测试框架搭建实践 41
3.3.1 搭建UI自动化测试框架 41
3.3.2 扩展unittest的测试报告 44
3.3.3 使用unittest三步生成自动化测试框架 48
3.4 扩展功能—unittest测试框架集成接口测试 49
3.4.1 Requests核心讲解 49
3.4.2 unittest测试框架集成接口测试示例 53
3.5 本章小结 56
第4章 玩转自动化测试框架 57
4.1 向经典致敬—测试框架pytest核心讲解 57
4.1.1 pytest基础用法 58
4.1.2 零代价迁移unittest测试框架 60
4.1.3 pytest核心概念 62
4.2 深入探索—pytest集成API测试 63
4.3 游刃有余—pytest核心用法 65
4.3.1 自定义测试用例查找原则 65
4.3.2 前置操作和后置操作的用法 66
4.3.3 静态挑选测试用例 68
4.3.4 动态挑选测试用例 70
4.3.5 忽略测试用例 71
4.3.6 失败测试用例自动重试 73
4.3.7 并发运行测试用例 74
4.4 深入实现—pytest数据驱动核心用法 75
4.4.1 pytest实现数据驱动 75
4.4.2 pytest数据驱动示例 77
4.5 如虎添翼—测试报告集成实践 85
4.5.1 pytest-html测试报告集成详解 85
4.5.2 Allure测试报告集成详解 86
4.6 本章小结 98
第5章 自动化测试框架最佳实践 99
5.1 元素定位策略实践 99
5.1.1 多种元素定位模型 99
5.1.2 元素定位实践 101
5.2 PageObject模型实践 106
5.2.1 PageObject模型的核心 106
5.2.2 PageObject模型应用 107
5.3 UI自动化测试和接口自动化测试的融合 109
5.3.1 融合原理 110
5.3.2 融合实践 111
5.4 测试数据应用实践 114
5.4.1 测试数据核心讲解 114
5.4.2 数据驱动模型 117
5.4.3 数据驱动实践 118
5.5 Web Service接口实践 124
5.5.1 Web Service接口调用原理 124
5.5.2 Web Service接口测试实践 125
5.6 本章小结 130
第6章 自动化测试框架与交互式命令 131
6.1 交互式命令精要 131
6.1.1 什么是交互式命令 131
6.1.2 交互式命令在测试框架中的作用 132
6.2 交互式命令在pytest中的使用 133
6.3 自主实现交互式命令 135
6.3.1 Python标准库argparse详解 135
6.3.2 交互式命令代码实践 138
6.4 测试框架集成交互式命令 139
6.5 本章小结 141
第7章 自动化测试框架与数据驱动 142
7.1 数据驱动原理概述 142
7.2 深入数据驱动原理 143
7.2.1 数据驱动DDT概述 144
7.2.2 数据驱动DDT源码解析 149
7.3 自主实现数据驱动 153
7.4 本章小结 157
第8章 自动化测试框架与测试环境 158
8.1 测试环境给自动化测试框架带来的挑战 158
8.1.1 测试环境的普遍问题 158
8.1.2 自动化测试框架如何应对测试环境变化 159
8.2 测试环境切换原理 160
8.2.1 测试环境切换原理概述 160
8.2.2 测试环境切换核心代码实践 161
8.3 测试框架集成测试环境动态切换 165
8.4 本章小结 170
第9章 自动化测试框架与测试用例 171
9.1 自动化测试用例详解 171
9.2 测试用例在测试框架中的组织形式 172
9.2.1 从功能出发进行模块化组织 172
9.2.2 从用户角色出发进行模块化组织 173
9.3 自主实现按需执行测试用例 174
9.3.1 测试用例挑选的场景 175
9.3.2 挑选测试用例的原理 175
9.4 测试用例挑选与测试框架的集成 180
9.4.1 测试框架文件结构 181
9.4.2 测试框架源码解析 182
9.4.3 执行测试 192
9.5 本章小结 194
第10章 自动化测试框架与并发运行 195
10.1 并发与全局解释器锁 195
10.2 自主实现并发 197
10.2.1 多线程并发 197
10.2.2 多进程并发 201
10.2.3 多进程下线程池并发 204
10.3 自主实现分布式并发 206
10.3.1 利用Selenium Grid实现
分布式并发 206
10.3.2 分布式并发代码实践 207
10.4 测试框架集成实践 208
10.4.1 集成PageObject模型 209
10.4.2 集成并发运行 213
10.5 本章小结 217
第11章 自动化测试框架与错误处理 218
11.1 错误处理核心原理 218
11.1.1 常见的错误处理类型 218
11.1.2 错误处理机制核心讲解 220
11.2 自主实现错误处理模块 222
11.2.1 自定义错误处理 222
11.2.2 错误处理模块代码实践 223
11.3 测试框架集成错误处理 225
11.4 本章小结 230
第12章 自动化测试框架与日志系统 231
12.1 Logging精要讲解 231
12.1.1 Logging工作流 232
12.1.2 Logging核心组成 234
12.2 自主实现日志系统 235
12.2.1 简单的日志系统 235
12.2.2 多线程Logging精要 238
12.2.3 多进程Logging精要 239
12.3 测试框架集成日志系统 242
12.4 本章小结 249
第13章 自动化测试框架与测试报告 250
13.1 测试报告详解 250
13.1.1 测试报告核心模块 250
13.1.2 测试报告设计 251
13.2 自主实现测试报告 253
13.2.1 测试报告模板开发 253
13.2.2 测试报告数据收集代码实践 258
13.3 测试框架集成测试报告 262
13.4 本章小结 268
第14章 完善自动化测试框架 269
14.1 自主实现前置准备和后置清理 269
14.1.1 前置准备和后置清理的工作流程 269
14.1.2 自主代码实践 271
14.2 融合API和UI进行自动化测试 273
14.2.1 使用API或者UI进行测试 274
14.2.2 同时运行API和UI自动化测试 275
14.3 一些遗留问题 277
14.4 本章小结 278
第15章 自动化测试框架与持续集成/持续部署 279
15.1 持续集成/持续部署核心原理讲解 279
15.1.1 什么是持续集成/持续部署 279
15.1.2 持续集成/持续部署核心工作流 280
15.2 持续集成/持续部署工具详解 281
15.2.1 Jenkins流水线 282
15.2.2 Docker核心知识 283
15.2.3 GitHub WebHook要点 286
15.3 持续集成项目实战 286
15.3.1 创建GitHub项目 286
15.3.2 编写Jenkinsfile文件 287
15.3.3 Jenkins Blue Ocean流水线搭建 288
15.4 本章小结 300
第16章 测试框架发布 301
16.1 测试框架打包、发布精要 301
16.1.1 详解pip和PyPI 302
16.1.2 打包测试框架 303
16.1.3 发布到PyPI 304
16.2 测试框架发布实战 304
16.3 本章小结 313

教学资源推荐
作者: (美)Maurice Herlihy布朗大学(以)Nir Shavit 著   特拉维夫大学
作者: [美] 布雷特·兰茨(Brett Lantz) 著
作者: [美]希拉格·沙阿(Chirag Shah) 著
作者: (美) Frank R.GiordanoWilliam P.FoxSteven B. Horton     著Maurice D.Weir
参考读物推荐
作者: 周兵 方云山 编著
作者: Andy Walker
作者: (美)David Meerman Scott 著