网易UI自动化测试探索:Airtest+Poco

简介: 网易UI自动化测试探索:Airtest+Poco

网络异常,图片无法展示
|


1. 自动化测试



自动化测试的目的,就是为了“更快更好”地发现产品问题,有效提升产品质量。目前比较主流的自动化测试包含单元测试自动化、接口自动化和UI自动化。


相比接口自动化测试来说,UI自动化测试的成本要高很多,因为它直面的是终端界面,这个调整可能非常频繁,从而导致UI自动化测试脚本的维护成本增高。


然而,相对于拥有非常多大型游戏项目的网易游戏来说,UI自动化测试也是非常必要的。虽然界面有调整,但是大型项目的周期通常比较长,期间需要对很多功能进行频繁的回归测试,自动化就成了提高测试效率、降低工作成本的有效手段。


2. Airtest项目的发展历程



2014年,市面上还没有非常适用于游戏项目的自动化测试框架,于是,网易自研的AirtestProject就启动了。


AirtestProject主要包含Airtest和Poco两款UI自动化测试框架。在网易内部成功服务了数十个项目组之后,受邀在2018年的GDC大会上与谷歌联合对外发布。项目开源至今,已有数十万名开发者和上千家公司在使用。



3. Airtest项目想解决的痛点



AirtestProject主要想解决UI自动化测试的2个痛点,一个是平台通用性差的问题,另一个是上手门槛高的问题。


平台通用性差 ,是指一些测试框架不适用于所有平台产品的测试,包含Android、iOS和各种游戏引擎等;网易自研的Airtest和Poco都是跨平台的测试框架,Airtest利用图像识别原理可以做到 平台无关 ,Poco支持原生且与 引擎无关


上手门槛高 ,是指一些测试框架需要搭建复杂的测试环境,测试人员还需要有一定的代码编程能力,并且阅读非常详细的文档才能够上手。而Airtest和Poco的专用编辑器AirtestIDE 提供脚本录制与回放功能 ,测试人员无需自己写代码也可以一键录制和运行自动化脚本,极大地降低了自动化测试脚本编写的门槛。


4. Airtest项目的详细介绍



Airtest项目主要包含2款自动化测试框架,和一个专用的编辑器AirtestIDE:


网络异常,图片无法展示
|


1)基于图像识别的Airtest自动化测试框架


基于图像识别原理的Airtest自动化测试框架,脚本所见即所得,常见的点击、滑动、等待出现、断言等操作,都可以通过截图脚本实现,测试小白也可以秒懂。


另外Airtest框架兼容各种环境,并且无需嵌入代码,就可以适用于全平台,能够帮助项目快速实现自动化。


网络异常,图片无法展示
|


2)基于控件识别的Poco自动化测试框架


基于控件识别原理的Poco自动化测试框架,可以精确识别到界面上的每一个UI控件,准确定位;并且能实时获取控件的详细属性,方便操作对控件进行点击、滑动等操作。


另外,项目界面迭代,对原有Poco脚本的影响非常小,因为页面的上控件改动是比较少的,所以测试人员无需消耗过多精力维护Poco脚本。


网络异常,图片无法展示
|


3)专用编辑器AirtestIDE


为了降低自动化脚本的编写门槛,我们还开发了Airtest和Poco框架的配套编辑器,可以帮助我们轻松连接各个平台的设备,并且支持一键录制与回放自动化测试脚本:


网络异常,图片无法展示
|


它提供的主要功能有:


① 连接各种平台的设备


在AirtestIDE的设备连接窗口,支持连接Android、iOS设备和Windows窗口,并且可以实时查看设备画面和操作设备。


② 一键录制与回放脚本


AirtestIDE支持一键录制Airtest和Poco脚本、一键运行脚本(回放)和一键查看测试报告等功能。


③ 简单拖拽就可以完成截图脚本


点击Airtest辅助窗的API快捷功能,即可通过简单的点击、拖拽完成我们的Airtest截图脚本。


④ 实时查看设备的控件树


我们可在Poco辅助窗内查看设备当前的控件树,并且随着我们对设备画面的操作,辅助窗内的控件树也会实时刷新的。目前已经支持查看Android、iOS原生应用的控件树,以及unity、cocos等多种游戏引擎渲染应用的控件树,后续我们还将支持查看Windows和Mac桌面应用的控件树信息。


5. AirtestIDE录制回放功能演示



这里我们使用AirtestIDE连接各个平台的设备来演示一些简单的脚本录制或者简单自动化脚本运行的情况:


1)Android平台


网络异常,图片无法展示
|


2)iOS平台


网络异常,图片无法展示
|


3)Windows应用/桌面


网络异常,图片无法展示
|


4)chrome浏览器(Web)


网络异常,图片无法展示
|


5)游戏应用(Android)


网络异常,图片无法展示
|


相关文章
|
18天前
|
前端开发 JavaScript 测试技术
前端自动化测试
前端自动化测试是通过使用工具和脚本自动执行测试用例的过程,旨在提高测试效率、减少人为错误,并确保Web应用的功能在不同环境和设备上的一致性与稳定性。
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
95 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
16天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
24天前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性
确保自动化安全测试的全面性和准确性,需集成多种工具(如SAST、DAST、IAST、SCA),编写自动化测试脚本,融入CI/CD流程,定期更新测试用例和工具,使用真实数据,持续维护代码,模拟攻击场景,运用机器学习,采用智能测试平台,并结合手动测试。这些策略有助于及时发现并修复安全问题,提升软件安全性。
|
1月前
|
安全 前端开发 测试技术
如何选择合适的自动化安全测试工具
选择合适的自动化安全测试工具需考虑多个因素,包括项目需求、测试目标、系统类型和技术栈,工具的功能特性、市场评价、成本和许可,以及集成性、误报率、社区支持、易用性和安全性。综合评估这些因素,可确保所选工具满足项目需求和团队能力。
|
1月前
|
机器学习/深度学习 SQL 安全
如何确保自动化安全测试的全面性和准确性?
如何确保自动化安全测试的全面性和准确性?
|
2月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
114 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
263 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
68 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
1月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
57 2