哈哈,我又来写博客了,最近公司测试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直接解压即可使用
解压完成后可以直接找到
exe文件双击即可
二,
使用AirtestIDE对Android应用进行自动化测试时,第一步就需要连接Android设备。
Android真机连接准备:
- 请先安装手机对应品牌的官方驱动,确保能使用电脑对手机进行USB调试
- 确保已经打开了手机中的”开发者选项”,并且打开”开发者选项”内的”允许USB调试”
- 部分手机需要打开”允许模拟位置”、”允许通过USB安装应用”
- 关闭电脑上已经安装的手机助手软件,能避免绝大多数问题,请务必在任务管理器中手工结束手机助手进程
- 请使用USB线连接手机,手机上出现的
允许USB调试
弹窗点击确定
,- 点击连接面板中的
refresh ADB
按钮,设备列表将会刷新,- 点击列表内对应设备的
Connect
完成连接,- 若设备未刷出,点击
refresh ADB
按钮.如果遇到连接问题,请查阅 2.2 Android连接常见问题 。
- 已知IP和端口的远程设备
ip:port
,AirtestIDE可以直接连接,- 点开设备窗内的
远程设备连接
按钮- 将
adb connect ip:port
字段填入填充框内,点击连接
按钮,- 远程设备将出现在设备列表中,点击
connect
按钮。
- 参考:使用adb无线连接手机
当手机与电脑处在同一个wifi下,即可尝试无线连接手机了,但是这种方式受限于网络连接的稳定性,可能会出现连接不够稳定的情况。具体连接操作步骤如下:
- 确保手机开启了USB调试选项,并先用USB线将手机和电脑连接起来
- 在电脑端执行命令
adb tcpip 5555
,其中5555
是端口号,可以根据自己的需求来指定,5555是默认值- 获取手机的IP地址,可以在 手机设置-关于手机-状态信息-IP地址 里找到,也可以执行
adb ifconfig
来查看- 随后可以拔掉USB线,在AirtestIDE的
远程设备连接
处输入adb connect 手机ip:刚才填入的端口号5555
,点击连接,刷新ADB后就能在设备列表中看到连上的设备了- 如果因为网络波动、重启ADB等原因导致连接断开,重新执行一次
adb connect ip:port
即可。
如果需要在代码中连接手机设备,请参考文档 如何连接手机/windows窗口 。
关于远程连接的Android字符串代码:
如果在代码中/脚本运行时,需要填写
Android:///
字符串,又不清楚远程连接的手机应该如何填写的话,可以直接用AirtestIDE运行一次脚本,然后将IDE生成的Android:///
字符串复制使用。通常情况下,字符串需要填写的内容为
Android://adbhost:adbport/serialno
,其中,adbhost和adbport一般来说默认都是本机adb,即127.0.0.1:5037
,在远程连接手机时,与本地手机不同的是设备号serialno:因此图中这台远程连接的手机,实际上的设备字符串为
Android://127.0.0.1:5037/10.254.60.1:5555
,可以看到其中的10.254.60.1:5555
其实代表了设备号,不要误填为adbhost。
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 里进行提出。
经过改进,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: 暂未支持
现在已经支持Poco查看窗口视图功能,可以看下面图片的效果
ios-inspector
这个功能可以与 Poco 和 airtest-ide 一同使用达到最好的效果。
请注意,若只部署了wda项目,是无法使用本功能的,请务必确保部署的是我们提供的 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
-> 选择你的真机
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)
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。具体步骤为:
通过ip方式连接iPhone,实时刷新界面,可进行UI测试
完成上面两个步骤后,就可以在AirtestIDE的iOS地址栏填入地址 http://127.0.0.1:8100 ,点击 “connect” 连接设备,开始编写你的Airtest测试脚本了
ios-airtestIDE
三 ,录制
点击录制按钮,选择事件进行录制,可以用鼠标操作
介绍一下录制时每一个参数的作用
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断言的对象是数值
可以按照需要的参数进行配置
具体测试步骤以及邮件发送后面会出