FAT(Fast-AutoTest) —专业服务于微信H5/小程序UI自动化测试

背景

随着项目的发展,许多项目中H5(特别是微信平台内)以及小程序占比逐渐增多,因此快速建设相关的自动化来提高项目的效率和质量成为了许多项目中的重中之重。

然而目前市面上能完美支持微信H5和小程序测试的测试工具是缺失的。因此我们展开了求索之路,并且成功研发了FAT框架,来解决这个难题。想了解我们是如何解决H5/小程序UI自动化测试难题的看官们,请听我慢慢讲来。

调研之路

首先团队先对市面上流行的测试工具,包括Uiautomator、Appium进行了快速的调研,调研结果如下:

其中Appium看起来是支持H5的,可是在实际操作使用中,切换页面需要重新建立chomedriver通信,控件识别耗时长,稳定性差,严重影响自动化的维护成本,而小程序更是无法支持。

调研的结论让人沮丧,现有工具都不能很好的支持小程序测试。俗话说只要思想不滑坡,办法总比困难多,没有什么可以阻止我们前进的道路!终于在一篇文章中得到了启发,关键技术点的就是—Chrome debugging protocol。

撸起袖子加油干在得到关键信息之后,团队决定自己开搞,立志于提供微信内H5/小程序UI自动化的统一解决方案,于是,FAT(Fast-AutoTest)诞生了!框架整体采用分层设计,API设计方式参考WebDriver,框架如下图所示。

User Interface(用户交互层):提供给用户所有的界面操作API(H5界面及小程序界面),使用者不需要关注框架内部实现,只需要关注自身业务逻辑流程(手工用例流程转换成自动化流程)。

PageOperator(操作解析层):主要用于接收和解析用户命令后传递给下层Engine层Engine( H5&小程序引擎层): 将用户命令传输到手机,并返回结果信息。封装WebSocket和单线程池,通过WebSocket Debug URL和浏览器内核建立链接,发送Json格式的协议到手机端进行用户指定的操作。

搭好了架子后,开始逐步填充功能,调试,优化,FAT(Fast-AutoTest)框架的内容也逐步越来越丰富和完善;并且在团队内的多个产品中进行验证和打磨,不断提高框架的易用性和稳定性。

我们的优势

(1)全面支持微信H5页面,能识别常见H5控件,能获取页面任意内容(常见的如文字、图片、链接等);

(2)全面支持小程序内控件识别,操作,页面内容获取等;

(3)支持基础的性能测试监控;

(4)支持安卓Native页面组合操作使用;

(5)简单的API设计,使用门槛低;

(6)提供日志等级开关,方便调试定位。

与业内工具对比如下:

那么如何选择适用于自己项目的工具呢?

如果自动化测试的重点主要是在web页面测试,如手机chrome页面测试或微信页面测试,自研FAT框架在稳定性、易用性还有兼容性会更出色;如果自动化测试的对象是Hybird App,主要集中于Native界面的测试,兼顾web页面测试的话,使用Appium会更合适。

团队收益

1、使用框架,能快速完成用例到脚本的转化。快速上手,编写简单,即使是没有编码经验的同学也很快学会,我们团队的手工测试的外包合作伙伴经过一个用例的练习后,就能独立完成编写和调试工作,基本功能用例能逐步自动化代替,节约回归时间。

2、初步做过编写脚本时间估算。单个操作步骤用脚本实现花费约40s(打开页面5+Chrome抓控件5s+找目标控件Xpath 15s+写脚本15s),一条10个步骤的用例,用脚本实现时间400s,一次编写,终生可用,投入产出比还是不错的。

3、经过在团队内各产品的逐渐铺开使用,在效率和质量上都有逐步提升,相关页面覆盖度也在逐步完善中。

如何获取FAT呢?

目前我们的工具正在走开源的流程,不久之后大家就可以免费使用FAT了,大家敬请期待,多多关注TMQ的相关资讯。

关注腾讯移动品质中心TMQ,获取更多测试干货!

版权所属,禁止转载!

原文发布于微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文发表时间:2018-05-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linux Python 加油站

揭秘Linux工程师一路走来都需要哪些技能

大公司也是从小公司一步步走过来的,而大公司之所以与小公司不同,不在于基础的技术体系不同,而是当数据量达到一定程度后,引发的质变而已。而在思考质变带来的性能问题中...

1254
来自专栏PPV课数据科学社区

【学习】深度解析LinkedIn大数据平台(二):数据集成

第二部分:数据集成 请让我首先解释 一下“数据集成”是什么意思,还有为什么我觉得它很重要,之后我们再来看看它和日志有什么关系。 数据集成就是将数据组织起来,使...

3607
来自专栏小程序·云开发专栏

腾讯相册上了小程序·云开发,不仅不慌而且很爽

小程序·云开发是基于腾讯云研发的全新 云开发 Tencent Cloud Base(简称 TCB) 服务,本文将阐述该解决方案如何帮助公司级业务腾讯相册加快迭代...

9874
来自专栏Java架构

阿里java架构师:微服务写的最全的一篇文章

今年有人提出了2018年微服务将疯狂至死,可见微服务的争论从未停止过。在这我将自己对微服务的理解整理了一下,希望对大家有所帮助。

1.9K3
来自专栏华章科技

(内含源代码)我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言

看了不少朋友圈里推荐的Python爬虫文章,都觉得太小儿科,处理内容本来就是PHP的强项,Python唯一的好处估计也就天生的Linux自带,和Perl一样,这...

1563
来自专栏令仔很忙

Hybird App(一)----第一次接触

之前一直在做JAVA的项目,最近要开发移动端,对App的开发刚开始的时候是没有任何概念的,有接触也就是玩手机用过的N多App,这算是真正意义山的第一次和App...

1491
来自专栏向治洪

基于React.js实现webapp的技术实践

由于最近的reactjs实在太火,而且距离第一版已经快2年的时间了,已经相对稳定和成熟了,基于这两个前提下,团队对reactjs及其他开源技术进行了相关调研,发...

2768
来自专栏数据的力量

【答疑解惑】做大数据过程中遇到的13个问题

1734
来自专栏QQ会员技术团队的专栏

大规模排行榜系统实践及挑战

在过去的一年中,排行榜系统从无到有,接入的业务从单一的QQ会员到企鹅电竞动漫等20几个各类业务,接入的排行榜数实现了从几个到数万的突破,单个排行榜用户数最大90...

3.7K1
来自专栏京东技术

塞伯坦 | 提高业务研发效率的工程化解决方案

http://cyb.hestudy.com/,面向前端模块化工程的构建工具。主要目的是帮助开发者统一前端开发模式和项目开发结构,提高功能扩展和降低维护成本,自...

1472

扫码关注云+社区

领取腾讯云代金券