Airtest Project 是网易出品的一款跨平台的 UI 自动化测试框架。通过阅读其官方网站 http://airtest.netease.com 的资料,对该框架的基本功能和特点做个介绍
跨平台
Airtest Project 一大特色是跨平台,支持以下应用的 UI 自动化测试
在游戏应用方面,支持以下引擎开发的 app
- Unity3d
- cocos2dx-js
- cocos2dx-lua

运行环境
Airtest Project 提供一套能够编写,录制,回放脚本的编辑器 AirtestIDE,目前该 IDE 已提供如下操作系统的客户端
脚本编写语言
测试脚本编写语言为 Python,兼容 Python 2.7 和 Python 3.3-3.6
核心模块
1. Poco 用于控件识别
https://github.com/AirtestProject/Poco
Poco 框架用于对 Unity3D,cocos2dx-*,Android 原生 app,iOS 原生 app 的控件树进行解析查找,来定位 UI
例如对 Android 原生 app 的 控件定位

2. Airtest 用于图像识别
https://github.com/AirtestProject/Airtest
Airtest 框架用于对 Android,iOS,Windows,Unity,Cocos2dx,微信小程序应用界面的图像进行识别,实现界面查找及定位
例如对 app 中某个图像进行定位或查找

3. 自定义测试
http://airtest.netease.com/docs/en/1_online_help/advanced_features.html
Airtest Project 可根据需要扩展录制的功能,例如
- 设置脚本执行中的自定义参数
- 添加自定义功能,或替换默认功能
- 在脚本运行前,过程中或运行结束后执行类似 setUp, tearDown 的操作
与设备进行连接
在 AirtestIDE 中针对 Android 设备的连接比较容易,通过开启设备的 USB 调试即可快速连接
但针对 iOS 设备的连接需要进行一些配置,下面演练时针对 iPhone 进行
- iOS-Tagent
clone
1
| git clone https://github.com/AirtestProject/iOS-Tagent.git
|
启动 WebDriverAgent.xcodeproj 时注意按照下面的步骤设置一下开发者,官方的配置没有介绍这一点,未配置的情况下会导致 build failed
Step 1: 修改 Bundle identifier
将下图第 4 步的值修改为跟原值不一样,例如我这里在开头加了一个 my.

Step 2: 修改 Team
在 Step 1 的基础上,设置本地的 Apple ID (如果没有配置的话需要自行先添加下)

Step 3: 修改 info Bundle identifier
将以下图中第 2 步的值改为与 Step 1 中完全一致

经过以上配置的修改,再执行 Xcode 的 Product - Test 就能编译成功
如果经过以上操作仍然不成功,则参考我之前的文章:appium ios 的配置。AirTest 的官方文档介绍不够全面,而 WebDriverAgent 依赖的第三方库较多,在 appium 中也有应用到,我在此文中有更详细的介绍
另外,如果运行起来之后遇到如下报错 Test Failed,根据提示在通用-设备管理中对 Apple Development 进行信任操作

写在后面,与逐鹿测试平台的对比
Airtest Project 从覆盖面上看比较强大,得益于图像方式的控件识别,能够更好的应用在游戏及无法使用控件方式定位 UI 的场景,这一块也是我们逐鹿平台今后扩展时可以借鉴的地方
另外,由于使用 python 编写脚本,能支持更多的第三方库,所以其扩展性较强,适合针对特定的需求自主开发脚本内容
除了覆盖的应用范围没有那么广以外,我们自主开发的逐鹿自动化测试平台在针对 Android 测试方面,已经涵盖了上述定位控件和图像识别的功能,并且从功能上来比较,更适用于车机的测试,比如多指手势,可编程电源控制,USB 开关控制,CAN/LIN 信号收发等
相比较而言,Airtest Project 一开始的定位则是更广泛的平台以及更便捷的脚本编写体验
而逐鹿测试平台则深度定位于车机,支持更多车机测试的需求