前端自动化测试框架:Cypress从入门到精通
作者: 蔡超 编著
出版时间:2020年版
内容简介
一本代表着新技术发展趋势的IT专业技术图书的出版,常常都会有很多圈子里的同行们前来祝贺、推荐和评价。我最近编辑出版的新书,作者蔡超老师,已经在IT技术领域摸爬滚打十几年,曾先后服务于惠普,英孚教育亚太研发中心等多家国际知名企业,是一位资深但却低调的测试架构师。 他的这本书,有两个突出的特点: 第一,填补了市场空白。Cypress作为紧密贴合前端开发技术趋势,底层技术却又很成熟的前端自动化解决方案,已风靡海外技术社区,但在本书之前,国内市面上却没有一本详细介绍其技术原理,使用指南,二次开发实践的书籍。这本书通过大量案例和实践代码详尽的阐述了如何使用Cypress来高效实施前端自动化测试,是毫无疑问的市场第一书。 第二,这本书技术新颖,方案独到,完善的解决了前端自动化实施过程中的诸多痛点,也因此吸引了很多业界著名的图书作者,企业创始人,一线开发经理前来推荐并不吝赞美。这本书是我所编辑书中推荐者最多的一本书。 那为什么大家如此关注Cypress?Cypress 作为提升企业交付速度,提高测试效率的抓手,一站式地解决了企业和技术人员面临的问题。 一方面,在微服务,DevOps,敏捷开发大行其道的今天,企业需要高频,快速的高质量交付产品,因此对能够实现测试流水线,搭建Mock Server,编写普适于UI自动化,接口自动化测试框架的测试专家趋之若鹜。 但业界这样的人才远远不够多,而且通常比较贵。 另一方面,个人往往需要数年的辛勤努力,不断实践才能掌握这些”核心”技术。 Cypress 的出现彻底解决了这个问题。Cypress天然支持UI自动化,接口自动化的无缝融合,并且自带Mock Server,拥有独特的测试流水线实现方式,且上手简单,搭配本书提供的脚手架框架代码,个人可以轻易搭建起企业级的前端自动化测试框架,实现个人价值*大化。 同时企业可以立刻拥有高质量的前端自动化测试解决方案,从而在激烈的市场竞争中保持技术领先。 海外越来越多的大公司——包括亚马逊(Amazon),美国航空航天局(NASA)都在使用Cypress并成绩斐然,国内很多技术驱动业务的公司也在跟进。不出意外的话,Cypress将会很快替代Selenium/WebDriver, 成为前端自动化测试领域的必要基础设施。 《前端自动化测试框架 ——Cypress从入门到精通》是一本介绍软件自动化测试框架搭建、使用及定制方面的技术书籍,更是一本端到端自动化测试(包括UI自动化测试,接口自动化测试)的专业指导书。 基于测试框架Cypress,本书内容由浅入深,覆盖了自动化测试的方方面面。包括目前流行的前端自动化测试工具基本介绍,Cypress测试框架的主要特点、性能比较,Cypress测试框架拆解、动态生成、动态挑选、动态执行,数据驱动等Cypress最佳实践,以及接口测试、Mock Server,API、Circle CI持续集成实践等等丰富的知识点,并附有详细实例。学习完本书,读者不仅能搭建一套覆盖UI自动化,接口自动化测试的测试框架,也能将此框架与DevOps流程集成在一起,实现测试效率的提升。 《前端自动化测试框架 ——Cypress从入门到精通》适合广大软件测试人员学习自动化测试技术,也可用于相关管理人员的自动化测试框架选型参考。
目录
部分 前端自动化测试框架准备篇
第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 Selenium/WebDriver 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与Selenium/WebDriver的比较 23
2.3.1 Selenium/WebDriver的原理 23
2.3.2 Cypress与Selenium/WebDriver比较 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 async/await不工作 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