自动化测试框架AutomatorX

新闻快递:19号Google发布了一款由网易研发的UI自动化测试方案Airtest Project,使用基于图像识别的Airtest框架,主打安卓手机的游戏自动化测试。(https://news.futunn.com/stock/4342644)

看到这个消息,竹叶青本人还是很激动的。毕竟作为一个曾经短暂接触过游戏自动化测试的新手测开,目前为止唯一认真研究过的自动化测试工具也就是网易爸爸出的一款基于图像识别的ATX。简单看了一下Airtest,感觉是ATX的高级版本。那么,趁着还没有忘光,简要把ATX的特点和用法介绍一下。感兴趣的可以移步GitHub查看具体的使用方法和源码NetEaseGame/ATX (GitHub:https://github.com/NetEaseGame/ATX)。

我是正儿八经的分割线

AutomatorX

简介:

ATX(AutomatorX)是一款开源的自动化测试工具,支持测试iOS平台和Android平台的原生应用、游戏、Web应用。使用Python来编写测试用例,混合使用图像识别,控件定位技术来完成游戏的自动化测试并附加专用的IDE来完成脚本的快速编写。

特点:

由于游戏APP多数是基于游戏引擎开发,不属于安卓的原生应用,再加上游戏的操作不局限于UI控件之类,所以目前流行的很多移动设备测试工具如appium在游戏测试方面有些无能为力。而ATX使用基于图像比较的方法,能够很好的支持游戏的自动化测试,这点还是比较可取的。另外,随着近年来图形图像行业的研究以及人工智能、机器学习的技术发展,基于图像的人工智能自动化测试,或许是未来发展的一个方向。ATX的优点总结来说有以下7个:

支持测试iOS、Android以及模拟器的自动化测试

支持测试iOS、Android系统第三方应用

完全的黑盒测试框架,无需知道项目代码,非侵入式;

支持通过图像识别来定位元素的位置;

内置自动生成测试报告的功能;

配套网页版的脚本编辑器,来帮助快速的写代码;

可用来测试Windows应用;

原理:

ATX作为一个黑盒测试框架,混合使用了图像识别、控件定位技术来完成自动化测试。其中分别用到了如下技术(由于竹叶青本人只实际捣鼓了安卓自动化测试,所以这里主要也是介绍涉及到安卓自动化测试的部分)。

图像识别

a)基于python-opencv2开发的库aircv(GitHub:https://github.com/NetEaseGame/aircv);

b)主要用于在待查找图像中定位目标图像的位置,查找方法分为:

i)SIFT图像特征点匹配:置信区间confidence可调;

ii)直接匹配查找方法:相似度需达到0.999以上;

安卓设备屏幕操作

a)uiautomator(GitHub:https://github.com/openatx/atx-uiautomator);

b)ATX通过继承的方式,借用uiautomator中的方法完成对屏幕的操作,主要方法包括:click、swipe、wait/wait_gone等;

安卓设备UI控件获取

a)uiautomatorviewer(GitHub:https://github.com/pdhxxj/uiautomatorviewer)

b)android-sdk自带的查看UI图层的工具;

c)App中组件的名字、属性、位置都可见;

局限性:

上面说的都是ATX的特性和优点。但是在实际使用过程中,也发现了其中很多不足的地方。

ATX配套的游戏脚本编辑IDE(atx-webide),界面确实比较友好,但是bug太多,暂时不建议使用;

ATX自带的使用Tkinter写的编辑器只能提供截图功能,算是目前比较稳定靠谱的。

图像识别具有不稳定性。在编写测试脚本时,可能截图的范围、可鉴别度,都能够影响最终测试用例通过与否。甚至可能出现,某一个截图,在编写测试脚本的时候可以达到指定的置信度,但是在实际运行过程中某些时刻就无法达到指定的置信度。(针对这点,竹叶青本人总结的经验就是在编写脚本时,要特别注意截图尽量准备、有区分度,并且一个截图的内容尽可能单一,尽可能小,能提高识别成功率。)

图像识别方法做自动化测试,较难以维护。每一份测试用例,都需要与特定的版本号对应,基本上页面一旦发生变化,脚本就需要人工维护审查。

这是一条不正经的分割线

这是公众号第二篇推送,也是第一篇技术介绍类推送。写完了自己感觉有点枯燥(捂脸……这个工具主要的特点呢就是上手快原理简单,但是不太稳定,有兴趣的小伙伴们可以找个游戏简单尝试一下。后面会调研新出的Airtest,争取做个demo图文并茂的给小伙伴们演示~

小伙伴们对于推送的内容或者形式有任何建议欢迎后台留言哒!

最后,再次撒泼打滚求关注!么么哒!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322G1V4YB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券