Macaca调研篇

简介:

一、业内相对流行的几款UI自动化框架


二、他们的区别在哪里?

三、有哪些可用的UI自动化框架?我们是如何选择的?

条件1:支持移动端app自动化

从以上对比其实已经可以比较明确的帮助大家做出自己的选择,从我所在的团队来讲,我们主要做的是移动端的UI自动化,相信现在大多数同学所做的也都是这一类的自动化,因此,仅限于PC端webApplication的几个框架就不可避免的要排除掉了,这其中包含Selenium,PhantomJS,以及KARMAR。

条件2:支持多平台自动化

此外,对于移动端的UI自动化,我们希望可以同时覆盖安卓以及iOS平台,最好是一套脚本能同时在两个端上跑,鉴于此,只提供单一平台的Selendroid,Robotium可以暂时不用考虑了。

条件3:学习成本低

经过上面两次筛选,我们的选择剩下了Macaca && Appium && Calabash,这其中,Macaca以及Appium都是支持多语言的,Appium支持的最多,包含了Ruby Python Java Js OC PHP C#(.Net)这些几乎所有主流的语言,Macaca目前支持Js Java以及Python,也能基本满足需要,相比之下,Calabash只支持Ruby,这个对团队是有一定的挑战的,因为我们的团队大家基本上以Java技术栈为主,如果采用Ruby,意味着所有的同学都要先学习一下这门语言,这个成本对于我们这样的团队而言成本是很高的,因此,Calabash也从我们的待选list中删除。

四、最后的抉择

经过三轮筛选,目前摆在我们面前的有两个选择,Appium && Macaca,经过一段时间的对比调研,我们最终选择了Macaca,主要考虑因素如下:

  1. 周边工具支持

    相对Appium,Macaca提供了更加全面的周边工具支持,这其中包含可持续集成平台Reliable,元素查找工具app-inspector,脚本录制工具UI-Recorder等。

    Reliable持续集成平台可以帮助我们进行用例的管理以及任务的调度,对于UI自动化,只有当他成为一种规范化的程式定期的触发与执行,这样才能发挥他的作用,因此,一个持续集成系统对于自动化的长期发展是必不可少的,而Appium并没有提供这套系统。目前外卖团队一直使用基于Jenkins的CI。而对于无CI的团队来讲,这意味着需要从无到有的搭建自己的一套持续集成环境,这个投入无疑也是巨大的。

    app-inspector 元素查找工具,极大的方便了控件的查找以及定位。

    UI-Recorder脚本录制工具可以快速的通过录制得到脚本,方便新手入门。

    具体的使用可以参考官方网站,都有详细的介绍。

  2. 轻量

    从功能上来讲,Appium较Macaca是有优势的,Appium已经发展了多年,积累了很多经验,但是也造成了一些尾大不掉的毛病。以对安卓API版本的支持为例,Appium支持所有的安卓API版本,而Macaca只支持API>17(相当于Android4.2系统)的版本,这个跟两者的底层原理有关,Macaca对于安卓的支持是基于安卓sdk的UIAutomator框架,而这个框架是从API 17开始支持的,Appium从最早的安卓开始,对于API 17以上的版本,Appium与Macaca一样是基于UIAutomator的,对于API 17以下的版本,Appium则基于老的instrument,对于这部分的支持,还引入了Selendroid。但是从应用的角度讲,Android7已经发行,4.2系统以下的设备占比不大,我们不希望为了支持这部分少量的机型而增加自己在自动化上的工作量。简单来讲,大而全的并不一定是最好的,关键是找到适合自己的。

  3. 社区活跃,中文文档丰富

    Macaca是由阿里集团开源的框架,官方网站提供了中文版以及英文版双语文档,虽然对于开发者而言,阅读英文文档的能力是必须的,但是中文文档的提供无疑能帮助很多基础相对薄弱的同学快速入门。此外,Macaca团队还提供了用于技术交流的微信群以及钉钉群,当遇到问题的时候可以方便的联系到主创团队的相关同学,这无疑也能给大家带来很大的方便。

  4. 平台更丰富

    虽然Macaca和Appium同时都支持PC与移动端,但是Macaca新增了对于Electron应用的支持,这个是其他框架都不具备的。

  5. API的统一性

    研究过Appium的官方API,以java-client为例,针对iOS和安卓,控件以及Driver等类别都根据平台不同而不一样,对于控件,有AndroidElement,IOSElement,对于Driver,有AndroidDriver,IOSDriver,如果我们的用例要支持多平台,就需要处理多种平台不一致性,但Macaca从底层上就没有区分iOS与安卓,基本上除了各自系统特有的几个API以外都可以通过一个统一的API支持,这就方便了很多。

特别说明

虽然我们从开始就排除了Selenium,但是必须要特别说明的一点不管是Macaca还是Appium,他们在一定程度上都借鉴了Selenium的很多内容,包括对webdriver协议的支持,selenium grid的方式支持多机并行等,因此,对UI自动化感兴趣的同学,有必要先去了解一下Selenium的基础原理,这对于理解Macaca与Appium的底层原理都有很重要的帮助。

参考资料:

  1. Macaca官网
  2. Appium testerHome中文文档
  3. Selenium官网
  4. Sendroid官网
  5. Robotium官网
  6. PhantomJs官网
  7. Calabash官网
  8. KARMA官网
相关文章
|
6月前
|
Docker 容器
启航kp OpenHarmony环境搭建
启航kp OpenHarmony环境搭建
105 0
|
API iOS开发 MacOS
关于electron升级调研的心得笔记
关于electron升级调研的心得笔记
412 0
关于electron升级调研的心得笔记
|
Kubernetes 监控 JavaScript
官宣:SkyWalking NodeJS 0.5.1 补丁版发布!
官宣:SkyWalking NodeJS 0.5.1 补丁版发布!
224 0
官宣:SkyWalking NodeJS 0.5.1 补丁版发布!
|
SQL 数据可视化 BI
诸多改进!Superset 1.2.0 正式发布!
Apache Superset 是一个现代的、企业级的轻量BI平台,提供了大量数据可视化组件。 距离superset上一个版本发布已经过了近三个月的时间,我们终于等到了1.2.0版本。 之前就曾提到过Superset在不断增强与 Apache ECharts的整合。此版本继续加强这方面的改进,并且还带来了大量用户体验改进、API 改进、错误修复以及先前版本中包含的实验性功能的持续开发。
299 0
诸多改进!Superset 1.2.0 正式发布!
|
自然语言处理 JavaScript Java
面向用户端软件的测试解决方案Macaca
提供了自动化驱动,环境配套,周边工具,集成方案,旨在解决终端上的测试、自动化、性能等方面的问题。
面向用户端软件的测试解决方案Macaca
|
分布式计算 MaxCompute BI
【转载】时隔一年多,我又用起了 Superset
去年 6 月份在流利说提离职后,leader 问我为什么要走。我说,流利说有很健全的数据处理基础设施,但这不是所有的公司都会有的条件,所以我想看看在一个基建不全的创业公司我是否也可以像现在一样做的好。
17508 1
|
前端开发 JavaScript 开发者
[译] 2019 前端工具调研
自从去年结果公布,我们使用前端工具的习惯发生了什么变化?
627 0
|
Web App开发 应用服务中间件 网络安全