新書推薦:
《
中亚民族史
》
售價:HK$
184.8
《
人工智能与智能制造:概念与方法 [美]马苏德·索鲁什 [美]理查德·D.布拉茨
》
售價:HK$
140.8
《
中平:东汉王朝大崩溃(184—189)
》
售價:HK$
53.9
《
基于鲲鹏的分布式图分析算法实战
》
售價:HK$
108.9
《
中国历史研究入门(全二册)
》
售價:HK$
283.8
《
夺回大脑 如何靠自己走出强迫
》
售價:HK$
65.8
《
夏天,19岁的肖像(青鲤文库)岛田庄司两次入围日本通俗文学奖直木奖的作品 ,同名电影由黄子韬主演!
》
售價:HK$
49.5
《
图解机械工程入门
》
售價:HK$
96.8
|
編輯推薦: |
Cypress能够让软件开发实现并行测试,持续集成;专有元素定位,框架级别元素自动等待,原生支持Mock;专有TestRunner,命令执行细节全景回放呈现,定位问题更加精准。越来越多的国际大公司使用Cypress提升测试效率,学习Cypress自动化测试,正是趋势所在。
知名测试架构师蔡超老师在软件开发领域摸爬滚打15年,从多家知名外企成长,精心创作的这本书,集知识、经验、案例一书,并配180分钟视频面对面讲授,让你轻松学会:一个工具实现DevOps流水线;一个框架集成API测试和UI自动化测试;创建您自己的自动化测试框架
|
內容簡介: |
本书在简要讲解软件测试概述和自动化测试框架之后,教会读者了解测试的基本概念,以及如何设计一个测试框架。之后,在分别介绍了一些流行框架并使读者知晓各自优缺点和适用,使得读者对前端自动化框架有提纲挈领的了解。在此基础上,本书重点介绍当下流行的前端测试框架Cypress ,通过基础知识、进阶知识、高级用法和实战演示几个方面,由浅入深,让读者真正掌握前端测试框架,成为软件测试行业的高手。
|
關於作者: |
蔡超,知名测试架构师,自动化测试框架ktest作者,软件测评师,PMP,互联网测试开发社区VIPTEST联合创始人,微信公众号iTesting作者。曾先后服务于世界 500 强企业上海惠普有限公司( HP), 在线教育企业英培信息技术有限公司(EF Labs) 等国际公司, 对测试框架,自动化测试有深入研究。业余时间热爱软件测试技术分享并长期致力于软件测试的技术传播工作。技术博客https:www.helloqa.com
|
目錄:
|
第一部分 前端自动化测试框架准备篇
第1 章 前端自动化测试概述 2
1.1 前端自动化测试概述 2
1.2 前端自动化测试框架概述 5
1.2.1 应运而生的前端测试框架 5
1.2.2 前端自动化测试框架组成 6
1.2.3 前端自动化测试框架设计原则 8
1.3 前端代码基础 9
第二部分 前端自动化测试工具篇
第2 章 前端测试框架工具大比拼 14
2.1 前端测试框架工具简介 14
2.1.1 SeleniumWebDriver 14
2.1.2 Karma 15
2.1.3 Nightwatch 17
2.1.4 Protractor 17
2.1.5 TestCafe 18
2.1.6 Puppeteer 19
2.2 Cypress框架介绍 20
2.2.1 Cypress简介 20
2.2.2 Cypress架构及原理 20
2.2.3 Cypress八大特性 22
2.2.4 一图胜千言 23
2.3 Cypress与SeleniumWebDriver的比较 23
2.3.1 SeleniumWebDriver的原理 23
2.3.2 Cypress与SeleniumWebDriver比较 26
2.4 Cypress与其他主流测试工具比较 29
2.4.1 Cypress与Karma比较 29
2.4.2 Cypress与Nightwatch比较 30
2.4.3 Cypress与Protractor比较 31
2.4.4 Cypress与TestCafe比较 32
2.4.5 Cypress与Puppeteer比较 33
2.5 Cypress的局限 34
2.5.1 长期权衡 34
2.5.2 短期折中 34
第三部分 前端自动化测试框架基础篇
Cypress基础知识
第3 章 Cypress初体验 36
3.1 Cypress安装 36
3.1.1 系统要求 36
3.1.2 下载 36
3.1.3 安装 37
3.1.4 打开Cypress 39
3.1.5 Cypress设置 40
3.2 搭建测试应用 41
3.2.1 下载测试应用 41
3.2.2 启动测试应用 42
3.3 测试你的应用 44
3.3.1 创建测试 44
3.3.2 编写测试用例 44
3.3.3 运行测试 46
3.3.4 调试测试用例 47
第4 章 Cypress测试框架拆解 53
4.1 Cypress默认文件结构 53
4.1.1 测试夹具(Fixture) 54
4.1.2 测试文件(Test file) 54
4.1.3 插件文件(Plugin file) 55
4.1.4 支持文件(Support file) 55
4.2 自定义Cypress 56
4.3 重试机制 59
4.3.1 命令和断言 59
4.3.2 多重断言 61
4.3.3 重试(Retry-ability)的条件 61
4.4 测试报告 62
4.4.1 内置的测试报告 62
4.4.2 自定义的测试报告 66
4.4.3 生成混合测试报告 69
第5 章 测试用例的组织和编写 72
5.1 Mocha介绍 72
5.2 钩子函数(Hook) 74
5.3 排除或包含测试用例 82
5.3.1 排除测试套件测试用例 83
5.3.2 包含测试套件测试用例 86
5.4 动态忽略测试用例 89
5.5 动态生成测试用例 91
5.6 断言 93
5.7 观察测试运行 94
第6 章 Cypress与元素交互 97
6.1 Cypress元素定位选择器 97
6.2 Cypress与页面元素交互 99
6.2.1 查找页面元素的基本方法 99
6.2.2 查找页面元素的辅助方法 100
6.2.3 可操作类型 105
6.2.4 Cypress常见操作 109
第7 章 命令行运行Cypress 117
7.1 cypress open 117
7.1.1 cypress open简介 117
7.1.2 cypress open详解 118
7.2 cypress run 119
7.2.1 cypress run简介 119
7.2.2 cypress run详解 119
第8 章 测试运行器 123
8.1 Test Runner简介 123
8.2 Test Runner如何便捷我们的测试 125
8.2.1 更改浏览器 125
8.2.2 更改元素定位策略 125
8.2.3 实时监控测试用例执行情况 126
8.2.4 时间穿梭功能 126
8.3 Test Runner功能扩展 127
8.3.1 安装 127
8.3.2 配置 127
8.3.3 使用 128
第9 章 重塑你的测试习惯 129
9.1 Cypress典型的坑 129
9.1.1 Cypress命令是异步的 129
9.1.2 慎用箭头函数 130
9.1.3 asyncawait不工作 130
9.1.4 赋值永远失败 131
9.1.5 躲不过的同源策略 131
9.2 Cypress独特之处 132
9.2.1 闭包(Closure) 132
9.2.2 变量和别名 133
第四部分 前端自动化测试框架进阶篇
Cypress进阶
第10 章 Cypress最佳实践 138
10.1 设置全局URL 138
10.2 避免访问多个站点 139
10.3 删除等待代码 139
10.4 停用条件测试 140
10.5 实时调试和中断 140
10.6 运行时的截图和录屏 141
10.7 断言最佳实践 143
10.8 改造PageObject模式 146
10.9 使用Custom Commands 153
10.10 数据驱动策略 155
10.10.1 数据保存在前置条件里 155
10.10.2 使用fixtures 156
10.10.3 数据保存在自定义文件中 156
10.11 环境变量设置指南 157
10.11.1 cypress.json设置 157
10.11.2 cypress.env.json 157
10.11.3 运行时动态指定环境变量 158
10.12 测试运行最佳实践 159
10.12.1 动态生成测试用例 159
10.12.2 挑选待运行测试用例 159
10.13 测试运行失败自动重试 162
10.14 全面的测试报告 162
10.15 Cypress连接DB 163
第11 章 使用Cypress做接口测试 165
11.1 发起接口请求 165
11.1.1 发起HTTP请求的方式 165
11.1.2 发起GET请求 166
11.1.3 发起POST请求 167
11.2 实例演示 170
第12 章 Mock Server 172
12.1 自定义Mock Server 172
12.1.1 搭建Mock Server 172
12.1.2 使用Mock Server进行测试 173
12.2 Cypress自带Mock 182
12.2.1 截获接口返回值 184
12.2.2 更改接口返回值 185
第13 章 模块API 187
13.1 cypress.run 187
13.2 cypress.open 188
13.3 Module API实践 188
13.3.1 挑选测试用例运行 188
13.3.2 Module API完整项目实践 191
第五部分 前端自动化测试框架高级篇
持续集成实践
第14 章 Cypress持续集成实践 202
14.1 持续集成简介 202
14.2 Cypress并行执行测试 203
14.3 Circle CI持续集成实践 204
14.3.1 Circle CI集成Github 204
14.3.2 Circle CI集成Cypress 212
14.4 Jenkins持续集成实践 220
附录A 参考资料 229
A.1 源代码下载 229
A.2 参考资料 229
A.3 联系作者 229
|
內容試閱:
|
序 1
最近几年,跟不少公司的创始团队都有过深入的交流,技术驱动商业腾飞越来越成为大家的共识。在科技全球化的浪潮下,谁深耕技术,谁就能构建起技术的护城河;谁深耕技术,谁就能通过技术赋能,实现业务的单点突破,甚至成就新的商业模式。与此对应地,公司在技术团队上的投入也逐年增多,而工程技术团队面临的挑战,从单纯的技术升级与变革,逐步过渡到团队技术思维的迭代。
在新的思维模式下,技术团队如何更高效、更迅速地支撑公司爆发式增长,如何利用技术赋能公司业务,是每一位技术领导人所面临的挑战。鉴于此,各个企业都在积极探索互联网新技术,同时随着各类开源和商业技术组织的推动,形成了百花齐放的局面。随着各类技术的不断升级,每个企业就会面临一个不可回避的问题应用质量保障。
同时,伴随着精益管理、敏捷开发和持续交付的深入人心,人人对质量负责已经变成毫无争议的事实。质量保障由质量团队单独负责,变成工程技术团队整体对质量负责。在此背景下,质量保障的手段及工具,也迎来了新的机遇。而测试作为应用质量保障的重要环节,不仅需要有持续优化的方法论,同时也需要不断地进行生产工具和生产力的革新,以适应现代开发技术的发展。
其中自动化测试作为提升质量效能的重要能力支撑,对于其相关技术和工具的掌握及运用就显得尤为重要。
从我认识本书作者蔡老师以来,他就在自动化测试领域深入耕耘,他对软件测试,特别是自动化测试有自己独到的见解,更有编写自动化测试框架的经历。在跟他的交谈中,我一方面能感受到他对自动化测试框架的热忱,也常听到他对于当下测试工具支撑能力不足的抱怨。故在他兴奋地向我描述Cypress框架不仅能贯穿三层测试金字塔结构且他已践行多时并整理成书时,我欣然受邀,为本书作序。
本书作者高屋建瓴,从整个前端开发的发展历程娓娓道来,从前端测试框架的前世今生讲起,通过对市面上多款主流前端测试框架的对比,引出本书的主角Cypress。本书不仅是一本实用的技术工具书,还具备一定的行业前瞻性,更结合了作者多年一线的最佳实践经验,是不可多得的测试技术宝典。
俗话说,工欲善其事,必先利其器。本书值得每位自动化测试从业者品读和学习。
IT东方会联合发起人、杭州笨马网络技术有限公司(PerfMa)副总裁 王斌
序 2
现代企业对于产品质量的要求越来越高,同时,也有越来越多的公司取消了QAQE的职位,取而代之的是更多的测试架构师的职位,让测试人员专注于测试框架的开发以及测试策略的构建,而让开发人员从头到尾负责产品的质量。因此,以前写测试用例的测试职位会越来越少,对于之后的测试人员的要求会越来越偏向测试架构和整体流程,而一个测试工程师如何编写一个可以让开发工程师更容易使用的测试架构将成为重点。
本书是蔡老师在企业经历了数个真实项目,打磨了多个自动化框架后的技术输出。本书结合了真实案例,带读者从JS基础入手,学习Cypress,随后一步步构建一个以Cypress为基础的前端测试框架,以结合CI的持续集成实践部分结束。内容由浅入深,带领读者贯穿整个测试框架构建流程,帮助读者从零开始构建一个符合现代化项目质量的测试工具。整个框架完全依托于使用JS开发,也可以帮助前端开发工程师更好、更快地上手这个前端测试框架并编写测试用例。无论你是一个初入职场的测试新人,还是一个久经考验的测试老将,都能从中收获良多。
最后,祝贺蔡老师新书发布,也希望本书能够帮助到更多的开发者。
eBay中国资深架构师 严正刚
前 言
近年来,在互联网行业飞速发展的背景下,频繁交付、快速迭代逐渐成为软件开发、交付的首要目标。所以,敏捷的、能提高组织运行效率并能减少浪费的各种理论和方法越来越受欢迎。DevOps和敏捷开发作为其中的佼佼者,已经被广泛应用在各种项目实践中。在DevOps和敏捷开发实践中,自动化测试在整个测试活动中所占的比重也越来越大,但是用于自动化测试的工具却长期没有大的突破。
说起前端自动化测试,大家一定会想到SeleniumWebDriver。诚然,SeleniumWebDriver作为前端UI自动化测试的王者,曾经承担起了绝大多数的前端UI自动化测试工作。但是前端自动化测试,真的只能包含UI自动化吗?
时至今日,前端Web开发技术,早已经从简单的静态页面阶段,发展到现代Web应用程序阶段。特别是随着Node.js(Node.js可以看作是可以运行JavaScript的服务器环境)的出现,使得前端应用越来越复杂,譬如前端也可以用作服务端来操作数据库、提供API等。SeleniumWebDriver在用作此类应用程序进行自动化测试时,越来越显得笨拙,难以满足用户期望。
Cypress作为新一代的自动化测试框架,与SeleniumWebDrvier相比,拥有无与伦比的优势:
? Cypress运行在浏览器之内,而SeleniumWebDriver运行在浏览器之外。
? Cypress不基于JSON Wire协议,比SeleniumWebDriver运行更快。
? Cypress不仅能做UI自动化测试,而且可以做接口测试,集成测试。
与只能用在UI自动化测试的SeleniumWebDriver相比,Cypress能够覆盖测试金字塔的方方面面,而且在元素定位、自动等待、Mock服务器返回方面都展现出了超强的能力。除此之外,Cypress允许测试者直接通过接口请求的方式,即刻满足测试场景所需的配置,而无须烦琐的测试准备。
测试你的代码,而不是你的耐心。Cypress作为下一代前端自动化测试框架的翘楚,在NASA(美国国家航空航天局),Amazon Web Services(AWS,亚马逊云)等公司成功部署并商用,而且在UI自动化测试、接口自动化测试以及端到端(End to End)自动化测试中均有不俗的表现。
目前图书市场上,还没有一本专门介绍End to End前端测试框架Cypress的书,作为Cypress框架的受益者,我期望广大测试人员在项目实践中尽早使用Cypress,以提升测试效率,减少不必要的时间浪费。
最后,我希望本书可以促进国内互联网测试从业者对前端测试框架的探讨和交流,并期待国内自主可控的优秀前端测试框架诞生。
从本书中可以收获什么
本书是一本介绍软件自动化测试框架搭建、使用及定制的技术书籍,更是一本指导测试工程师如何做端到端自动化测试(包括UI自动化测试,接口自动化测试)的技术类书籍。
基于测试框架Cypress,本书由浅入深地介绍了自动化测试的方方面面。内容包括测试用例动态生成,动态挑选,动态执行;数据驱动;PageObject设计模式;挡板(Mock Server);持续集成(CICD)及测试报告等多个知识点,并附有详细实例。
学习完本书,你不仅能搭建一套覆盖UI自动化、接口自动化测试的测试框架,也能将此框架与你的DevOps流程集成在一起,实现测试效率的提升。
本书面向的读者
本书适合以下读者阅读:
? 对自动化测试(不仅仅是UI自动化)有实际需求的软件测试人员。
? 希望能搭建起企业级、项目级测试框架的软件测试人员。
? 想转向自动化测试的测试人员。
? 对前端自动化测试新技术感兴趣,想进一步了解的人员。
本书可用于相关管理人员的自动化测试框架选型参考,也可当作初入测试行业的第一本测试框架实践指南。
本书内容结构
本书分为五大部分,14章,各部分的主要内容如下:
第一部分:前端自动化测试框架准备篇
本部分详细介绍了自动化测试的概念、组成及自动化框架的设计原则。
通过阅读本部分,读者会对目前软件测试的现状有充分了解,并能说出一个优秀的自动化测试框架应该包括哪些组成部分以及如何设计一个测试框架。
第二部分:前端自动化测试工具篇
本部分介绍了当前流行的前端测试框架,并进行了逐个比较。着重从架构、原理、解决的痛点等多方面比较了SeleniumWebDriver和Cypress的异同,借助这些比较,读者可以清晰了解到Cypress的优势。
通过阅读本部分,读者还可以了解到多个前端测试框架的各自优缺点和适用范围。
第三部分:前端自动化测试框架基础篇Cypress基础知识
本部分从如何搭建Cypress测试环境讲起,首先介绍了如何编写你的第一个测试脚本,Cypress测试框架拆解;然后介绍了如何识别元素,如何通过命令行运行Cypress及运行完后的查看测试运行器;最后介绍了Cypress下特有的测试习惯。
通过阅读本部分,读者能够上手Cypress并搭建出自己的Cypress测试框架。
第四部分:前端自动化测试框架进阶篇Cypress进阶
本部分主要介绍了Cypress的进阶知识点,Cypress最佳实践,接口测试及如何搭建自己的Mock Server。
通过阅读本部分,读者将能更自如地使用Cypress并能使用Cypress完成大多数自动化测试工作。
第五部分:前端自动化测试框架高级篇持续集成实践
本部分主要介绍了如何使用Cypress进行并发(并行)测试,并着重介绍了Cypress如何与持续集成结合。每一位立志成为优秀测试架构师的同学都应该仔细阅读本部分内容。
通过阅读本部分,读者将对Cypress产生更大的认同,也会更加理解为什么Cypress能够天然适应大中台,小前台的战略并为企业赋能。
勘误与支持
限于个人水平,书中难免有不妥或不足之处,恳请各位读者海涵,并欢迎各位批评指正。
读者朋友可通过微信公众号iTesting直接留言或联系作者,也可以发邮件至testertalk@outlook.com。
致谢
感谢为我写推荐序、推荐语的朋友们,能够获得你们的认可和鼓励是我的荣耀。
感谢关注我公众号的朋友们和经常听我唠叨的各位测试行业的同行们,是你们的热情鼓励使得本书能够尽早与读者朋友见面。
感谢电子工业出版社的张瑞喜老师及为本书做校对审核工作的人
|
|