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自动化框架。个人水平有限,以上观点有不对的地方还请大家多多指正与包涵。

目录
相关文章
|
8天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
32 6
|
8天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
29 4
|
7天前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
21 1
|
13天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
17天前
|
Rust JavaScript 前端开发
ES6 awaitRust UI 框架
ES6 awaitRust UI 框架
|
17天前
|
前端开发 JavaScript
electron ui框架
Electron是一个使用JavaScript, HTML和CSS等前端技术构建跨平台桌面应用程序的框架。
41 0
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
55 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4天前
|
jenkins 测试技术 持续交付
自动化测试框架的构建与优化:提升软件交付效率的关键####
本文深入探讨了自动化测试框架的核心价值,通过对比传统手工测试方法的局限性,揭示了自动化测试在现代软件开发生命周期中的重要性。不同于常规摘要仅概述内容,本部分强调了自动化测试如何显著提高测试覆盖率、缩短测试周期、降低人力成本,并促进持续集成/持续部署(CI/CD)流程的实施,最终实现软件质量和开发效率的双重飞跃。通过具体案例分析,展示了从零开始构建自动化测试框架的策略与最佳实践,包括选择合适的工具、设计高效的测试用例结构、以及如何进行性能调优等关键步骤。此外,还讨论了在实施过程中可能遇到的挑战及应对策略,为读者提供了一套可操作的优化指南。 ####
|
13天前
|
测试技术 API Android开发
探索软件测试中的自动化框架选择与实践####
本文深入探讨了软件测试领域内,面对众多自动化测试框架时,如何依据项目特性和团队需求做出明智选择,并分享了实践中的有效策略与技巧。不同于传统摘要的概述方式,本文将直接以一段实践指南的形式,简述在选择自动化测试框架时应考虑的核心要素及推荐路径,旨在为读者提供即时可用的参考。 ####
|
17天前
|
测试技术 Android开发 UED
探索软件测试中的自动化框架选择
【10月更文挑战第29天】 在软件开发的复杂过程中,测试环节扮演着至关重要的角色。本文将深入探讨自动化测试框架的选择,分析不同框架的特点和适用场景,旨在为软件开发团队提供决策支持。通过对比主流自动化测试工具的优势与局限,我们将揭示如何根据项目需求和团队技能来选择最合适的自动化测试解决方案。此外,文章还将讨论自动化测试实施过程中的关键考虑因素,包括成本效益分析、维护难度和扩展性等,确保读者能够全面理解自动化测试框架选择的重要性。
32 1

热门文章

最新文章

下一篇
无影云桌面