一篇文章带你快速上手Airtest

本文涉及的产品
图像搜索,任选一个服务类型 1个月
简介: 一篇文章带你快速上手Airtest

前言



本文档将演示使用AirtestProject专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚本的全流程。强烈建议新手从本文档开始阅读,并使用AirtestIDE上手脚本编写。


简介



AirtestIDE 是一个跨平台的UI自动化测试编辑器,适用于游戏和App。


  • 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程
  • 支持基于图像识别的Airtest框架,适用于所有Android/iOS/Windows应用
  • 支持基于UI控件搜索的Poco框架,适用于Unity3d,Cocos2d与Android/iOS App等多种平台
  • 能够运行在Windows和MacOS上


访问官网通过视频查看更多特性。



通过本教程,你将学会如何上手自动化测试(或者写点脚本来自动玩游戏)。相信我,这个过程会非常愉快~


安装



目前AirtestIDE提供了Windows和Mac两个版本的客户端,请从官网下载,解压即用。


连接设备



AirtestIDE目前支持测试Android/Windows/iOS上的应用,其他更多平台的支持正在开发中。


无论是Android/iOS手机,还是Windows窗口,在Airtest中都将它视为一个设备,接下来我们将演示如何连接一个设备


连接Android手机


通过ADB连接你的电脑和Android手机,即可开始调试Android应用。ADB是Google官方提供的Android调试工具。AirtestIDE依赖ADB与安卓设备进行通信。


打开AirtestIDE,按照以下步骤进行连接:


  1. 打开手机设置-开发者选项-USB调试开关,参考安卓官方文档
  2. 在AirtestIDE设备面板中点击refresh ADB按钮,查看连接上的设备
  3. 如果没有显示出设备,试试restart ADB,如果还不行,参考FAQ文档进行问题排查
  4. 能够成功看到设备后,点击对应设备的Connect按钮,进行初始化



手机连接成功后,即可在AirtestIDE中看到手机屏幕的镜像显示,并进行实时操作。


如果手机连接失败,请先参考FAQ文档进行问题排查。若依然不成功,请将手机型号和AirtestIDE后台报错提交到Github Issue,开发人员会尽快修复。由于Android手机的碎片化问题严重,我们非常感谢您的反馈可以帮助这个项目做的更好。


连接Windows窗口


对于Windows桌面程序的测试,AirtestIDE可以将被测窗口嵌入,方便脚本录制和调试。


  • 在AirtestIDE设备面板中点击Windows-框选游戏窗口按钮
  • 将鼠标移动到被测程序的窗口上,会显示绿色边框,将对应的窗口框出
  • 点击左键即可将对应的窗口嵌入到AirtestIDE中


如果上述方法不能正确找到被测程序的窗口,你还可以使用备用嵌入方法


连接iOS手机


要连接一台iOS手机,你需要先准备好一台安装了Xcode的Mac电脑,连接方法参考文档


录制自动化脚本



在连上设备后,我们可以开始录制自动化测试脚本了,在接下来的内容中,我们将会使用一台Android设备上的一款Unity游戏应用,给大家演示如何录制脚本。


模拟输入


让我们先从最常用的模拟点击开始吧,模拟点击的意思就是,模仿你的操作去点击设备上的某个指定位置。


基于图像识别


目前我们支持通过图像识别的方式,找到你想要点击的位置并进行操作,这是基于Airtest这个框架实现的。


我们可以先看看如何自动录制脚本:点击AirtestIDE左侧的Airtest辅助窗上的录制按钮,然后随着你在设备窗口上操作手机,代码会自动生成在代码窗口中。



马上来验证一下,点击运行按钮运行你的第一个自动化脚本吧!


如果你觉得自动录制生成的图标不够精确,还可以点击Airtest辅助窗上的touch按钮,然后在设备窗口上框选精确的图标,也可以自动生成一条touch语句。



类似的模拟输入操作还有滑动:点击swipe按钮,在设备窗口上框选精确的图标作为滑动起点,然后点击滑动终点位置,即会自动生成一个swipe语句。


其他模拟输入的API包括:


  • text: 文字输入
  • keyevent: 按键输入,包括(HOME/BACK/MENU等)
  • sleep: 等待
  • snapshot: 截屏


基于UI控件


如果你发现图像识别不够精确,还可以使用基于UI控件搜索的方式进行自动化测试,与刚才的Airtest不同,这是Poco这个框架实现的功能。


目前Poco直接支持Unity3d、Cocos2d、白鹭引擎等多种游戏引擎,以及Android/iOS原生App。


如果是Android/iOS原生应用,是即插即用的,无需接入SDK。但由于游戏引擎使用OpenGL等图形接口直接渲染,而没有使用Android原生的UI系统,我们需要与游戏的Runtime进行通信获取整个UI结构。


我们提供了非常方便的SDK接入方法,点这里查阅目前支持的平台列表,以及如何为你的项目接入Poco。


如果你的项目使用的引擎或平台不在文档中,我们同样支持自行扩展SDK


实际上在网易游戏内部,我们就是用这种方式支持了Messiah/NeoX/梦幻等多个自研引擎。


接入完成后我们即可开始。手机启动游戏,在AirtestIDE中的Poco辅助窗切换模式至对应引擎类型,即可看到整个UI结构。



点击录制按钮,然后随着你的鼠标操作,会自动生成Poco语句到脚本编辑框中。



同样,你也可以通过UI树形结构更精确的检视UI控件,双击节点自动生成Poco语句,或者自行选择更好的写法。


自动录制出的语句不一定能够适应所有场景,采用更合理的选择器编写代码,通常会增强整个自动化脚本的健壮性和可读性,这是门学问



录制完脚本后记得运行试试效果。


对于Android/iOS的原生应用来说,不需要接入SDK即可使用,例如在连上Android手机后,将Poco辅助窗的模式切换至Android,能可以看到整个UI树形结构。



框架信息


上述两种UI识别方式,分别是基于两个框架:


  • 基于图像识别的Airtest框架
  • 基于UI控件搜索的Poco框架


这两个框架都是由我们团队开发的Python第三方库,在实际项目使用经验中,我们发现两者互相配合会得到最好的效果。在脚本编写的过程中,我们往往也需要查阅它们的项目API文档。


使用Python语法


整个AirtestIDE中录制和运行的代码都是基于Python语言。Python语法简洁而强大,第三库和工具也非常多。


对于新手,Python上手非常容易,学会基本语法即可写出自动化脚本中所需的逻辑语句。


touch("开卡包.png")
if exists("奖励面板.png"):
  for i in range(5):
    Poco("奖励-%s" % i).click()
复制代码


对于老手,你可以在AirtestIDE中使用各种第三方库来使你的自动化脚本更加强大,通过添加PYTHONPATH设置,可以使用本地的python.exe来运行你的脚本。


除了辅助窗口里面提供的语句,更多的API文档,可以查看AirtestPoco的仓库。


断言


到这里,我们已经有各种模拟输入方法,配合逻辑控制语句让手机动起来。自动化测试中还有很重要的一个步骤:结果验证,那么我们来看看怎样声明断言。


验证UI界面


录制方法与模拟输入类似


  • assert_exists:断言图片存在
  • assert_not_exists:断言图片不存在



验证数值


通过Poco获取属性值,手写代码进行断言


  • assert_equal:断言相等
  • assert_not_equal:断言不等


例如


# ... 模拟输入并获得20分之后
value = Poco("分数按钮").attr("num")
assert_equal(value, 20, "获到20分")
复制代码


查看测试报告



脚本运行完毕后,点击查看报告按钮(快捷键Ctrl+L),会使用默认浏览器打开结果报告页面。报告中将展示出每一个步骤的内容和实际执行过程的截图、运行结果,方便查看步骤是否执行成功。



命令行接口



现在,你已经学会自动化测试了。接下来呢,你可以使用命令行接口将自动化测试与持续集成结合起来。持续集成是什么?


在AirtestIDE运行脚本时,LOG窗口中会打印运行命令。



你可以在不开启IDE的情况下,在命令行中使用那条命令来启动测试脚本,例如:


"D:\迅雷下载\AirtestIDE\AirtestIDE" runner "D:\AirtestIDE_2018-01-24_83\untitled.air"  --device Android://127.0.0.1:5037/F8UDU16409004135 --log "C:\Users\gzliuxin\AppData\Local\Temp\AirtestIDE\scripts\cdfc40e8c297b6ad88e09de64d8bafa3"
复制代码


使用AirtestIDE你可以轻松的录制出测试脚本,保存为.air脚本。请注意一个.air脚本中不要包含太多内容,用良好的脚本命名和目录结构来组织你的脚本,覆盖所有测试点。

你还可以在不同电脑上针对不同设备运行测试, 这时候你就需要用命令行运行 .air 脚本 。 对于多平台发布的产品,灵活使用跨平台API和命令行,还可以让同一套测试脚本运行在Android和Windows上进行测试。


在网易游戏内部,我们的大型游戏通常会有数百个测试脚本,覆盖常用的玩法测试。每周,这数百个脚本会分别运行在200台手机上进行兼容性测试。

相关文章
|
SQL 存储 分布式计算
Hive数据仓库设计与优化策略:面试经验与必备知识点解析
本文深入探讨了Hive数据仓库设计原则(分区、分桶、存储格式选择)与优化策略(SQL优化、内置优化器、统计信息、配置参数调整),并分享了面试经验及常见问题,如Hive与RDBMS的区别、实际项目应用和与其他组件的集成。通过代码样例,帮助读者掌握Hive核心技术,为面试做好充分准备。
1181 0
|
缓存 运维 容灾
入行5年,谈谈我在阿里做测试开发的经验
作者在阿里一直从事测试开发相关工作,这几年学习很多、收获很多,作者希望给还在该方向摸爬滚打的同学一些启发和方向。
|
Go 开发工具 C语言
flutter项目打包.exe文件发布windows版
目录 发布windows版 1.为现有的 Flutter 应用程序添加桌面支持 2..创建main_desktop.dart文件 3.hover安装和环境配置 4.初始化,并打包 坑1
1716 0
flutter项目打包.exe文件发布windows版
|
11月前
|
运维 Prometheus 监控
持续监控和反馈:优化反馈机制与改进流程
持续监控和反馈:优化反馈机制与改进流程
631 1
|
SQL 缓存 数据处理
从新手到专家:UDF for Python 使用全指南
在此前发布的 TDengine 3.0.4.0 版本中,我们引入的一个重磅新功能是“使用 Python 语言编写用户自定义函数(UDF)”。这一突破性功能不仅为数据库操作提供了前所未有的灵活性,而且极大地降低了技术门槛——即使是编程初学者也能使用 Python 语言轻松地定制和操纵数据库。这些自定义函数可以像内置函数一样在 SQL 语句中灵活使用,实现个性化数据处理。本篇文章中将详细介绍如何有效利用这一功能,开启你的数据库自定义之旅。
205 2
|
资源调度 监控 Go
|
安全 算法 Java
Java中的数据加密与安全传输
Java中的数据加密与安全传输
|
存储 Linux 数据库连接
【专栏】掌握 `envsubst` 可提升在 Linux 系统中处理环境变量的效率。
【4月更文挑战第28天】`envsubst` 是 Linux 中用于替换文本中环境变量值的工具。它遍历文本,将环境变量替换为实际值。要使用它,首先可能需要安装相应软件包。基本用法是 `envsubst < input.txt > output.txt`,将输入文件的环境变量替换后输出到输出文件。命令还支持选项如 `-e` 和 `-d`。实例包括:配置文件替换、脚本执行中的环境变量替换和动态生成文件。掌握 `envsubst` 可提升在 Linux 系统中处理环境变量的效率。
677 0
聊聊自动化测试的度量指标
在聊自动化测试度量指标前,有必要回到做自动化的初衷上,就是为什么要做自动化测试,要解决什么问题。
|
XML Java 关系型数据库
【SpringBoot + Mybatis系列】自定义类型转换 TypeHandler| 8月更文挑战
在使用 mybatis 进行 db 操作的时候,我们经常会干的一件事情就是将 db 中字段映射到 java bean,通常我们使用ResultMap来实现映射,通过这个标签可以指定两者的绑定关系,那么如果 java bean 中的字段类型与 db 中的不一样,应该怎么处理呢?
1633 0
【SpringBoot + Mybatis系列】自定义类型转换 TypeHandler| 8月更文挑战