5分钟上手自动化测试——Airtest+Poco快速上手

 

版权声明:该文章为AirtestProject原创文章;容许转载,但转载必须注明“转载”并保留原连接html

前言

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

简介

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

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

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


![Image of IDE Overview](http://airtest.netease.com/tutorial/Overview.png)git

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

安装

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

链接设备

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](https://github.com/AirtestProject/Airtest)框架
  • 基于UI控件搜索的[Poco](https://github.com/AirtestProject/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台手机上进行兼容性测试。

相关文章
相关标签/搜索