Maestro:7.4K Star!告别千行测试代码,20行配置搞定跨平台全流程自动化测试

569 阅读6分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🔥 "测试工程师集体转行?这个框架让UI测试自己写脚本:YAML一键运行,通宵修BUG成历史"

大家好,我是蚝油菜花。凌晨两点盯着满屏Failed Tests的你,是否还在经历这些自动化测试噩梦——

  • 👉 元素定位符稍改就引发上百条用例雪崩
  • 👉 网络延迟导致断言失败,sleep(10)都救不回来
  • 👉 测试脚本维护成本比开发新功能还高...

现在,Maestro测试框架用三项逆天技能重构自动化测试认知:

  • 钢铁容错胃:UI元素位移50%照样精准点击,网络卡顿自动重试到天荒地老
  • YAML即代码:告别千行测试代码,20行配置搞定跨平台全流程测试
  • 热重载黑科技:保存配置文件的瞬间,自动触发全量测试回归

看看这些真实案例——某大厂测试团队用它将用例稳定性从67%提升到98%,还有开发者边喝咖啡边看框架自动修复因UI改版失效的300条用例。你的测试报告,准备好迎接零失败率的曙光了吗?

🚀 快速阅读

Maestro 是一款开源的端到端自动化测试框架,专为移动和 Web 应用设计。

  1. 核心功能:支持跨平台测试,内置容错机制和自动等待功能,提升测试稳定性。
  2. 技术原理:基于事件驱动的交互模型和解释执行的测试脚本,实现高效测试。

Maestro 是什么

Maestro-demo

Maestro 是一款专为移动和 Web 应用设计的端到端自动化测试框架。它通过内置的容错能力和延迟容忍机制,解决了传统测试中常见的不稳定性和等待问题。Maestro 基于声明式语法,支持在 YAML 文件中定义测试,无需编译即可快速迭代。

Maestro 的设计简单易用,采用单二进制文件的形式,使得测试环境的搭建变得轻松。此外,Maestro 提供丰富的文档和社区支持,非常适合希望高效进行 UI 测试的开发团队。

Maestro 的主要功能

Maestro-twitter_continuous_v3_fast

  • 端到端自动化测试:对移动和 Web 应用进行完整的端到端测试,覆盖从用户界面交互到后端逻辑的全流程。
  • 内置容错机制:容忍 UI 元素的不稳定性(例如元素位置变化或点击失败),自动处理问题,减少测试中的随机性错误。
  • 自动等待延迟:自动等待页面加载或网络请求完成,无需手动添加 sleep() 调用,提高测试的效率和稳定性。
  • 快速迭代能力:测试脚本用 YAML 文件形式编写,无需编译即可运行。实时监控测试文件的变化,自动重新运行测试。
  • 跨平台支持:适用于多种移动和 Web 应用,支持 iOS、Android 和 Web 环境。

Maestro 的技术原理

  • 基于事件驱动的交互模型:模拟用户与应用的交互(如点击、滑动、输入等)执行测试。基于事件驱动的方式与应用进行通信,确保测试的实时性和准确性。
  • 自动等待与同步机制:内置智能等待机制,检测应用的加载状态和网络请求的完成情况。基于动态监测 UI 元素的状态,自动调整测试的执行节奏,避免因等待时间不足而导致的测试失败。
  • 容错与重试机制:在测试过程中,自动检测到可能的错误(如元素未找到或操作失败),尝试重新执行操作或调整策略,提高测试的稳定性。
  • 解释执行的测试脚本:测试脚本用 YAML 格式编写,基于解释器直接执行脚本,无需编译。让测试的编写和修改更加灵活,同时支持实时监控和动态更新。
  • 跨平台兼容性:基于抽象层与不同平台的自动化工具(如 iOS 的 XCUITest、Android 的 Espresso 等)进行交互,实现跨平台的测试支持。

如何运行 Maestro

Maestro 是一个强大的工具,用于自动化测试移动应用程序。下面将指导您完成 Maestro 的安装和运行测试的详细步骤,并提供一个简单的可执行程序示例。

1. 安装 Maestro

安装 CLI 工具

在 macOS、Linux 或 Windows (WSL) 上,可以通过以下命令安装 Maestro:

curl -fsSL "https://get.maestro.mobile.dev" | bash

如果您使用的是 macOS,也可以通过 Homebrew 安装:

brew tap mobile-dev-inc/tap
brew install maestro

升级 CLI 工具(可选)

如果需要升级 Maestro,只需重新运行安装命令:

curl -fsSL "https://get.maestro.mobile.dev" | bash

安装特定版本的 Maestro(可选)

如果需要安装特定版本的 Maestro,可以通过设置环境变量 MAESTRO_VERSION 来实现:

export MAESTRO_VERSION={version}; curl -Ls "https://get.maestro.mobile.dev" | bash

您可以从 Maestro 版本列表 中选择合适的版本。

在 Dockerfile 中安装特定版本(可选)

在 Dockerfile 中安装特定版本的 Maestro,可以按照以下步骤操作:

ENV MAESTRO_VERSION {version}
RUN mkdir -p /opt/maestro && \
wget -q -O /tmp/${MAESTRO_VERSION} "https://github.com/mobile-dev-inc/maestro/releases/download/cli-${MAESTRO_VERSION}/maestro.zip" && \
unzip -q /tmp/${MAESTRO_VERSION} -d /opt/ && \
rm /tmp/${MAESTRO_VERSION}
ENV PATH=/opt/maestro/bin:${PATH}

2. 编写第一个测试流

编写 Maestro 测试流只需要创建 YAML 文件和使用基本的 YAML 语法。以下是一个简单的示例:

# flow.yaml

appId: your.app.id
---
- launchApp
- tapOn: "Text on the screen"

代码解释

  1. appId:指定要测试的应用程序的 ID。
  2. launchApp:启动应用程序。
  3. tapOn:在屏幕上找到指定的文本并点击。

确保已启动 Android 模拟器或 iOS 模拟器,并且应用程序已正确安装在选定的设备上。

3. 运行测试流

使用以下命令运行测试流:

maestro test flow.yaml

maestro test 会自动检测并使用本地的模拟器或通过 USB 连接的物理设备。

注意:目前,Maestro 不支持物理 iOS 设备。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦