手机自动化 5分钟上手自动化测试——Airtest+Poco快速上手

前言

本文档将演示使用AirtestProject专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚本的全流程。强烈建议新手从本文档开始阅读,并使用AirtestIDE上手脚本编写。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:812157648,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

简介

AirtestIDE 是一个跨平台的UI自动化测试编辑器,适用于游戏和App

  • 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程
  • 支持基于图像识别的Airtest框架,适用于所有Android/iOS/Windows应用
  • 支持基于UI控件搜索的Poco框架,适用于Unity3d,Cocos2d与Android/iOS App等多种平台
  • 能够运行在Windows和MacOS上

访问官网通过视频查看更多特性。

在这里插入图片描述

通过本教程,你将学会如何上手自动化测试(或者写点脚本来自动玩游戏)。相信我,这个过程会非常愉快~

安装

目前AirtestIDE提供了Windows和Mac两个版本的客户端,请从官网下载,解压即用。

连接设备

AirtestIDE目前支持测试Android/Windows/iOS上的应用,其他更多平台的支持正在开发中。

无论是Android/iOS手机,还是Windows窗口,在Airtest中都将它视为一个设备,接下来我们将演示如何连接一个设备。

连接Android手机

通过ADB连接你的电脑和Android手机,即可开始调试Android应用。ADB是Google官方提供的Android调试工具。AirtestIDE依赖ADB与安卓设备进行通信。

打开AirtestIDE,按照以下步骤进行连接:

  1. 打开手机设置-开发者选项-USB调试开关,参考安卓官方文档
  2. 在AirtestIDE设备面板中点击refresh ADB按钮,查看连接上的设备
  3. 如果没有显示出设备,试试restart ADB,如果还不行,参考FAQ文档进行问题排查
  4. 能够成功看到设备后,点击对应设备的Connect按钮,进行初始化
image.png

手机连接成功后,即可在AirtestIDE中看到手机屏幕的镜像显示,并进行实时操作。

如果连接不成功可以打开use允许安装程序

连接Windows窗口
对于Windows桌面程序的测试,AirtestIDE可以将被测窗口嵌入,方便脚本录制和调试。

  • 在AirtestIDE设备面板中点击Windows-框选游戏窗口按钮

  • 将鼠标移动到被测程序的窗口上,会显示绿色边框,将对应的窗口框出

  • 点击左键即可将对应的窗口嵌入到AirtestIDE中


    image.png

如果上述方法不能正确找到被测程序的窗口,你还可以使用备用嵌入方法

连接iOS手机
要连接一台iOS手机,你需要先准备好一台安装了Xcode的Mac电脑,连接方法参考文档。

录制自动化脚本
在连上设备后,我们可以开始录制自动化测试脚本了,在接下来的内容中,我们将会使用一台Android设备上的一款Unity游戏应用,给大家演示如何录制脚本。

模拟输入
让我们先从最常用的模拟点击开始吧,模拟点击的意思就是,模仿你的操作去点击设备上的某个指定位置。

基于图像识别
目前我们支持通过图像识别的方式,找到你想要点击的位置并进行操作,这是基于Airtest这个框架实现的。

我们可以先看看如何自动录制脚本:点击AirtestIDE左侧的Airtest辅助窗上的录制按钮,然后随着你在设备窗口上操作手机,代码会自动生成在代码窗口中。

[
image.png

马上来验证一下,点击运行按钮运行你的第一个自动化脚本吧!

如果你觉得自动录制生成的图标不够精确,还可以点击Airtest辅助窗上的touch按钮,然后在设备窗口上框选精确的图标,也可以自动生成一条touch语句。


image.png

类似的模拟输入操作还有滑动:点击swipe按钮,在设备窗口上框选精确的图标作为滑动起点,然后点击滑动终点位置,即会自动生成一个swipe语句。

其他模拟输入的API包括:

  • text: 文字输入
  • keyevent: 按键输入,包括(HOME/BACK/MENU等)
  • sleep: 等待
  • snapshot: 截屏

基于UI控件
如果你发现图像识别不够精确,还可以使用基于UI控件搜索的方式进行自动化测试,与刚才的Airtest不同,这是Poco这个框架实现的功能。

目前Poco直接支持Unity3d、Cocos2d、白鹭引擎等多种游戏引擎,以及Android/iOS原生App。

如果是Android/iOS原生应用,是即插即用的,无需接入SDK。但由于游戏引擎使用OpenGL等图形接口直接渲染,而没有使用Android原生的UI系统,我们需要与游戏的Runtime进行通信获取整个UI结构。

我们提供了非常方便的SDK接入方法,点这里查阅目前支持的平台列表,以及如何为你的项目接入Poco。

如果你的项目使用的引擎或平台不在文档中,我们同样支持自行扩展SDK。

实际上在网易游戏内部,我们就是用这种方式支持了Messiah/NeoX/梦幻等多个自研引擎。

接入完成后我们即可开始。手机启动游戏,在AirtestIDE中的Poco辅助窗切换模式至对应引擎类型,即可看到整个UI结构。


image.png

点击录制按钮,然后随着你的鼠标操作,会自动生成Poco语句到脚本编辑框中。


image.png

同样,你也可以通过UI树形结构更精确的检视UI控件,双击节点自动生成Poco语句,或者自行选择更好的写法。

自动录制出的语句不一定能够适应所有场景,采用更合理的选择器编写代码,通常会增强整个自动化脚本的健壮性和可读性,这是门学问。


image.png

录制完脚本后记得运行试试效果。

对于Android/iOS的原生应用来说,不需要接入SDK即可使用,例如在连上Android手机后,将Poco辅助窗的模式切换至Android,能可以看到整个UI树形结构。


image.png

框架信息
上述两种UI识别方式,分别是基于两个框架:

  • 基于图像识别的Airtest框架
  • 基于UI控件搜索的Poco框架

这两个框架都是由我们团队开发的Python第三方库,在实际项目使用经验中,我们发现两者互相配合会得到最好的效果。在脚本编写的过程中,我们往往也需要查阅它们的项目API文档。

使用Python语法
整个AirtestIDE中录制和运行的代码都是基于Python语言。Python语法简洁而强大,第三库和工具也非常多。

对于新手,Python上手非常容易,学会基本语法即可写出自动化脚本中所需的逻辑语句。

touch("开卡包.png")
if exists("奖励面板.png"):
    for i in range(5):
        Poco("奖励-%s" % i).click()

对于老手,你可以在AirtestIDE中使用各种第三方库来使你的自动化脚本更加强大,通过添加PYTHONPATH设置,可以使用本地的python.exe来运行你的脚本。

除了辅助窗口里面提供的语句,更多的API文档,可以查看Airtest和Poco的仓库。

断言
到这里,我们已经有各种模拟输入方法,配合逻辑控制语句让手机动起来。自动化测试中还有很重要的一个步骤:结果验证,那么我们来看看怎样声明断言。

验证UI界面
录制方法与模拟输入类似

  • assert_exists:断言图片存在
  • assert_not_exists:断言图片不存在


    image.png

验证数值
通过Poco获取属性值,手写代码进行断言

  • assert_equal:断言相等
  • assert_not_equal:断言不等

例如

# ... 模拟输入并获得20分之后

value = Poco("分数按钮").attr("num")
assert_equal(value, 20, "获到20分")

查看测试报告

脚本运行完毕后,点击查看报告按钮(快捷键Ctrl+L),会使用默认浏览器打开结果报告页面。报告中将展示出每一个步骤的内容和实际执行过程的截图、运行结果,方便查看步骤是否执行成功。

在这里插入图片描述

命令行接口
现在,你已经学会自动化测试了。接下来呢,你可以使用命令行接口将自动化测试与持续集成结合起来。持续集成是什么?

在AirtestIDE运行脚本时,LOG窗口中会打印运行命令。


在这里插入图片描述

你可以在不开启IDE的情况下,在命令行中使用那条命令来启动测试脚本,例如:

"D:\迅雷下载\AirtestIDE\AirtestIDE" runner "D:\AirtestIDE_2018-01-24_83\untitled.air"  --device Android://127.0.0.1:5037/F8UDU16409004135 --log "C:\Users\gzliuxin\AppData\Local\Temp\AirtestIDE\scripts\cdfc40e8c297b6ad88e09de64d8bafa3"

使用AirtestIDE你可以轻松的录制出测试脚本,保存为.air脚本。请注意一个.air脚本中不要包含太多内容,用良好的脚本命名和目录结构来组织你的脚本,覆盖所有测试点。

你还可以在不同电脑上针对不同设备运行测试, 这时候你就需要用命令行运行 .air 脚本 。 对于多平台发布的产品,灵活使用跨平台API和命令行,还可以让同一套测试脚本运行在Android和Windows上进行测试。
原文作者:乎你
原文地址:https://blog.csdn.net/m0_50944918/article/details/112434278?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161068997716780255269944%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161068997716780255269944&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-4-112434278.first_rank_v2_pc_rank_v29&utm_term=iOS%E5%BC%80%E5%8F%91

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,710评论 4 376
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,839评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,295评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,776评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,198评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,074评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,200评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,986评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,733评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,877评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,348评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,675评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,393评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,209评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,212评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,003评论 2 280

推荐阅读更多精彩内容