Macaca 面向多端的自动化测试解决方案

简介: Macaca 面向多端的自动化测试解决方案

背景


对于基于 UI 的功能测试的需求其实一直存在,理由其实很简单,不想一直让人去做重复机械的事情,而且可靠性完全是靠人力的堆积产生。然而目前部门的功能测试工作依然主要是依靠人工来完成,从我们公司的实践来看我觉得有几个方面的影响因素:


  • 客户端APP已经实现模块化开发,而且外卖平台移动端的开发迭代流程正在进行改造,目标是从固定每三周一个迭代改造为每周一个发布窗口,版本迭代的提速,设备的碎片化,都给测试工作带来巨大的挑战。
  • 由于版本迭代周期越来越短,而且UI变动比较频繁,因此测试编写测试代码的积极性不是很高,同时由于测试代码的可重复利用性差,导致测试脚本的编写成本和维护成本偏高 。
  • 部分测试人员的编码能力不是很强。由于大部分测试人员可能并没有过多的开发经验,所以在编写测试代码时并不能很顺畅的完成自己想要的效果,这样也会导致测试代码项目的推广阻力会比较大。


如何在有限的时间内,追求尽可能高的产品质量?录放平台是我们推出的解决方案。它支持本地化UI脚本录制,集中式脚本管理,分布式脚本执行。业务测试只要开启我们的服务,就可以在业务测试的过程中,自动生成对Android、iOS和Web页面的自动化脚本,而自动化脚本在批量设备上的回放,可以极大提高关键路径的覆盖率,提升兼容性测试的效率,从而可以把业务测试从冗长重复的步骤中解放出来,把精力放到边界,异常等可以给我们产品带来更多提升的地方。


通过不断地寻找,不断地对比,最终我们将目标聚焦在阿里巴巴开源解决方案Macaca上。


简介


Macaca是一套完整的自动化测试解决方案,它的三个特性对我们极具吸引力:


1、周边工具支持(Reliable、app-inspector、UI-Recorder等)

2、它是一个轻量化的开源项目

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

4、支持JS、Python、Java编写自动化脚本

5、API比较统一


技术栈


在落地Macaca之前,需要先部署下列技术栈:

1、Node.js用于部署Macaca

2、Docker用于容器化Macaca的部署环境

3、Gitlab用于存储代码和测试用例

4、Slack用于团队的沟通协调

5、Python用于部署本地Agent


使用流程


业务测试人员通过在本地录制好测试脚本,然后上传到脚本管理平台,这些测试脚本将会根据业务模块和版本分类管理。使用者在自己的电脑上安装Agent,然后连接测试设备,Agent会将本机的ip、port和设备信息上传注册到录放平台。


新建一个task执行脚本回放操作,可以指定在哪些机器上回放也可以推送到STF手机管理平台批量回放,测试用例运行之后,会有两种情况发生:如果成功,则可以直接查看生成报告;否则会通过Slack或邮件通知开发人员测试失败,重新修改代码。


另外Macaca也提供了相应的分布式持续集成框架Reliable来进行任务管理。


Reliable


下图是Reliable的界面,通过Reliable用户可以查看测试用例和测试结果;并且Reliable天生与Macaca无缝衔接。


微信图片_20220515211833.jpg


微信图片_20220515211837.jpg


微信图片_20220515211841.jpg


Inspector


Macaca中还提供了Inspector工具供用户直观、方便查找到想要选中的元素。图中右侧一栏提供的是XPS、ID、Name数据,用户通过Inspector工具寻找目标界面的元素。


微信图片_20220515211844.jpg


Debug


我们选择Visual Studio Code作为常用的IDE因为它能够轻量地、方便地支持使用者Debug,用户可以根据自己喜好选择相应地调试工具。


微信图片_20220515211849.jpg


UI Recorder


下图是简单的登录测试用例:输入用户名和密码,然后点击登录按钮。UI-Recorder脚本录制工具可以快速的通过录制得到脚本,方便新手入门。


微信图片_20220515211852.jpg


测试报告


最终的测试结果需要与饿了么的质量平台对接(Macaca产生的测试报告、测试结果数据在导入饿了么质量平台前需要进行数据转换),形成完整的测试流程。


微信图片_20220515211856.jpg


上面总结了一下自己在调研并选择UI自动化框架中的一些思考,希望能给处于UI自动化调研初期的同学们一些帮助,其中很多选择是出于自身业务的需要,仅供参考,希望大家能结合自身业务的需要,找到适合自己的UI自动化框架。另外如果有对此框架感兴趣的同学欢迎一起学习交流。

相关文章
|
20天前
|
机器学习/深度学习 监控 算法
车辆违停检测:基于计算机视觉与深度学习的自动化解决方案
随着智能交通技术的发展,传统人工交通执法方式已难以满足现代城市需求,尤其是在违法停车监控与处罚方面。本文介绍了一种基于计算机视觉和深度学习的车辆违停检测系统,该系统能自动监测、识别并报警违法停车行为,大幅提高交通管理效率,降低人力成本。通过使用YOLO算法进行车辆检测,结合区域分析判断车辆是否处于禁停区,实现了从车辆识别到违停判定的全流程自动化。此系统不仅提升了交通管理的智能化水平,也为维护城市交通秩序提供了技术支持。
|
23天前
|
运维 监控 关系型数据库
数据库管理中的自动化运维:挑战与解决方案
数据库管理中的自动化运维:挑战与解决方案
|
2月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
2月前
|
数据采集 SQL 运维
企业出海WAS安全自动化解决方案
企业出海WAS安全自动化解决方案
|
4月前
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
353 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
4月前
|
运维 测试技术 持续交付
解决方案 - 自动化单元测试
解决方案 - 自动化单元测试
46 1
|
5月前
|
测试技术 持续交付 微服务
现代软件测试中的自动化挑战与解决方案
在现代软件开发中,自动化测试已经成为提高效率和质量的重要手段。然而,面对不断增长和复杂化的软件项目,自动化测试也面临诸多挑战。本文探讨了当前软件测试中的自动化挑战,并提出了一些解决方案,以帮助开发团队更好地应对这些挑战,提升测试效率和质量。 【7月更文挑战第11天】
51 1
|
6月前
|
存储 测试技术 Python
记一次线上安全测试中误用父类属性导致数据污染的解决方案
在线上安全测试的过程中,会使用 Nmap 进行端口扫描,为了提升端口扫描的效率,扫描策略通常是检测常用端口是否处于开放状态,并在父类中使用名为 all_open_ports 的属性来记录这些开放的端口。 在后续的测试过程中,需要检查所涉及的端口是否包含在 all_open_ports 中。如果不存在,就需要进一步对这些端口进行开放检测。如果端口的检测结果是开放的,测试将继续进行并将这些端口记录到 all_open_ports 中,以便在下次遇到相同端口时无需重复检测。 然而,由于安全测试是多线程进行的,某些情况下可以将 all_open_ports 理解为共享变量,这导致当两个不同的测试环境同
|
6月前
|
敏捷开发 测试技术 持续交付
敏捷开发中的软件测试策略:挑战与解决方案
随着敏捷开发方法在软件工程领域的普及,传统的软件测试流程面临着前所未有的挑战。本文将探讨敏捷开发环境下软件测试所遇到的主要问题,并提出相应的解决策略,以期为软件测试人员和项目管理者提供实用的指导和参考。
101 0
|
7月前
|
安全 数据管理 测试技术
网络安全与信息安全:防范漏洞、加强加密与提升安全意识深入探索自动化测试框架的设计原则与实践应用化测试解决方案。文章不仅涵盖了框架选择的标准,还详细阐述了如何根据项目需求定制测试流程,以及如何利用持续集成工具实现测试的自动触发和结果反馈。最后,文中还将讨论测试数据管理、测试用例优化及团队协作等关键问题,为读者提供全面的自动化测试框架设计与实施指南。
【5月更文挑战第27天】 在数字化时代,网络安全与信息安全已成为维护国家安全、企业利益和个人隐私的重要环节。本文旨在分享关于网络安全漏洞的识别与防范、加密技术的应用以及提升安全意识的重要性。通过对这些方面的深入探讨,我们希望能为读者提供一些实用的建议和策略,以应对日益严峻的网络安全挑战。 【5月更文挑战第27天】 在软件开发周期中,自动化测试作为保障软件质量的关键步骤,其重要性日益凸显。本文旨在剖析自动化测试框架设计的核心原则,并结合具体案例探讨其在实际应用中的执行策略。通过对比分析不同测试框架的优缺点,我们提出一套高效、可扩展且易于维护的自动