隆重推荐(Android 和 iOS)UI 自动化工具—Maestro

文章目录


前言

当前移动 UI 自动化工具的实际效能与预期存在显著差距,团队推行 UI 测试的核心诉求,是在保障现有功能稳定性的前提下加速迭代进程 ------ 但实际落地中,测试用例的高失败率、基础设施的运维负担、测试脚本的脆弱性,以及自动化框架的技术复杂性,共同形成了效率瓶颈,导致开发节奏不升反降。


一、为什么选择 Maestro?

Maestro 借鉴了 Appium、Espresso、UIAutomator 和 XCTest 等前辈工具的经验教训,在摒弃复杂性的同时保留核心优势,并实现了多项根本性创新。

以下是我认为选择 Maestro 作为移动 UI 测试的核心原因:

  1. 原生抗干扰能力

针对移动应用与设备的天然不稳定性,Maestro 底层内置动态容错机制 ------ 自动适配 UI 元素位置偏移、点击失败等异常场景,无需人工预设兜底逻辑。

  1. 智能延迟管理

彻底告别测试脚本中频繁的 sleep() 硬编码。Maestro 基于网络加载、动画渲染等场景特征,自动执行动态等待(且严格遵循超时控制),兼顾效率与稳定性。

  1. 极速迭代体验

采用解释型执行机制,测试脚本无需编译即可运行。搭配实时文件监控功能,代码修改后可立即触发重跑,让测试迭代效率提升数倍。

  1. 声明式语法设计

仅需一个简洁的 YAML 文件即可完成测试逻辑定义,语法兼具可读性与强大表现力,大幅降低跨团队协作成本。

  1. 极简部署架构

作为单一二进制文件,Maestro 可在任意环境中即装即用,彻底摆脱传统工具复杂的依赖配置与环境搭建流程。

  1. 全平台无缝兼容

同时支持 iOS 与 Android 系统,并完美适配 React Native、Flutter、WebView 及纯原生应用,一套脚本即可覆盖全场景测试需求。

二、使用步骤

1.安装(Windows)

1.下载最新的 Maestro 版本

https://github.com/mobile-dev-inc/maestro/releases/latest/download/maestro.zip

2.解压 Maestro zip 文件

将上一步下载的 zip 文件解压到任意位置。例如:

C:\Users\maestro

3.更新 PATH 环境变量

将包含该maestro\bin文件夹添加到环境变量。

4.连接到设备使用

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

Maestro使用开源项目dabd绕过 ADB 服务器,直接与设备上的 ADB 守护进程端口对话,从而实现简化的架构以及与 Android 模拟器更稳健的通信。

dadb 的连接逻辑,如下图

macOS和Linux安装请参考

https://docs.maestro.dev/getting-started/installing-maestro

2.运行示例

使用 download-samples 命令下载示例:

maestro download-samples

这会将内置示例 Flows 和应用程序下载到samples/当前目录中的文件夹中。

安装示例应用程序,然后使用命令运行:

c 复制代码
安卓
cd ./samples
adb install sample.apk
maestro test android-flow.yaml
c 复制代码
iOS
cd ./samples
unzip sample.zip
xcrun simctl install Booted Wikipedia.app
maestro test ios-flow.yaml

官方给的案例是wiki,所以里面执行步骤也就只到打开app那一步骤

c 复制代码
appId: org.wikipedia
tags:
  - android
  - passing
---
- launchApp

我自己写了一个简单的

c 复制代码
appId: com.yihu.doctor
---
- launchApp
- tapOn: "手机号登录"
- tapOn: "其他手机号登录"
- tapOn: "密码登录"
- tapOn: "请输入手机号"

看看执行结果日志:

好奇用的是什么AI,去查看了源码


三、Maestro Studio (重点)

目前已有许多在移动设备上的无代码自动化,都面临着相同的关键问题:

当发生变化时需要重新录制整个测试,难以与功能变化保持同步,难以编辑/调整记录的测试,很难将流程作为 CI 的一部分运行

Maestro Studio就是可维护的无代码移动 UI 自动化解决方案。

轻松编辑测试

Maestro Studio 可以在本地移动设备(iOS 模拟器 / Android 仿真器 / 真机)上运行。这让您可以轻松地与设备交互以进行调试或设置测试用例。

Maestro Studio 还可以显示与给定元素交互的方式列表。右键单击设备屏幕即可查看可复制到 Flow 的示例代码片段列表。

四、价格

总结

优点:

极简语法与低学习成本 Maestro 采用声明式 YAML

语法定义测试逻辑,无需编写复杂代码,测试用例的可读性和维护性显著提升。即使是非技术人员也能快速上手,降低了跨团队协作的沟通成本。

缺点(我遇到的):

1、真实设备兼容性比较差,比如我的手机Redmi K60,就无法调用起app

2、在处理 React Native 与原生模块的交互时,可能出现元素识别延迟或出错问题

3、在执行测试用例时,偶尔会出现崩溃的情况 IndexOutOfBoundsException

4、每次在Android 真机运行测试时,dev.mobile.maestro.test 的软件包都会被安装,测试完成后会被卸载。

如果你在使用过程中还发现其他问题,先去https://github.com/mobile-dev-inc/Maestro/issues看看,是否已被提交

相关推荐
lichao8904272 小时前
谈谈未来iOS越狱或巨魔是否会消失
ios
uwvwko5 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
向宇it6 小时前
【unity游戏开发——编辑器扩展】使用MenuItem自定义菜单栏拓展
开发语言·ui·unity·c#·编辑器·游戏引擎
LittleLoveBoy7 小时前
踩坑:uiautomatorviewer.bat 打不开
android
居然是阿宋8 小时前
Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
android
CGG9211 小时前
【单例模式】
android·java·单例模式
kp0000011 小时前
PHP弱类型安全漏洞解析与防范指南
android·开发语言·安全·web安全·php·漏洞
bao_lanlan14 小时前
兰亭妙微:用系统化思维重构智能座舱 UI 体验
ui·设计模式·信息可视化·人机交互·交互·ux·外观模式
夜松云16 小时前
Qt信号槽机制与UI设计完全指南:从基础原理到实战应用
开发语言·qt·ui·qt designer·布局管理·参数传递·qt信号槽