Airtest Project - UI 自动化测试神器

Airtest Project 是网易开发的一款跨平台 UI 自动化测试框架( http://airtest.netease.com )。通过阅读该框架的整体介绍和使用说明,总结框架的基本功能和特点如下,对 Android,iOS,3D 游戏等应用的 UI 自动化测试感兴趣的读者请务必看过来

跨平台

Airtest Project 一大特色是跨平台,支持以下应用的 UI 自动化测试

  • Android app
  • iOS app
  • Windows 应用
  • Web 应用
  • 微信小程序应用 ( 仅支持系统内核,TBS 内核尚在开发中,http://airtest.netease.com/blog/tutorial/WechatSmallProgram/ )

在游戏应用方面,支持以下引擎开发的 app

  • Unity3d
  • cocos2dx-js
  • cocos2dx-lua

运行环境

Airtest Project 提供一套能够编写,录制,回放脚本的编辑器 AirtestIDE,目前该 IDE 已提供如下操作系统的客户端

  • Mac
  • Windows
  • Linux Ubuntu

脚本编写语言

测试脚本编写语言为 Python,兼容 Python 2.7 和 Python 3

核心模块

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 可根据需要扩展录制的功能,例如

  1. 设置脚本执行中的自定义参数
  2. 添加自定义功能,或替换默认功能
  3. 在脚本运行前,过程中或运行结束后执行类似 setUp, tearDown 的操作

与设备进行连接

在 AirtestIDE 中针对 Android 设备的连接比较容易,通过开启设备的 USB 调试即可快速连接

但针对 iOS 设备的连接需要进行一些配置,下面针对 iPhone 进行

  1. iOS-Tagent
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 v1.15.1 在 iOS 真机的环境配置。关于 WebDriverAgent 依赖的第三方库较多,在 appium 中也有应用到,我在此文中有更详细的介绍

另外,如果运行起来之后遇到如下报错 Test Failed,根据提示在通用-设备管理中对 Apple Development 进行信任操作

WebDriverAgent 启动成功后 output 输出类似下面的内容

2. 配置端口映射

安装代理:

$ brew install libimobiledevice

映射端口:

$ iproxy 8100 8100

3. 运行 Mac 端浏览器查看 iPhone 界面

http://127.0.0.1:8100/inspector

写在后面

Airtest Project 从平台覆盖面上看非常强大,得益于图像方式的控件识别,能够更好的应用在游戏及无法使用控件方式定位 UI 的场景
另外,由于使用 python 编写脚本,能支持更多的第三方库,所以其扩展性较强,适合针对特定的需求自主开发脚本内容
同时对测试人员非常友好,脚本录制操作方便快捷,对于不会 python 编写代码的读者来说也能实现自动化 UI 测试

发布了27 篇原创文章 · 获赞 3 · 访问量 5653

猜你喜欢

转载自blog.csdn.net/candyngwh/article/details/105104370