UI自动化框架调研-番外篇

简介: ## 导语 前面写了两篇文章介绍了个人基于Macaca在UI自动化上的实践心得,那我们为什么会选择了Macaca呢,这篇文章将简单介绍一下我们选择Macaca的原因。 ### 有哪些可用的UI自动化框架? ![frameworks](http://ww4.sinaimg.cn/bmiddle/6b65a607gw1fahf3bu1jfj20pe0gn75b.jpg) #

导语

前面写了两篇文章介绍了个人基于Macaca在UI自动化上的实践心得,那我们为什么会选择了Macaca呢,这篇文章将简单介绍一下我们选择Macaca的原因。

有哪些可用的UI自动化框架?

frameworks

他们的区别在哪里?

compare

我们是如何选择的?

条件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并没有提供这套系统,这意味着我们需要从无到有的搭建自己的一套持续集成环境,这个投入无疑也是巨大的。
    
    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应用的支持,这个是其他框架都不具备的,虽然作为一个Node.js小白我没有接触过相关的应用,但是相信对Electron的开发者以及测试同学来说,这是一个不错的选择。
    
  5. API的统一性

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

参考资料:

  1. Macaca官网
  2. Appium testerHome中文文档
  3. Selenium官网
  4. Sendroid官网
  5. Robotium官网
  6. PhantomJs官网
  7. Calabash官网
  8. KARMA官网

写在后面

上面总结了一下自己在调研并选择UI自动化框架中的一些思考,希望能给处于UI自动化调研初期的同学们一些帮助,其中很多选择是出于自身业务的需要,仅供参考,希望大家能结合自身业务的需要,找到适合自己的UI自动化框架。个人水平有限,以上观点有不对的地方还请大家多多指正与包涵。

目录
相关文章
|
7天前
|
存储 JavaScript 开发者
探索鸿蒙新世界:ArkUI框架实战指南,解锁HarmonyOS应用UI设计的无限可能!
【10月更文挑战第19天】ArkUI框架是华为鸿蒙系统中用于开发用户界面的核心工具,支持ArkTS和eTS两种开发语言。本文介绍了ArkUI的基本概念、组件使用、布局管理和状态管理,通过示例代码帮助开发者轻松构建美观、高效的跨设备UI。
29 3
|
10天前
|
人工智能 安全 决策智能
OpenAI推出实验性“Swarm”框架,引发关于AI驱动自动化的争论
OpenAI推出实验性“Swarm”框架,引发关于AI驱动自动化的争论
|
2天前
|
监控 安全 jenkins
探索软件测试的奥秘:自动化测试框架的搭建与实践
【10月更文挑战第24天】在软件开发的海洋里,测试是确保航行安全的灯塔。本文将带领读者揭开软件测试的神秘面纱,深入探讨如何从零开始搭建一个自动化测试框架,并配以代码示例。我们将一起航行在自动化测试的浪潮之上,体验从理论到实践的转变,最终达到提高测试效率和质量的彼岸。
|
5天前
|
Web App开发 敏捷开发 存储
自动化测试框架的设计与实现
【10月更文挑战第20天】在软件开发的快节奏时代,自动化测试成为确保产品质量和提升开发效率的关键工具。本文将介绍如何设计并实现一个高效的自动化测试框架,涵盖从需求分析到框架搭建、脚本编写直至维护优化的全过程。通过实例演示,我们将探索如何利用该框架简化测试流程,提高测试覆盖率和准确性。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
5天前
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
12 2
|
14天前
|
缓存 测试技术 C#
使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题
【10月更文挑战第20天】本文介绍了使用 Radzen Blazor 组件库开发基于 ABP 框架的炫酷 UI 主题的步骤。从准备工作、引入组件库、设计主题、集成到 ABP 框架,再到优化和调试,详细讲解了每个环节的关键点和注意事项。通过这些步骤,你可以打造出高性能、高颜值的应用程序界面。
|
20天前
|
前端开发 开发者 UED
UI 框架:nav-ui&uni-ui&vant
本文档介绍了`nav-ui`、`uni-ui`和`vant`三个UI库的基本使用方法,包括图标、表格和树的使用示例,以及如何在项目中安装和配置这些UI组件。对于`nav-ui`,详细说明了图标组件的安装与使用,包括本地图标和第三方图标库的集成方式。`uni-ui`部分则重点讲解了CSS的使用方法。最后,`vant`部分提供了从项目创建到组件安装的具体步骤,以及如何将下载的组件正确地集成到项目中。
|
20天前
|
前端开发 JavaScript 开发者
UI 框架:element-ui(二)
在当今快速发展的前端开发领域,用户界面的设计和交互体验日益成为软件成功的关键因素之一。Element UI,作为一款基于Vue.js的组件库,以其精美的界面和丰富的功能受到了广泛的关注与应用。它为开发者提供了一整套高质量的组件,帮助他们快速构建具有现代感的应用程序。 Element UI不仅注重美观的设计,还提供了良好的文档支持和社区活跃度,使得开发者能够轻松上手并解决实施过程中的各种问题。在这篇文章中,我们将深入探讨Element UI的基本特点、安装步骤,以及如何利用其强大的组件系统高效地构建用户友好的界面。无论您是初学者还是有经验的开发者,这篇文章都将为您开辟一条通向更高效开发的道路。
|
24天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
21天前
|
Web App开发 设计模式 测试技术
自动化测试框架的搭建与实践
【10月更文挑战第5天】本文将引导你理解自动化测试框架的重要性,并通过实际操作案例,展示如何从零开始搭建一个自动化测试框架。文章不仅涵盖理论,还提供具体的代码示例和操作步骤,确保读者能够获得实用技能,提升软件质量保障的效率和效果。