自动化测试简述
什么是自动化测试
- 软件测试活动中一个重要的分支和组成部分
- 利用工具或脚本达到测试目的,把以人为驱动的测试行为转化为机器执行的一种过程,是一种没有人工或者极少人工参与的软件测试活动
- 自动化测试的主要目标是提高测试效率,降低项目成本,而不是完全取消手工测试
为什么要进行自动化测试
- 方便进行回归测试,当软件的版本发布比较频繁的时候,自动化的效果很明显
- 自动处理原本烦琐、重复的任务,提升效率,提高测试的准确性和测试人员的积极性
- 具有复用性和一致性,可以在不同的版本上重复运行,保障测试内容的一致性 P
- 发现更多隐藏问题,手工测试无法验证系统的稳定性、可靠性等,需要通过工具等自动化手段,对系统进行压力测试、稳定性测试等
自动化测试适用场景
- 适用场景
- 高风险-关键业务测试案例
- 重复执行的测试用例
- 非常繁琐或难以手动执行的测试用例
- 耗时的测试用例
- 不适用场景
- 新设计的测试用例,并且至少一次不手动执行
- 需求经常变化的测试用例
- 临时执行的测试用例
自动化测试分类
- 从软件开发周期的角度分类

- 测试金字塔自下而上依次是单元测试、接口测试、UI 测试。越高层影响的范围越大,成本越高
- 单元自动化测试:自动化的完成对代码中的类和方法进行测试,主要关注代码实现细节及业务逻辑等方面
- 接口自动化测试:测试系统组件间接口的请求和返回,接口测试稳定性高,更适合开展自动化。可以进行的测试工作有接口测试、接口性能测试等
- UI 自动化测试:对图形化界面进行流程和功能等方面进行测试
- Web 自动化测试:模拟人操作对应系统,验证功能等方面是否正常,能大大提升测试效率,主要应用在一些重复操作的测试中
- App 自动化测试:通过工具或者代码命令的方式模拟人工操作,验证功能、性能、兼容性、易用性等方面
- 在《Google 测试之道》一书,对于 Google 产品,70%的投入为单元测试,20%为集成、接口测试,10%为 UI 层的自动化测试
- 从测试目的的角度分类
- 连接和其他比较稳定而不经常发生变化的元素
- 性能自动化测试:依托自动化平台自动的执行性能测试、收集测试结果,并分析测试结果的一种接近无人值守的性能测试,具有以下特性:
- 对脚本创建和提供类库和其他模块支撑
- 可以设定自动化任务(比如每天根据特定的场景执行一轮性能测试)
- 自动收集测试结果并存储
- 事中监控(比如场景执行过程中的异常错误自动预警邮件功能)
- 成熟的平台可以进行自动分析功能(比如哪些事物有问题、哪些资源消耗异常等)
- 安全自动化测试
自动化测试流程
- 选择测试工具
- 取决于被测应用程序所基于的技术。例如 Postman 不能用于 UI 自动化,只能适用于接口测试
- 确定自动化范围,可以参考以下方面
- 对业务很重要的功能
- 有大量数据的方案
- 跨应用程序的通用功能
- 技术可行性
- 业务组件的重用程度
- 测试用例的复杂性
- 能够使用相同的测试用例进行跨浏览器测试
- 规划,设计和开发
- 选择自动化工具
- 框架设计及其功能
- 自动化项目
- 自动化测试环境准备
- 脚本和执行的时间表
- 自动化测试的交付物
- 测试执行
- 输入测试数据,输出测试报告
- 维护
为什么选择自动化测试框架
- 保持测试的一致性
- 改善测试结构
- 最少使用代码
- 减少代码维护
- 提高可重用性
- 非技术测试人员可以参与代码
- 可以减少使用该工具的培训时间
如何挑选适合的自动化测试框架
- 相对快速和方便设置(或开箱即用的解决方案)
- 支持社区或开发者自己可以为其框架提供支持
- 有清晰而全面的文档
- 与其他工具充分集成
- 有一些很酷的功能,例如代码可重用性支持在多个平台和环境进行测试
常见的自动化测试工具分类
- UI 自动化测试
- Selenium
- WEB 自动化测试框架
- Selenium 是一个涵盖几种工具的生态系统,主要包括:Selenium WebDriver、Selenium IDE 和 Selenium Grid。
- Selenium 的核心是 WebDriver,这是一个编写指令集的接口,可以在许多浏览器中运行。
- Selenium 也成为了其他开源自动化测试工具比如 Katalon Studio,Watir,Protractor 和 Robot Framework 的核心框架。
- Selenium 的核心特性是跨平台和跨浏览器测试,支持多种测试语言(Python、Java、C#等),高度可调整的开源代码,并行运行测试等。
- Appium
- App 自动化测试框架
- Appium 是一个开源工具,用于在 iOS、Android 和 Windows 桌面平台上自动化测试原生、web 浏览器或者相混合的应用程序
- Appium 是“跨平台”的:它允许您使用相同的 API 针对多个平台(iOS、Android、Windows)编写测试。这允许在 iOS、Android 和 Windows 测试套件之间重用代码。
- Cypress
- WEB 自动化测试框架
- Cypress 是基于 web 的下一代前后端测试工具,基于 NodeJS 运行
- 与 Selenium 相比,Cypress 底层协议不采用 WebDriver,这使得它能够实现快速、简单、可靠的测试
- Cypress 支持端到端测试、集成测试、单元测试。
- Robot Framework
- UI 自动化测试集成框架
- Robot Framework 是一个通用的开源自动化框架。它实现了用于验收测试和验收测试驱动开发(ATDD)的关键字驱动方法
- Robot Framework 通过使用 Python 或 Java 等语言实现其他测试库,可以进一步扩展其测试功能,并几乎可以与任何其他工具集成,以创建强大而灵活的自动化解决方案,Selenium WebDriver 是 Robot Framework 中常用的外部库
- 可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。
- Airtest
- UI 自动化测试框架
- Airtest 是由网易游戏推出的 UI 自动化测试解决方案,包括 Airtest、Poco、AirtestIDE 等部分
- Airtest 是一个基于 Python 语言的、跨平台的、基于图像识别的 UI 自动化测试框架,适用于游戏和 App,支持平台有 Windows、Android 和 iOS
- Poco 是一款 基于 UI 控件识别 的自动化测试框架,目前支持 Android 原生、iOS 原生、Unity3D、cocos2dx、UE4 和 Egret 等平台
- Selenium
- 接口自动化测试
- Jemeter
- Apache JMeter 是一个 100%纯 Java 应用程序,旨在加载测试功能行为和度量性能。设计用于测试 Web 应用程序,还支持单元测试和有限的功能测试。
- 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。
- 有很多好的特性,比如动态报告、可移植性、强大的测试 IDE 等,并且支持不同类型的应用程序、协议、shell 脚本、Java 对象和数据库。
- Postman
- Postman 是一个用于构建和使用 API 的平台。简化了 API 生命周期的每个步骤,并简化了协作,因此您可以更快地创建更好的 API。
- Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的 HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers。
- SoapUI
- SoapUI 是一个非常流行的用于 SOAP Web 服务和 RESTful Web 服务的开源 API 测试自动化框架。
- 它还支持功能测试、性能测试、数据驱动测试和测试报告。
- Jemeter
- 单元自动化测试
- Junit
- TestNG
- unittest
- pytest
pytest: helps you write better programs — pytest documentation
- NUnit
- Junit
UI 自动化测试框架简单使用
Selenium
- 功能强大,支持多种语言实现
- IDE 支持录制操作,并导出为指定语言的脚本
WebDriver
- 使用语言编写自动化测试脚本
Selenium IDE
- 安装浏览器插件,并录制操作,导出为自动化脚本
- 浏览器安装
Selenium IDE插件 - 创建项目和测试用例
- 录制操作行为

- 可以对操作进行修改
- 可以导出为脚本
Airtest
- Web 自动化测试是魔改了 Selenium 库,不好用
- 亮点在于支持图像识别元素,低代码完成测试效果,对移动端支持比 Appium 好
Airtest Framework
- Airtest 是一个跨平台的、基于图像识别的 UI 自动化测试框架,适用于游戏和 App,支持平台有 Windows、Android 和 iOS
Poco
- Poco 是一款基于 UI 控件识别的自动化测试框架,目前支持 Android 原生、iOS 原生、Unity3D、cocos2dx、UE4 和 Egret 等平台,也可以在其他引擎中自行接入 poco-sdk 来使用
AirtestIDE
- AirtestIDE 是一款跨平台的 UI 自动化测试编辑器,内置了 Airtest 和 Poco 的相关插件功能,能够使用它快速简单地编写 Airtest 和 Poco 代码
Web 自动化测试
十三、Airtest-Selenium 做 Web 自动化测试 - Airtest Project Docs (netease.com)
详解 selenium-window 辅助功能 - Airtest Project Docs (netease.com)
注意:只支持 Chrome 浏览器,Chromium 内核的其他浏览器都不行!
安装
连接设备
- 可以连接浏览器或桌面

配置 Chrome 浏览器位置设置
配置 Chrome Driver
确定 Chrome 版本,浏览器地址栏输入
chrome://version/markdownGoogle Chrome: 107.0.5304.122 (正式版本) (64 位) (cohort: ByPass)下载对应的 Chrome Driver 版本
将新的
chromedriver放入 AirtestIDE 安装路径覆盖原始的chromedriver
录制测试脚本
运行脚本
查看报告
App 自动化测试
四、如何在 Android 手机上进行自动化测试(上) - Airtest Project Docs (netease.com)
- ADB 连接 Android 设备并自动安装相关软件

- 设备窗与 Poco 窗口均能看见对应 App 参数
- 录制操作
- 查看报告
- ADB 连接 Android 设备并自动安装相关软件
附件









