AirTest使用教程

哈哈,我又来写博客了,最近公司测试app项目比较多,有一些重复性的工作导致测试任务很重,所以想把固定的一些功能作为自动化进行测试

接下来我们进入正题吧

什么是AirTest,AirTest能做什么

Airtest Project诞生的初衷,源于我们对于游戏自动化测试框架的渴求。相比于普通的软件测试,手游测试由于手机机型繁多,对于性能测试、兼容性测试的需求很高,同时可能还有大量重复性的内容例如新手流程需要进行反复测试。自动化测试在一定程度上,可以减轻测试人员的负担、缩短bug发现周期、提高测试效率。

为了降低自动化测试的门槛,用更少的精力产出更多高效的自动化脚本,来达到提升测试效率的目的,网易推出了一整套解决方案,项目命名为Airtest Project。现在可以使用AirTest在Windows、iOS、Android上测试游戏和各类应用。

一:下载Airtest

Airtest官网:http://airtest.netease.com/   

还为下载慢的同学们准备了百度网盘:链接:https://pan.baidu.com/s/1_ZqHnEzJhT7uA15i_qEEKQ 
提取码:ao0i 
下载按照电脑的配置下载需要的,我这边下载的就是zip直接解压即可使用

解压完成后可以直接找到

AirTest使用教程_第1张图片

exe文件双击即可

二,

Android真机连接

使用AirtestIDE对Android应用进行自动化测试时,第一步就需要连接Android设备。

Android真机连接准备:

  • 请先安装手机对应品牌的官方驱动,确保能使用电脑对手机进行USB调试
  • 确保已经打开了手机中的”开发者选项”,并且打开”开发者选项”内的”允许USB调试”
  • 部分手机需要打开”允许模拟位置”、”允许通过USB安装应用”
  • 关闭电脑上已经安装的手机助手软件,能避免绝大多数问题,请务必在任务管理器中手工结束手机助手进程

1. Android真机USB连接

AirTest使用教程_第2张图片
  • 请使用USB线连接手机,手机上出现的 允许USB调试 弹窗点击 确定
  • 点击连接面板中的 refresh ADB 按钮,设备列表将会刷新,
  • 点击列表内对应设备的 Connect 完成连接,
  • 若设备未刷出,点击 refresh ADB 按钮.

如果遇到连接问题,请查阅 2.2 Android连接常见问题 。

2. 远程连接

AirTest使用教程_第3张图片
  • 已知IP和端口的远程设备 ip:port ,AirtestIDE可以直接连接,
  • 点开设备窗内的 远程设备连接 按钮
  • 将 adb connect ip:port 字段填入填充框内,点击 连接 按钮,
  • 远程设备将出现在设备列表中,点击 connect 按钮。

3. 无线连接

  • 参考:使用adb无线连接手机

当手机与电脑处在同一个wifi下,即可尝试无线连接手机了,但是这种方式受限于网络连接的稳定性,可能会出现连接不够稳定的情况。具体连接操作步骤如下:

  1. 确保手机开启了USB调试选项,并先用USB线将手机和电脑连接起来
  2. 在电脑端执行命令 adb tcpip 5555 ,其中 5555 是端口号,可以根据自己的需求来指定,5555是默认值
  3. 获取手机的IP地址,可以在 手机设置-关于手机-状态信息-IP地址 里找到,也可以执行 adb ifconfig 来查看
  4. 随后可以拔掉USB线,在AirtestIDE的 远程设备连接 处输入 adb connect 手机ip:刚才填入的端口号5555 ,点击连接,刷新ADB后就能在设备列表中看到连上的设备了
  5. 如果因为网络波动、重启ADB等原因导致连接断开,重新执行一次 adb connect ip:port 即可。
AirTest使用教程_第4张图片

4. 在代码中连接

如果需要在代码中连接手机设备,请参考文档 如何连接手机/windows窗口 。

关于远程连接的Android字符串代码:

如果在代码中/脚本运行时,需要填写 Android:/// 字符串,又不清楚远程连接的手机应该如何填写的话,可以直接用AirtestIDE运行一次脚本,然后将IDE生成的 Android:/// 字符串复制使用。

通常情况下,字符串需要填写的内容为 Android://adbhost:adbport/serialno ,其中,adbhost和adbport一般来说默认都是本机adb,即 127.0.0.1:5037 ,在远程连接手机时,与本地手机不同的是设备号serialno:

AirTest使用教程_第5张图片

因此图中这台远程连接的手机,实际上的设备字符串为 Android://127.0.0.1:5037/10.254.60.1:5555 ,可以看到其中的 10.254.60.1:5555 其实代表了设备号,不要误填为adbhost。

iOS设备连接

ios-airtestIDE

iOS-Tagent 是基于 facebook 的 WebDriverAgent, 项目上进行开发的 , 目的是为了对 AirtestProject 。提供iOS平台的测试支持,在原项目的基础上进行了定制化的优化和功能调整。

如果需要使用airtest项目对iOS平台进行测试,请 事先准备一台macOS ,使用xcode部署 iOS-Tagent 成功后,能够在mac或windows机器上连接到iOS手机。请点击 链接 下载项目代码到本地进行部署。

这个项目在如下版本上进行了开发和测试:

iOS

Xcode

10.x-12.x

10.x

≥ 9.3

≥ 9.3

其他版本的Xcode和iOS未经完整测试,可能会出现非预期的错误情况。

现在这个项目在公开测试状态,会存在一些问题 如果对于这个项目有问题和反馈建议,可以到 Issues 里进行提出。

2.4.1 Airtest Api 支持状况

经过改进,iOS-Tagent 现可以与 AirtestIDE 和 airtest项目 协同工作

支持通用的 airtest 的 iOS Api

- start_app: OK
- stop_app: OK
- snapshot: OK
- home:     OK
- touch:    OK
- swipe:    OK
- text:     OK
- wait:     OK
- exists:   OK
- find_all: OK
- assert_exists: OK
- assert_not_exists: OK

除了一些例外:

- wake: 暂未支持 (考虑用'home'方法替代)
- keyevent: 只支持 'home' 事件
- clear_app:  暂未支持
- install:  暂未支持
- uninstall: 暂未支持

2.4.2 使用Poco快速查看窗口视图

现在已经支持Poco查看窗口视图功能,可以看下面图片的效果

ios-inspector

这个功能可以与 Poco 和 airtest-ide 一同使用达到最好的效果。

请注意,若只部署了wda项目,是无法使用本功能的,请务必确保部署的是我们提供的 iOS-Tagent 项目。

2.4.3 简单部署流程

step 1 iOS-Tagent

在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素

  • a 下载 iOS-Tagent 到本地电脑

    git clone [email protected]:AirtestProject/iOS-Tagent.git

  • b 使用Xcode打开 iOS-Tagent, 用数据线连接iPhone至Mac

    选择项目,在菜单栏 product -> Scheme -> WebDriverAgentRunner

    选择设备,在菜单栏 product -> Destination -> 选择你的真机

    AirTest使用教程_第6张图片chooseScheme

  • c 启动Test,在菜单栏 product -> Test。当你看到这样的日志的时候,代表 iOS-Tagent 已经启动成功了

    Test Suite 'All tests' started at 2017-01-23 15:49:12.585
    Test Suite 'WebDriverAgentRunner.xctest' started at 2017-01-23 15:49:12.586
    Test Suite 'UITestingUITests' started at 2017-01-23 15:49:12.587
    Test Case '-[UITestingUITests testRunner]' started.
    t =     0.00s     Start Test at 2017-01-23 15:49:12.588
    t =     0.00s     Set Up
可以从以下了解更多的关于如何成功启动这个项目的方法 [here](https://github.com/facebook/WebDriverAgent/wiki/Starting-WebDriverAgent).和 [here](https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md)

step 2 设置代理

iproxy 可以把iPhone端口映射到电脑端口,那么就可以通过访问电脑的端口访问到手机的端口了。

一般情况下,需要通过设置usb代理的方式访问手机上的Agent,直接通过wifi对手机进行访问可能会出现问题,具体的原因可以参考 Issues 和 detail

  • a 通过 Homebrew 安装iproxy

    $ brew install libimobiledevice

  • b 运行iproxy

    $ iproxy 8100 8100

启动成功后,可以试着在浏览器访问 http://127.0.0.1:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。此时,访问 http://127.0.0.1:8100/inspector 可以看到iPhone屏幕投影在浏览器上

有一点需要 注意 的,iproxy只能监听localhost,所以如果你想使用 Windows 连接iPhone,可以改用 wdaproxy。具体步骤为:

  • 使用usb数据线连接iPhone至Mac
  • 在Mac上运行 wdaproxy,wdaproxy可以把iPhone端口映射到Mac端口,具体安装运行步骤可参考 https://github.com/openatx/wdaproxy
  • 在Windows上的AirtestIDE iOS地址输入框,输入Mac的ip地址和端口,点击”connect”按钮

step 3 AirtestIDE

通过ip方式连接iPhone,实时刷新界面,可进行UI测试

完成上面两个步骤后,就可以在AirtestIDE的iOS地址栏填入地址 http://127.0.0.1:8100 ,点击 “connect” 连接设备,开始编写你的Airtest测试脚本了

AirTest使用教程_第7张图片

ios-airtestIDE

三 ,录制

AirTest使用教程_第8张图片

点击录制按钮,选择事件进行录制,可以用鼠标操作

 介绍一下录制时每一个参数的作用

touch(): 点击操作,根据录制脚本时所截取的图像进行点击

wait(): 可以等待画面中某个图片出现,如果在指定的时间范围内匹配到了该图片,就会返回图片所处位置的焦点,否则抛出TargetNotFoundError异常

swipe():可以从一个位置滑动到另外一个位置

exists():判断画面中是否存在某个图片,如果匹配到图片,返回图片所处位置的焦点,否则返回False

text():输入文本

sleep():线程挂起

assert_exists():断言图片存在于当前画面上

assert_not_exists():断言图片不存在

assert_equal():断言数值相等

assert_not_equal():断言数值不等

# assert_exists()与assert_equal()的区别在于,assert_exists断言的对象是图片,assert_equal断言的对象是数值

可以按照需要的参数进行配置

具体测试步骤以及邮件发送后面会出

 

 

 

 

 

你可能感兴趣的:(工具分享)