新書推薦:
《
战国竹书复原综论
》
售價:NT$
449.0
《
走出内心的深渊:快节奏人群心理疾病与健康指南(原书第3版)
》
售價:NT$
352.0
《
如何成为一家千亿公司
》
售價:NT$
347.0
《
趋势跟踪: 汤姆·巴索的交易谋略
》
售價:NT$
352.0
《
滚滚红尘(《滚滚红尘》电影原著)
》
售價:NT$
250.0
《
罗马之变(法语直译,再现罗马共和国走向罗马帝国的辉煌历史)
》
售價:NT$
500.0
《
自然之争:1600年以来苏格兰和英格兰北部地区的环境史(新史学译丛)
》
售價:NT$
485.0
《
硝烟下的博弈:工业革命与中西方战争
》
售價:NT$
398.0
|
編輯推薦: |
★基于GitHub上千Star开源自动化测试项目
★深入探讨自动化测试框架的设计与实现
★包含 Web UI 、App UI、 HTTP接口三大自动化测试领域
★探索AI 在自动化测试方面的前沿应用
★包含设计模式,平台化实现,涵盖自动化测试全领域
★包含30多个Python测试框架、库、工具的介绍和应用
★本书有助于你构建完整的自动化技术体系
★助你进入AI智能测试新领域
|
內容簡介: |
本书分为13章。第1章介绍了自动化测试框架设计基础。第2~7章主要介绍单元测试框架的扩展,包括自动化测试报告设计、数据驱动设计、数据库操作封装设计、随机测试数据设计、命令行工具设计和测试框架扩展功能设计。第8~11章主要介绍自动化测试库和设计模式,包括Web UI自动化测试设计、App UI自动化测试设计、HTTP接口自动化测试设计和自动化测试设计模式。第12章介绍了自动化测试平台化,以及Seldom框架如何为平台化提供支持。第13章介绍了自动化测试的AI探索。本书适合自动化测试、软件开发和质量保证领域的开发者,以及各大院校计算机科学和软件工程专业的学生阅读,也适合有一定经验的开发人员参考使用。
|
關於作者: |
虫师,2011年6月开始在博客园持续分享测试技术和经验,在自动化测试、性能测试方面有着丰富实战经验,另外,对Web开发技术也有一定的积累。前后担任高级测试工程师、测试开发工程师,以及测试Leader等职位。
|
目錄:
|
第1章 自动化测试框架设计基础 1
1.1 相关概念对比 1
1.1.1 库与框架 1
1.1.2 工具与框架 3
1.1.3 项目与框架 4
1.2 框架设计基础 5
1.2.1 框架是独立的 5
1.2.2 框架仅实现通用的功能 5
1.2.3 框架应该有清晰的定位 6
1.3 单元测试框架 7
1.3.1 测试框架的基本功能 7
1.3.2 常见的单元测试框架 7
1.4 unittest扩展 12
1.4.1 实现unittest扩展 12
1.4.2 使用unittest扩展 14
1.5 pytest扩展 15
1.5.1 pytest扩展方式 16
1.5.2 实现pytest扩展 18
1.5.3 使用pytest扩展 20
1.6 构建Python包 21
1.6.1 Poetry 21
1.6.2 PyPI仓库 24
第2章 自动化测试报告设计 25
2.1 实现jsonrunner 25
2.1.1 重写TestResult类 26
2.1.2 实现JSONTestRunner类 27
2.1.3 编写测试用例 30
2.2 HTML主题模板 33
2.3 Jinja模板引擎 37
2.3.1 Jinja2的基础使用方法 37
2.3.2 在Python中使用Jinja2 38
2.4 基于unittest生成HTML测试报告 40
2.4.1 修改runner.py测试运行器 41
2.4.2 修改HTML模板 43
2.4.3 编写测试用例 44
第3章 数据驱动设计 46
3.1 unittest的数据驱动扩展 46
3.1.1 parameterized库 46
3.1.2 DDT库 48
3.2 参数化装饰器 51
3.2.1 实现data装饰器 52
3.2.2 实现dict数据格式支持 54
3.3 参数化数据文件 56
3.3.1 JSON数据转换 57
3.3.2 YAML数据转换 59
3.3.3 CSV数据转换 60
3.3.4 Excel数据转换 62
3.3.5 实现file_data装饰器 64
第4章 数据库操作封装设计 66
4.1 操作数据库技术 66
4.1.1 数据库驱动 66
4.1.2 ORM 67
4.2 数据库操作封装 69
4.2.1 封装执行和查询 69
4.2.2 封装增查改删 72
第5章 随机测试数据设计 78
5.1 测试工具介绍 78
5.1.1 Faker 78
5.1.2 Hypothesis库 80
5.2 随机测试数据实战 82
5.2.1 随机生成手机号 82
5.2.2 随机生成中文姓名 84
5.2.3 获取在线时间 85
第6章 命令行工具设计 88
6.1 用Python实现命令行工具 88
6.1.1 argv的使用 88
6.1.2 argparse的使用 89
6.1.3 click的用法 90
6.2 命令行工具实战 91
6.2.1 实现自动化测试项目脚手架 92
6.2.2 实现性能工具 94
6.2.3 生成命令行工具 97
第7章 测试框架扩展功能设计 100
7.1 测试用例依赖 100
7.1.1 依赖测试用例结果 100
7.1.2 依赖测试条件 103
7.2 测试用例分类标签 104
7.2.1 实现分类标签 105
7.2.2 使用分类标签 107
7.3 使用缓存 109
7.3.1 Redis的使用 109
7.3.2 LRU Cache 112
7.3.3 磁盘文件模拟Cache 113
7.4 实现日志 117
7.4.1 logging模块 118
7.4.2 Loguru库 121
7.5 自定义异常 123
第8章 Web UI自动化测试设计 126
8.1 主流Web测试库 126
8.1.1 Selenium 126
8.1.2 Cypress 127
8.1.3 Playwright 130
8.2 Selenium API的二次开发 132
8.2.1 封装:重命名方法 133
8.2.2 封装:元素定位和动作整合 133
8.2.3 封装:独立每个函数 135
8.2.4 封装:链式调用 136
8.3 Selenium的断言设计 137
8.3.1 单元测试框架提供的通用断言 138
8.3.2 封装Selenium断言方法 139
8.4 Selenium环境管理 143
8.4.1 Selenium Manager 143
8.4.2 Docker-Selenium 144
第9章 App UI自动化测试设计 147
9.1 App移动自动化测试工具介绍 147
9.1.1 Android测试工具 147
9.1.2 iOS测试工具 148
9.1.3 Appium 149
9.1.4 Airtest Project 150
9.1.5 Open ATX 150
9.2 Appium基础 151
9.2.1 Appium的安装 151
9.2.2 Appium的使用 153
9.3 Appium API封装 155
9.3.1 Switch类 155
9.3.2 Action类 158
9.3.3 FindByText类 161
9.3.4 KeyEvent类 165
9.4 Appium图像与文字识别 167
9.4.1 images插件 168
9.4.2 Appium OCR 插件 173
第10章 HTTP接口自动化测试设计 179
10.1 HTTP客户端库 179
10.1.1 requests 179
10.1.2 HTTPX 180
10.1.3 aiohttp 180
10.2 HTTP请求方法集成日志 183
10.3 HTTP接口测试断言设计 189
10.3.1 断言基础代码 189
10.3.2 assertPath() 192
10.3.3 assertJSON() 196
10.3.4 assertSchema() 201
10.4 实用功能封装 206
10.4.1 HTTP接口检查装饰器 206
10.4.2 方法依赖装饰器 210
10.4.3 生成curl命令 215
10.5 WebSocket封装与测试 219
10.5.1 WebSocket封装 219
10.5.2 WebSocket测试 220
第11章 自动化测试设计模式 223
11.1 设计模式与开发策略 223
11.1.1 Page Object模式 223
11.1.2 Bot模式 224
11.2 基于Page Object模式的相关库 226
11.2.1 selenium-page-factory 226
11.2.2 poium的基本使用 228
11.2.3 poium的设计原理 231
11.3 API Object模式 233
11.3.1 AOM的设计原理 233
11.3.2 AOM使用示例 235
第12章 自动化测试平台化 239
12.1 自动化测试平台化的基本信息 239
12.1.1 性能测试 239
12.1.2 HTTP接口自动化测试 240
12.1.3 Web UI自动化测试 241
12.1.4 App UI自动化测试 242
12.1.5 自动化测试平台化的优缺点 243
12.2 测试框架与测试平台的整合方案 244
12.2.1 unittest解析用例 245
12.2.2 对测试用例的收集与运行 246
12.3 SeldomQA项目 253
12.3.1 Seldom框架 254
12.3.2 seldom-platform 258
第13章 自动化测试的AI探索 263
13.1 集成AI技术的自动化测试平台 263
13.1.1 基于视觉AI技术的自动化检测 263
13.1.2 基于AI的自动化测试运行 270
13.2 AIGC在自动化测试中的应用 278
13.2.1 AI技术辅助生成自动化测试用例 278
13.2.2 基于LLM的代理框架 281
|
內容試閱:
|
大约在2015年的时候,我负责公司的一个社区论坛项目的UI自动化测试工作。在使用Selenium编写UI自动化测试用例的过程中,我逐渐发现Selenium写起来有诸多不便。于是,尝试对Selenium的API进行二次封装,使其集成HTMLTestRunner.py报告,又封装了unittest单元测试框架的运行器。最终效果是可以比较方便地编写自动化测试用例。之后,我把项目放到了GitHub上,命名为pyse,并在GitHub上断断续续地做着一些更新和维护。整体来看,这是一个比较简单的自动化项目。
2019年,我对自动化相关技术有了更深刻的理解,也许是因为有更多的空间时间,我重新关注到GitHub上的这个项目,并开始在业余时间对其进行迭代更新。由于“pyse”这个名字在PyPI仓库中已被其他项目占用,于是我决定将项目更名为“Seldom”,并成功将其提交到PyPI仓库。现在,用户可以非常方便地通过pip命令安装和使用该项目。
此后,Seldom进入了快速迭代阶段。截至本书完稿时,Seldom的大版本已更新至3.x。它支持Web UI测试、API测试和App UI测试等,已经发展成为一个全功能的自动化测试框架。此外,Seldom提供了对平台化的支持。Seldom的社群活跃度很高,社群中几乎每天都有问题讨论。通过社群,我了解到Seldom已经在许多公司落地应用。
在开发Seldom的过程中,我积累了大量经验。在项目设计层面,我考虑了新功能的引入方式,并控制版本迭代以保持向下兼容;在自动化测试框架设计层面,我考虑了如何封装不同库的API,以便在满足业务需求的同时,提供更便捷、通用的功能。
我一直未将自己积累的自动化测试框架设计经验编写成书,原因有两方面:一方面,工作比较繁忙;另一方面,空闲时间我都在维护Seldom项目。一旦收到社群提出的需求、bug,或者我自己产生了一些新想法,我就会投入时间进行开发,它几乎已经成为我的“第二工作”。因此,写书的计划一直被搁置,直到2023年我才断断续续地开始动笔。成书后,我又花费了大量时间改稿。这导致整个写作周期非常长。当然,这也让我有更多的时间思考书中的内容,只保留了我认为最新、最有价值的部分。
最后,由于水平有限,书中难免有错漏之处。如果发现了错误,希望你能将错误反馈给出版社或我本人,我将感激不尽。再次感谢我的家人,正是因为他们无私的支持和默默的付出,我才能有更多的时间学习和维护开源项目;感谢编辑安娜,没有她的帮助,本书无法顺利出版;感谢拿到这本书的读者,正是你们的支持和鼓励,我才有动力继续编写新书。
虫师
2024年10月
|
|