
摘要:
Google 最近开源了一个很值得测试开发关注的项目——ARTEMIS。
它不是帮你简单生成几段 Appium 脚本,而是让 AI Agent 直接操作 Android 真机或模拟器:理解自然语言测试任务、识别页面、点击控件、跨 App 执行业务流程,还能自动获取截图、Logcat、执行轨迹,并生成测试结果。
更值得关注的是,ARTEMIS 原生支持 MCP,可以直接接入 Antigravity、Codex、Claude Code、Cursor、Windsurf 等 AI 编程环境。
这意味着移动端测试正在从:
人写脚本 → 脚本操作手机
逐渐走向:
人描述测试目标 → Agent 自己规划 → 操作真机 → 分析结果。
一、先看效果:AI 已经可以自己操作 Android 真机
ARTEMIS 官方演示了一个很典型的跨 App 场景。
AI 先在 Google Maps 中规划驾车路线、计算行程时间,然后再自动打开 YouTube,搜索并播放指定歌曲。
整个过程不是提前写死一套 XPath 或坐标脚本,而是 Agent 根据当前手机界面不断判断下一步应该做什么。

这其实已经和传统自动化测试有明显区别。
传统自动化更像:
测试人员
↓
编写脚本
↓
定位元素
↓
执行操作
↓
断言结果
而 ARTEMIS 更像:
测试人员给出目标
↓
AI 理解任务
↓
观察手机页面
↓
决定下一步操作
↓
执行
↓
检查结果
↓
继续执行 / 调整策略
换句话说,测试执行本身开始具备一定的自主决策能力。
二、ARTEMIS 到底是什么?
简单理解:
ARTEMIS 是一套面向 Android 真机自动化的 AI Agent 框架。
你可以直接给它自然语言任务,例如:
打开系统设置,
进入电池页面,
确认当前电量是否正常显示,
同时检查页面有没有异常弹窗。
然后 ARTEMIS 自己完成页面观察、元素定位、点击、滚动、输入以及结果检查。
官方目前重点强调了几个能力:
- 自然语言驱动 Android 自动化
- 跨 App 长流程任务
- Accessibility + OCR + 视觉模型组合定位
- 真机截图和 Logcat 采集
- Flash / Pro 两种执行模式
- MCP 接入 AI IDE
- Bug 自动复现
- 长时间探索性测试
- Python SDK 和 CI/CD 集成
也就是说,它并不是单纯的“手机 Computer Use”。
它已经明显在往:
AI 驱动的移动端测试执行引擎
这个方向发展。
三、真正值得看的,是 Antigravity × ARTEMIS 工作流
如果只是让 AI 自动点击手机,其实并不是最有意思的地方。
ARTEMIS 官方专门展示了一套:
Antigravity × ARTEMIS 自主测试工作流
Antigravity 通过 MCP 调用 ARTEMIS,可以把一句自然语言测试需求,最终转化为:
测试需求
↓
测试计划
↓
真机执行
↓
数据采集
↓
问题诊断
↓
测试报告
完整闭环。
第一步:输入测试需求
首先,测试人员直接在 Antigravity 中描述测试场景以及关注的指标。
不需要先写自动化代码,而是先描述:
我要测什么。

比如你可以告诉 Agent:
测试这个 App 的启动性能。
完成冷启动、登录、首页加载,
记录关键页面加载时间,
同时观察 CPU、内存和异常日志,
最后输出一份测试报告。
这一步实际上对应的是:
Task Dispatch。
也就是任务下发。
第二步:自动生成测试计划
接下来 Antigravity 不会立即开始乱点。
它会先理解目标,然后把任务拆解成测试步骤和执行计划。

例如:
启动 App
↓
等待首页加载
↓
执行登录
↓
进入目标业务页面
↓
记录性能数据
↓
检查异常日志
↓
整理最终结果
这个变化其实非常重要。
因为传统 UI 自动化里面:
测试流程是人提前写进代码里的。
而 Agent 测试里面:
流程可以在运行前由 Agent 根据目标动态生成。
第三步:自主操作真机完成测试
测试计划确定后,ARTEMIS 开始真正操作 Android 设备。

Agent 会:
观察当前页面;
识别目标控件;
点击、输入、滑动;
判断页面有没有变化;
遇到异常重新选择操作策略;
同时采集执行信息。
如果是性能测试场景,还可以结合设备数据进行分析。
所以这一阶段对应的是:
Autonomous Test Execution。
这也是 ARTEMIS 和“AI 生成自动化脚本”最大的区别之一。
它不是:
AI → 写代码 → 人运行
而是:
AI
↓
直接驱动测试设备
↓
执行测试
第四步:生成诊断报告
测试完成以后,Agent 并不是只告诉你:
测试结束。
而是可以继续整理执行过程中的:
- 测试步骤
- 执行结果
- 指标数据
- 截图
- Logcat
- 异常信息
- 原始数据
最终输出结构化测试报告。

这意味着:
测试计划、测试执行、证据采集和测试报告开始被串进同一个 Agent 工作流里。
而不是每一个环节分别使用一套工具。
四、MCP 为什么是这里面很关键的一环?
ARTEMIS 原生提供 MCP Server。
它可以直接接入:
- Antigravity
- Codex
- Claude Code / Claude Desktop
- Cursor
- Windsurf
- VS Code
- Cline / Roo
- OpenClaw
等 AI 开发环境。
这件事情对测试开发影响其实很大。
因为过去我们的研发测试流程一般是:
研发修改代码
↓
编译
↓
测试人员执行
↓
发现 Bug
↓
截图
↓
导出日志
↓
提交 Bug
↓
研发重新定位
接入 MCP 以后,有可能逐渐变成:
Coding Agent 修改代码
↓
构建 APK
↓
安装到 Android 真机
↓
ARTEMIS 执行测试
↓
复现业务流程
↓
获取截图 + Logcat
↓
Agent 分析问题
↓
修改代码
↓
再次验证
于是:
Coding Agent 和 Testing Agent 真正开始连起来了。
这才是我觉得 ARTEMIS 最值得测试开发关注的地方。
五、传统 XPath 不稳定,它是怎么解决的?
做过移动端自动化的人应该都有体验。
真正让人头疼的,经常不是写第一版自动化脚本。
而是维护。
页面改版以后:
XPath 变了。
Resource ID 变了。
控件层级调整了。
分辨率变了。
脚本就可能开始大量报错。
ARTEMIS 的做法并不是彻底抛弃传统 UI 信息,而是组合使用:
Accessibility
+
OCR
+
视觉模型
普通 Android 控件优先使用结构化信息定位。
如果遇到 Flutter、Compose、Canvas 等自绘 UI,则可以继续借助视觉模型进行定位。
所以它的设计思路其实比较工程化:
可以确定性定位
↓
优先使用元素信息
定位不到
↓
再使用视觉理解
仍然存在特殊情况
↓
坐标等方式兜底
而不是所有页面都截图扔给大模型。
这对速度、Token 成本和稳定性都会更友好。
六、ARTEMIS 还有两种执行模式
ARTEMIS 设计了两套不同的执行模式:
Flash 和 Pro。
它们解决的其实是两类完全不同的测试任务。
Flash:适合高频快速执行
Flash 是比较轻量的:
Observe
↓
Think
↓
Act
循环。
模型观察当前页面,决定下一步,然后马上执行。
官方给出的典型执行速度约为:
3~5 秒一步。
比较适合:
- 快速 UI 验证
- 固定流程
- 高频回归
- 简单操作任务
Flash 默认不限制执行步数,而是通过历史压缩控制上下文规模。
Pro:适合复杂测试任务
Pro 则更像真正的 Testing Agent。
内部会出现:
Planner
↓
Operator
↓
Checker
Planner 负责维护测试计划;
Operator 负责具体操作;
Checker 负责检查关键节点和最终结果。
并且每个重要操作之前还会经过 Safety Net。
如果某一步操作失败,Operator 可以根据当前页面继续恢复,而不是整条测试直接失败。
官方给出的典型单步耗时大约为:
15~40 秒。
它更适合:
- 复杂业务流程
- 探索性测试
- 长时间稳定性测试
- Bug 复现
- ADB / 视频 / 日志诊断
- 需要严格断言的测试场景
甚至支持 100+ 步的长流程任务。([GitHub][2])
七、怎么安装 ARTEMIS?
官方已经把安装过程做得比较简单。
首先准备:
一台开启 USB 调试的 Android 真机,或者 Android 模拟器。
启动脚本会自动检查和安装包括:
- ADB
- scrcpy
- FFmpeg
- Python uv
- Python 项目依赖
等环境,同时还会询问你是否安装 MCP 和 ARTEMIS 的测试 Rules。([GitHub][2])
macOS / Linux
git clone https://github.com/google/artemis.git
cd artemis
./start.sh
Windows PowerShell
git clone https://github.com/google/artemis.git
cd artemis
.\start.bat
Windows 用户这里注意一下。
PowerShell 默认不会直接从当前目录寻找可执行脚本,所以要写:
.\start.bat
而不是:
start.bat
如果使用的是 CMD,则可以直接运行:
start.bat
官方启动脚本目前也会调用 PowerShell bootstrap 完成后续初始化。([GitHub][4])
八、第一次启动,还需要配置模型
第一次启动时,程序会自动初始化:
.env
配置文件。
至少需要配置一个 LLM Provider。
目前 .env.example 中已经预留了:
GEMINI_API_KEY=
GOOGLE_API_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
OPEN_ROUTER_API_KEY=
XAI_API_KEY=
也就是说,你不一定只能使用 Gemini。
选择自己已有的模型 API Key 即可。
Google Cloud Vision OCR 则是可选配置。([GitHub][5])
九、启动以后还有一个 Web 控制台
启动成功以后,ARTEMIS 默认会打开:
http://localhost:8000
Web 控制台。
里面可以看到:
- Android 设备连接
- 手机实时投屏
- 自然语言测试任务
- Agent 实时执行过程
- Flash / Pro 模式
- 历史任务
- 执行轨迹
- 截图
- Replay 回放
也就是说,即使暂时不接 Antigravity 或 Codex,也可以先通过 Web UI 直接体验。([GitHub][2])
还可以直接通过 CLI 测一下:
uv run artemis run \
"Open Settings, find Battery and tell me current level" \
--profile flash
中文任务同样可以尝试,例如:
uv run artemis run \
"打开系统设置,进入电池页面,告诉我当前电量" \
--profile flash
十、怎么接入 Antigravity、Codex 或 Claude Code?
这一步其实更简单。
如果只安装 Antigravity:
uv run artemis mcp --install antigravity
如果希望把支持的 AI IDE 全部配置好:
uv run artemis mcp --install all
安装器不仅会配置 MCP Server,还会同步 ARTEMIS 提供的:
rules.md
测试行为规范。([GitHub][3])
这份 Rules 很值得注意。
它不是单纯告诉 AI:
你可以调用 ARTEMIS。
而是在约束 Agent 怎么进行移动端测试,包括:
- 先探索真实 App,再写自动化代码
- 不允许凭空猜测 UI 状态
- 什么情况使用 Flash
- 什么情况使用 Pro
- 如何处理模型延迟
- 优先动态元素定位
- 坐标作为兜底
- 环境异常优先执行诊断
也就是说:
MCP 提供工具能力,Rules 提供测试方法。
这两个结合起来以后,AI IDE 才更像一个真正的移动端测试 Agent。
十一、然后你就可以直接在 IDE 里让 AI 测 App
官方给了一个非常有代表性的 Prompt:
Build the latest changes into an APK,
install it on the connected device,
open the login screen with a test account,
verify if there are any unexpected popups after login,
and return screenshots of the final page.
翻成中文大概就是:
把刚刚修改的代码编译成 APK,
安装到连接的 Android 手机,
打开登录页面,
使用测试账号登录,
检查登录以后有没有异常弹窗,
最后把页面截图返回给我。
你会发现,这已经不是传统意义上的:
生成一个 Appium 测试脚本
而是直接告诉 AI:
把刚才写好的 App,自己测一遍。
这就是两种模式最核心的区别。([GitHub][2])
十二、那 Appium 会不会被 ARTEMIS 替代?
我觉得暂时没必要这么理解。
对于大量:
- 固定回归用例
- 确定性流程
- 高频 CI
- 强断言
- 大规模重复运行
传统 Appium、UIAutomator 依然有明显优势。
因为代码执行仍然更加:
快、确定、可控。
Agent 更适合补充传统自动化成本比较高的地方,例如:
探索性测试
复杂长流程
页面变化频繁
跨 App 操作
Bug 自动复现
异常诊断
临时验证任务
所以未来比较现实的测试架构,很可能不是:
Agent
替代
Appium
而是:
Testing Agent
↓
┌───────────┼───────────┐
↓ ↓ ↓
Appium UIAutomator MCP
↓ ↓ ↓
确定执行 系统能力 外部工具
↓
Vision / OCR
↓
Android Device
AI 做理解、规划和决策。
传统自动化工具继续负责稳定执行。
两者最终组合起来。
十三、99%+ AndroidWorld 成绩应该怎么看?
ARTEMIS 官方 README 还公布了一个非常亮眼的数据:
AndroidWorld Benchmark 任务完成率超过 99%。
AndroidWorld 是 Google Research 发布的 Android Agent Benchmark,主要用于测试 Agent 在 Android 环境中执行复杂多步骤任务的能力。([GitHub][2])
不过这里需要注意:
这个 99%+ 是 ARTEMIS 项目 README 中公布的 benchmark 成绩。
它并不意味着:
企业里的任意 App 都有 99% 的自动化成功率。
真实业务里面还会存在:
- 验证码
- 登录态
- 网络波动
- 动态页面
- 风控策略
- 权限弹窗
- 第三方 SDK
- 自绘 UI
- 异步请求
- 复杂业务状态
Benchmark 能证明的是 Agent 的能力上限正在快速提升。
但真正进入企业环境,仍然需要测试工程、数据治理和稳定性机制。
十四、测试开发真正应该关注什么?
过去两年,我们谈 AI 测试时,最常见的其实是:
AI 生成测试用例
AI 生成接口脚本
AI 生成 UI 自动化代码
AI 分析测试报告
这些事情的共同特点是:
AI 主要负责生成内容。
但 ARTEMIS 这种项目开始进入另外一个阶段:
AI 理解测试任务
↓
AI 生成测试计划
↓
AI 操作真实设备
↓
AI 观察执行状态
↓
AI 判断测试结果
↓
AI 获取日志和截图
↓
AI 输出测试报告
也就是说:
AI 开始真正参与测试执行。
这时候需要掌握的东西,也就不只是 Prompt Engineering 了。
测试开发以后越来越需要理解:
- Agent
- MCP
- Tool Calling
- Computer Use
- Android 自动化
- Accessibility
- OCR
- VLM
- Context Engineering
- 测试规划
- Agent 评测
- 可观测性
- 异常恢复
- CI/CD 集成
因为真正有价值的 AI 测试,并不是:
让大模型帮我们多写几段测试代码。
而是:
怎么把模型真正接进软件研发和质量保障流程。
从:
AI 帮测试人员写测试
逐渐走向:
AI Agent 参与完成测试。
ARTEMIS,就是目前非常值得测试开发工程师研究的一个案例。