Airtest介绍与快速上手

AirtestProject项目简介

Airtest Project是一款由网易研发并开源的自动化测试框架,相比于其他的自动化测试框架,主要有如下两个优势

  • 大幅度降低自动化脚本的编写和维护成本        

Airtest Project希望能够通过一种所见即所得的方式完成脚本的录制,即使测试人员不会编程不懂脚本,也可以通过正常用户的点击拖拽等操作,自动完成脚本的录制,从而大幅度降低企业和项目的自动化维护成本。

  • 解决游戏测试的痛点        

 Airtest Project希望能够通过对游戏的不同引擎做支持,成为一个真正意义上的跨引擎跨平台的自动化测试平台。

AirtestProject是由网易游戏推出的一款自动化测试框架,项目构成如下:

Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS,开码和有API文档。

Poco:是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用,开码和有API文档。

AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写Airtest和Poco代码。

AirLab:真机自动化云测试平台,目前提供了TOP100手机兼容性测试、海外云真机兼容性测试等服务,请访问官网以了解更多。 私有化手机集群技术方案:从硬件到软件,提供了企业内部私有化手机集群的解决方案,欢迎了解。

可以看到,底层的主要测试框架主要是Airtest和Poco,二者的区别在于:

Airtest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。

Poco:基于UI控件搜索的自动化测试框架,其核心优势是除了对Android、iOS之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和H5应用。

支持平台

  • Android
  • iOS
  • Windows
  • Unity
  • Cocos2dx
  • 白鹭引擎
  • 微信小程序

快速上手

对于新手,我们非常建议使用 AirtestIDE 来帮助你编写自动化测试脚本。熟练上手 Airtest 和 poco 以后,如果有需要的话,则可以尝试脱离IDE来跑测试脚本,比如在本地命令行上运行,比如在pycharm上运行等等。            

 Airtest官方文档:https://airtest.doc.io.netease.com/

AirtestIDE

AirtestIDE 是一个跨平台的UI自动化测试编辑器,它是专为以上两个自动化测试框架量身打造的。所以我们非常建议新手可以从 AirtestIDE 开始学习 Airtest 和 poco 。

AirtestIDE 安装

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

官网下载地址:http://airtest.netease.com/

系统要求

  • 操作系统
  1. Windows
  2. MacOS X
  3. Linux
  • Python2.7 & Python3.3+

连接设备

无论是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中看到手机屏幕的镜像显示,并进行实时操作。

录制自动化脚本

一、基于图像识别      

 点击AirtestIDE左侧的Airtest辅助窗上的录制按钮,然后随着你在设备窗口上操作手机,代码会自动生成在代码窗口中。

支持以下常用API:

touch:点击输入

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结构。

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

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

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

使用Python语法

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

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

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

例子:使用这些API来编写一个自动化脚本,步骤如下:

  1. 通过ADB连接一台安卓手机
  2. 安装应用APK
  3. 运行应用并截图
  4. 模拟用户输入(点击、滑动、按键)
  5. 卸载应用

模拟输入,支持以下常用API:

  • touch:点击
  • swipe:滑动
  • text:文本输入
  • keyevent:按键输入,包括(HOME/BACK/MENU等)
  • snapshot:截图
  • wait:等待

声明断言,Airtest提供了以下断言方法:

  • assert_exists:断言图片存在
  • assert_not_exists:断言图片不存在
  • assert_equal:断言相等
  • assert_not_equa:断言不等

命令行接口

可以使用命令行接口将自动化测试与持续集成结合起来。

你可以在不开启IDE的情况下,在命令行中使用那条命令来启动测试脚本,例如: "D:迅雷下载AirtestIDEAirtestIDE" runner "D:AirtestIDE_2018-01-24_83untitled.air"  --device Android://127.0.0.1:5037/F8UDU16409004135 --log "C:UsersgzliuxinAppDataLocalTempAirtestIDEscriptscdfc40e8c297b6ad88e09de64d8bafa3"

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

查看测试报告

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

案例实操

完成过程请观看演示视频:

视频演示

总结

Airtest特性回顾

跨平台: Airtest可以在几乎所有平台上执行游戏和App的自动化。

一次编写,随处运行: Airtest提供了跨平台的API,囊括了应用安装、模拟输入以及断言等。由于使用图像识别技术来定位UI元素,因此无需嵌入任何代码即可对游戏和应用进行自动化操作。

可扩展性: 通过使用Airtest提供的命令行与python API接口,可以很轻松地在大规模设备集群上运行脚本。提供的HTML报告包含了详细操作步骤和截屏,能够迅速定位到失败点。同时,网易也提供了 Airlab 云测试平台服务。

AirtestIDE: AirtestIDE是一个强大的GUI工具,可以帮助你录制和调试测试脚本。 AirtestIDE提供了完整的自动化工作流程支持:录制脚本->真机回放->生成报告。

Airtest VS Appium

跨平台开源测试框架PK

参考文章

https://airtest.doc.io.netease.com/

https://testerhome.com/articles/23287

原文地址:https://www.cnblogs.com/haixianglan/p/13942908.html