自动化工具 [腾讯 TMQ] FAT (Fast-AutoTest) —专业服务于微信 H5/ 小程序 UI 自动化测试

匿名 · 2018年07月19日 · 最后由 HelloHalo 回复于 2019年08月06日 · 3904 次阅读

背景

随着项目的发展,许多项目中 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,获取更多测试干货!

版权所属,禁止转载!!!

共收到 12 条回复 时间 点赞

很快就会开源,请大家不要再频繁问这个问题😂

额,殊途同归啊....

具体在什么时间点开源出来

很快是多快呢?1 个月了哦。

11楼 已删除

被翻出来了啊,坐等

simple 回复

5 月时 tmq 公众号就说再走开源流程了😂 然鹅。。。

等得花都要谢了

坐等.....

果冻 回复

是不是只支持 android 的 h5?

思寒_seveniruby 将本帖设为了精华贴 09月30日 21:53
思寒_seveniruby 取消了精华贴 09月30日 21:54

只能是 Python2 吗?啥时候支持 Python3?

还没开源,不能对比 AirTest 等框架

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册