一、背景
测试过程中有很多机械、重复、频繁手工执行的任务,需要消耗大量的时间,这些重复的动作都可让脚本代替我们来完成,通过脚本帮助我们操作,例如自动参与战斗打怪,自动副本,自动合成装备等各种功能,可根据自身情况录制不同的脚本,以帮助我们提升测试效率,增加测试的覆盖率
二、AirtestProject简介
AirtestProject 是由网易游戏推出的一款自动化测试框架,项目构成为:
Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和app,支持的平台有 windows、Android、iOS,借助Airtest,我们可以通过各种截图在设备上实现模拟输入,完成自动化测试脚本
Poco:是一个基于UI控件识别的自动化测试框架,目前支持Unity3D、cocos2d、android原生app、iOS原生等
AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够录制和调试测试脚本,并且提供了完整的自动化工作流程支持:录制脚本-> 真机回放 ->生成报告
简单来说,Airtest用截图写脚本,Poco用界面UI元素来写脚本,通过使用AirtestIDE可以快速编写自动化测试脚本
三、AirtestProject的用途
目的:
通过快速录制脚本的方式帮助我们解决频繁以及重复手工执行的任务
通过模拟用户正常行为进行自动化测试
期望:
能够搭建自动化测试框架,解决回归测试的烦恼
四、环境配置
1、AirtestIDE下载地址:AirtestIDE(根据系统版本,下载官网上对应的zip包,解压后得到AirtestIDE文件夹,解压后即可直接使用,AirtestIDE内置了Python3.6.5,airtest和poco环境,本地无需安装Python环境就能直接使用)
双击AirtestIDE/AirtestIDE.exe即可启动
部分机器由于兼容性问题,导致无法正确启动的,见 启动兼容模式
2、部署python环境
想要使用本地python环境来运行脚本,需要配置本地的运行环境,Python安装略
如果只想用AirtestIDE前端集成的开发IDE工具,通过前端点点点生成或录制方式生成脚本的话,完全可以开箱即用,完全不用配置python环境
五、如何使用
前期建议使用AirtestIDE帮助我们编写自动化测试脚本,中期熟练上手Airtest和poco以后,尝试通过IDE录制脚本,在本地命令行(或者pycharm)运行,逐渐脱离IDE,后期完全脱离IDE从编写到运行
连接参数解释:
IDE提供了三个备选的连接参数:use javacap、Use ADB orientation、use adb touch
1、Use javacap ,是给部分无法正常看到手机画面、minicap初始化失败 的手机或设备用的,所以模拟器看到黑屏、部分特殊的平板等设备可以考虑勾选这个选项
2、Use ADB orientation 是 屏幕旋转 的,如果在安卓手机屏幕旋转方向检测有问题、或者是部分特殊的平板无法显示正确的屏幕方向时可以勾选
3、Use ADB touch 是 发送adb指令来点击屏幕 ,效果很差,速度也很慢,不建议勾选,只有在部分无法点击屏幕的特殊安卓设备上才需要使用(例如智能后视镜、特殊型号的平板等设备上) 正常情况下,手机都可以点击,如果无法被点击(比如小米设备),一般都是因为手机设置有选项漏了打开,特别是小米设备要注意 开启允许模拟点击 的设置
设备连接
注意:初次连接手机会自动安装 poco service.apk、Yosemite.apk 、rotationWatcher.apk三个文件
脚本编写
在脚本编写过程中,可以根据需求在里面混合使用Airtest和poco,可以自由加入自己想用的其他python第三方库完成更强大的功能
第一次打开AirtestIDE时,会默认帮忙在系统temp目录新建一个空脚本,方便我们熟悉软件功能和上手编写脚本,在脚本编写过程中,尽量避免将脚本保存在系统目录,或无权限读写的目录,务必选择一个合适的,有存储权限的目录来存放你的脚本
新建脚本
打开IDE,点击左上角的文件--新建脚本-- .air 即可新建一个.air脚本
新建.py脚本,在普通的.py文件中,一样可以调用Airtest的接口,与.air不同的是
Log Directory: 脚本运行时的log保存路径,默认为.py文件所在目录下的log目录
Devices:可以选择自动使用当前已连接的手机设备对devices参数进行初始化,也可以后在填写
project Root: 项目的父目录,方便未来使用using语句引入同一父目录的其他子文件夹
配置完所需要的选项后,点击OK按钮,将会自动以刚才的配置内容新建一份模板Python文件
如何调试脚本
目前Airtest不支持断点调试,因此调试脚本只能通过print log较为简单方式进行
部分需要反复运行和调试才能确合适的图片可以选中部分代码单独运行
使用AirtestIDE运行脚本
生成报告
Airtest介绍
什么是.air脚本
如何录制airtest脚本
1、连接设备
2、成功连接设备后,可以通过手工按键录制与自动录制,两种方式来录制所需要的脚本内容
模拟点击:
Airtest作为自动化测试框架,模拟的是人的操作,常见的接口主要有:
touch点击某个位置,可以设定被点击的位置、次数、按住时长等参数
swipe从一个位置滑动到另外一个位置
text调用输入法输入指定内容
keyevent输入某个按键响应,例如回车键、删除键
wait等待某个指定的图片元素出现
snapshot 对当前画面截一张图
Airtest脚本示例:
实际上脚本内容是这样的一个Python脚本(AirtestIDE中会自动将Template(XXX)渲染为图片形式)
代码开头部分,form airtest.core.api import * 将Airtest的主要API都要import尽量,以便后续脚本中使用这些API
auto_setup 是用来初始化环境的接口,它接受四个参数,我们可以设置当前脚本所在的路径、指定运行脚本的设备、设置默认的log路径和设置脚本父路径
如果auto_setup不传任何参数的话,Airtest将会读取运行时命令行中传入的各项参数,来对环境进行初始化
在AirtestIDE创建脚本时,默认生成的代码里是最简单的初始化代码 auto_setup(__file__),意思是将脚本文件作为脚本路径传入,其他参数内容将默认读取运行命令行传入的参数
尽量在脚本初始化期间调用auto_setup接口,这样能保证尽可能正确地初始化环境、并生成log文件,否则默认是不生成log内容的
很多接口中,支持传入Template图片对象作为参数,在运行时将会去点击图片在画面中的所在位置
# touch((x, y)), (x, y)是图片所在的中心点 等价于
touch(Template(r"tpl1556019871196.png", record_pos=(0.204, -0.153), resolution=(1280, 720)))
断言语句:
下期更新预告:
如何提高脚本兼容成功率
如何多次执行某个测试动作?
如何自动化处理异常并优雅实现重跑case
自动化回归测试demo设计思路及源码
你们点点“分享”,给我充点儿电吧~
球分享
球点赞
球在看