无线自动化测试方案调研

背景

近期调研了一些自动化测试方案,整理了一下,本篇大体结构如下:

  • 目标
  • 选择
  • 方案对比
  • Macaca介绍
  • 实践和展望

一、目标

  • 在版本快速迭代下,实现核心功能的UI自动化测试,释放测试人力资源。
  • 通过持续集成的自动化测试,尽早暴露问题和风险。
  • 实现性能的自动化测试。

二、选择

  • 由支付宝团队开源并维护的Macaca无线自动化测试方案,入手简单,学习成本低,维护成本适中,社区活跃度高。对比其他技术方案是我们目前的最佳选择。

三、方案对比

对比结果:

在多端支持上Appium和Macaca做的最好。另外相对于Appium,Macaca还有以下优势:

  1. Macaca提供了更全面的工具支持,包括持续集成平台Reliable,元素查找器App-inspector,脚本录制工具UI Recorder等。
  2. Appium对于UI元素和Drive等类别API均不一样,Macaca从底层就屏蔽了各平台区别,除了系统特有的API外,可以使用统一的API实现,降低了学习和维护成本。

综合以上因素分析,Macaca整体上更为优秀,是我们现阶段最好的选择。

四、Macaca介绍

Macaca 是由支付宝开源并维护的面向多端的自动化测试方案。(地址:https://macacajs.com

  • 跨平台:支持在移动端和PC端的Native, Hybrid, 移动端web应用的自动测试。
  • 支持真机:支持真机和模拟器
  • 更加容易:支持多种语言编写脚本,提供单步调试,元素查看器,录制回放等周边工具。
  • 提供CI方案:提供持续集成方案及持续集成平台的私有部署方案。

(一)Macaca架构设计

(二)Macaca用例执行流程

(三)元素查看器 app-inspector

  • Android&IOS统一的元素查看器。通过元素查看器可以快速定位不同平台的界面元素,便于测试人员在不熟悉平台业务开发的情况下进行用例的编写,降低实现用例成本。

(四)元素查看器 App-inspector 原理

  1. 初始化时启动手机设备上的 UIAutomatorWD 或 XCTestWD 服务
  2. 向 UIAutomatorWD 或 XCTestWD 先后发送 /source 和 /screenshot 请求
  3. 将每次时序获取的截图和 Hierarchy 做映射,渲染到用户浏览器

  • 在iOS上基于XCTest封装为XCTestWD在Android基于UI Automator封装为UIAutomatorWD
  • iOS-Simulator,iOS-utils,Macaca-adb用于设备检查和日志输入
  • 跨多端,同时支持两个平台,避免了维护两套环境的困窘。
  • 完全WEB化,实体是一个 WEB 服务,方便各处部署,只要有标准浏览器即可使用。

(五)基本录制器 UI Recorder

  • 可以通过录制获得脚本,降低编写用例的成本。
  • 录制工具适用于功能稳定的场景。自动生成的用例可维护性较低,无法模块化,二次维护成本较高,只能重新录制。

(六)基本录制器 UI Recorder原理

  1. 启动 Macaca Server,提供 Web Driver 服务
  2. UIRecorder 在启动时会启动 ChromeDriver 服务
  3. 并加载内置的 Chrome 扩展程序

  •  UIRecorder 在操作层和 WebDriver 服务端做了良好的解耦设计, PC 端重度依赖 Chrome Extension 的事件拦截,移动端直接则与 Macaca Server 通信。
  • Drag的处理较为复杂,需要通过监听判断是单纯的点击还是长按,然后通过页面偏移的事件监听来实现

(七)持续集成平台 - Reliable

  • 基于Node.js 实现的分布式持续集成服务,提供可视化数据报表
  • 结构分为reliable-master和reliable-slave,可以用三种模式部署,为单点模式,集群模式和众包模式
  • 集群负载,合理调配
  • 提供插件机制,易扩展
  • 部署简单,可以一键部署
  • 便于接入 Gitlab、Github 等社区化系统

(八)测试报告输出

  • Macaca提供了自定义报告器,完全可以根据业务的需求自定义需要的报告输出格式,同时可以利用钉钉,旺旺等社交工具进行报告自动通知,主要帮助开发和测试人员快速定位和解决问题
  • Reliable可持续集成平台则提供了可视化数据报表,可以帮助团队leader迅速了解大盘情况

五、实践和展望

(一)实践

实践TIPS:

1、对于UI自动化测试,Macaca保证在UI元素找到的情况下才会执行逻辑案例,对于无法找到UI元素则会出错,用例编写人员可以通过app-inspector再次查找并调试修改用例脚本。

2、对于UI自动化用例的场景,需要有侧重点,用例应当集中:

  • UI 的文本、图片显示正确性,不同场景下文案是不一致的
  • UI 的交互逻辑以及功能模块正确性测试,如iOS和Android快速返回列表头部
  • 链路测试正确性,即不同场景不同页面跳转是否正常

3、开发人员开发中也需要注意,帮助用例编写人员顺利编写和完成用例,比如UI元素,iOS开发应该注意accessibility Id的赋值,而Android开发则应该注意resource Id的赋值

(二)展望

对于未来发展,由于Macaca是开源,我们还可以考虑进行完善和扩展:

  • 在目前Macaca完善的统一API机制和脚本录制工具的基础上,我们可以考虑完全自动化脚本编写的可能,仅仅操作就完成用例的编写。
  • Macaca目前UI元素的处理上仍需要开发介入,帮助埋入各自平台UI元素标签,因此可以考虑使用天猫的全链路等方案,直接自动埋入测试标签。
  • 结合Macaca的计算机视觉解决方案,持续优化相关开源库算法。拓展可测试场景。

非本人授权,禁止转载,否则将保留追究法律责任的权利!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值