暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

UI自动化测试工具

互联网技能干货 2021-09-10
1094

一、背景

测试过程中有很多机械、重复、频繁手工执行的任务,需要消耗大量的时间,这些重复的动作都可让脚本代替我们来完成,通过脚本帮助我们操作,例如自动参与战斗打怪,自动副本,自动合成装备等各种功能,可根据自身情况录制不同的脚本,以帮助我们提升测试效率,增加测试的覆盖率

二、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从编写到运行

AirtestIDE界面介绍

连接参数解释:

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脚本


当.air脚本创建好后,就能看到默认的初始化代码

新建.py脚本,在普通的.py文件中,一样可以调用Airtest的接口,与.air不同的是

save path:文件保存路径,必填项,选择好路径后才能继续配置其他选项

Log Directory: 脚本运行时的log保存路径,默认为.py文件所在目录下的log目录

Devices:可以选择自动使用当前已连接的手机设备对devices参数进行初始化,也可以后在填写

project Root: 项目的父目录,方便未来使用using语句引入同一父目录的其他子文件夹

配置完所需要的选项后,点击OK按钮,将会自动以刚才的配置内容新建一份模板Python文件

    如何调试脚本

    目前Airtest不支持断点调试,因此调试脚本只能通过print log较为简单方式进行

    部分需要反复运行和调试才能确合适的图片可以选中部分代码单独运行

           
    运行脚本

    使用AirtestIDE运行脚本

单击AirtestIDE的Run Script 按钮即可,快捷键F5


    生成报告

    运行脚本后,点击查看报告按钮,即可查看报告

     Airtest介绍

    虽然借助AirtestIDE提供的录制功能,能够简单地根据操作步骤录制出可以回放操作的脚本,想要编写应用更广泛、更不容易出错的脚本,需要具备基础的python语法知识,借助python的判断、循环等语法,让脚本实现更加复杂的功能,完成自动化测试的需求

什么是.air脚本

在下载解压Airtest脚本的专属IDE——AirtestIDE后,点击“新建脚本”按钮,默认即可创建一个后缀名为.air的脚本文件,.air这是Airtest脚本的专属后缀,实际上.air脚本文件是一个普通的文件夹,里面附带了一个同名的.py文件,AirtestIDE 在执行脚本时,实际上执行的是里面的.py文件,也就是说,Airtest脚本虽然自带一个后缀名,然而本质上依然是python脚本,遵循的是Python语法,可以根据实际需要自由的import其他Python第三方库

如何录制airtest脚本

1、连接设备

2、成功连接设备后,可以通过手工按键录制与自动录制,两种方式来录制所需要的脚本内容

模拟点击:

Airtest作为自动化测试框架,模拟的是人的操作,常见的接口主要有:

      • touch点击某个位置,可以设定被点击的位置、次数、按住时长等参数

      • swipe从一个位置滑动到另外一个位置

      • text调用输入法输入指定内容

      • keyevent输入某个按键响应,例如回车键、删除键

      • wait等待某个指定的图片元素出现

      • snapshot 对当前画面截一张图

Airtest脚本示例:

下图是一个简单的脚本示例内容,在AirtestIDE中,显示效果如图:

实际上脚本内容是这样的一个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)))


断言语句:

断言在单元测试代码中非常重要,因此建议在我们的脚本里使用断言语句来判定被测应用当前的状态是否使我们预期中的状态
Airtest提供了assert_exists和assert_not_exists两个接口,来断言一张图片存在或不存在与当前画面中
同时还提供了assert_equal和assert_not_equal两个语句,来断言传入的两个值相等或者不相等


下期更新预告:

  • 如何提高脚本兼容成功率

  • 如何多次执行某个测试动作?

  • 如何自动化处理异常并优雅实现重跑case

  • 自动化回归测试demo设计思路及源码


你们点点“分享”,给我充点儿电吧~

球分享

球点赞

球在看



文章转载自互联网技能干货,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论