AutoGLM-Phone自动化测试:APP功能回归验证实战
1. Open-AutoGLM:智谱开源的手机端AI Agent框架
你有没有想过,让AI像真人一样操作你的手机?不是简单的脚本回放,而是真正“看懂”屏幕、“理解”指令,还能自主决策下一步动作。这不再是科幻场景——AutoGLM-Phone正在把这件事变成现实。
这是由智谱AI开源的Open-AutoGLM项目中的核心组件,一个基于视觉语言模型(VLM)构建的手机智能体框架。它不仅能“看见”手机屏幕上的一切,还能通过自然语言指令驱动整个操作流程。比如你说:“打开小红书,搜‘周末探店’,点赞第一条笔记”,它就能自动完成从启动App到点赞的全过程。
更关键的是,这套系统不只是为个人助理设计的,它的底层能力非常适合用于APP功能回归测试、UI自动化验证、用户体验路径复现等工程场景。相比传统自动化工具(如Appium、UiAutomator),它不再依赖控件ID或XPath,而是像用户一样“看图办事”,从根本上解决了因界面重构导致脚本失效的问题。
本文将带你从零开始部署 AutoGLM-Phone,并实战演示如何用它进行一次完整的APP功能回归验证。
2. AutoGLM-Phone 的工作原理与优势
2.1 多模态感知 + 智能规划 = 真正的“会思考”的手机助手
AutoGLM-Phone 的核心技术栈可以拆解为三个层次:
- 视觉感知层:通过ADB实时抓取手机屏幕截图,送入视觉语言模型(VLM)进行解析。模型能识别图标、文字、按钮位置、当前页面语义。
- 意图理解与任务规划层:接收用户的自然语言指令(如“登录账号并下单咖啡”),结合当前屏幕状态,推理出需要执行的操作序列。
- 执行控制层:通过ADB发送点击、滑动、输入等指令,模拟真实用户操作。
这种“感知-决策-执行”闭环,使得系统具备了极强的泛化能力。即使App改版、按钮换位置,只要视觉上可识别,AI就能重新找到路径。
2.2 相比传统自动化测试的优势
| 维度 | 传统自动化(Appium/UiAutomator) | AutoGLM-Phone |
|---|---|---|
| 定位方式 | 依赖控件ID、class、XPath等结构信息 | 基于图像和语义理解,视觉定位 |
| 抗变性 | 页面一改,脚本全废 | 改版后仍可运行,适应性强 |
| 编写成本 | 需编写详细脚本,学习成本高 | 只需一句自然语言指令 |
| 覆盖范围 | 单一流程固定路径 | 可处理分支逻辑、异常跳转 |
| 维护成本 | 每次迭代需同步更新脚本 | 几乎无需维护 |
这意味着,当你每次发布新版本时,不再需要手动重写几十条测试用例,只需让AI重复执行“老路径”,它就能自动对比行为差异,帮你快速发现回归问题。
3. 本地环境搭建与设备连接
要让 AutoGLM-Phone 跑起来,你需要准备一台本地电脑作为控制端,一台安卓设备作为被控端,以及一个运行大模型的云服务(或本地GPU服务器)。
我们先从本地控制端开始配置。
3.1 硬件与软件准备
- 操作系统:Windows 或 macOS(推荐macOS,兼容性更好)
- Python版本:建议使用 Python 3.10+(避免低版本依赖冲突)
- 安卓设备:Android 7.0以上的真实手机或模拟器(如MuMu、BlueStacks)
- ADB工具:Android Debug Bridge,用于设备通信
ADB 安装与配置
下载 Android SDK Platform Tools 并解压。
将解压后的目录添加到系统环境变量
PATH中。Windows:
Win + R输入sysdm.cpl- 进入“高级” → “环境变量”
- 在“系统变量”中找到
Path,点击“编辑” → “新建”,填入ADB解压路径 - 打开命令行输入
adb version,若显示版本号则成功
macOS:
# 假设解压路径为 ~/Downloads/platform-tools export PATH=${PATH}:~/Downloads/platform-tools可将该行加入
.zshrc或.bash_profile实现永久生效。
3.2 手机端设置
为了让AI能“打字”和“点击”,我们需要对手机做一些基础配置。
开启开发者模式
设置 → 关于手机 → 连续点击“版本号”7次,直到提示“您已进入开发者模式”。开启USB调试
返回设置主菜单 → 开发者选项 → 启用“USB调试”安装 ADB Keyboard(关键!)
这是一个特殊的输入法,允许通过ADB命令直接输入文字,绕过安全限制。- 下载 ADB Keyboard APK 并安装
- 进入“语言与输入法”设置
- 将默认输入法切换为ADB Keyboard
注意:如果不安装这个输入法,AI将无法在搜索框、登录页等地方输入文本,严重影响自动化能力。
4. 部署控制端代码并连接设备
4.1 克隆项目并安装依赖
在本地电脑上执行以下命令:
# 克隆开源仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 安装依赖 pip install -r requirements.txt pip install -e .该项目基于 PyTorch 和 Transformers 构建,同时集成了 FastAPI 用于远程调用接口。安装过程可能需要几分钟,请确保网络稳定。
4.2 设备连接方式
确保手机通过 USB 连接到电脑,或处于同一局域网内。
方法一:USB直连(推荐初学者)
adb devices如果输出类似:
List of devices attached 123456789 device说明设备已正常连接。
方法二:WiFi远程连接(适合长期运行)
适用于不想插线、或多设备管理的场景。
先用USB连接,启用TCP/IP模式:
adb tcpip 5555断开USB,使用IP连接:
adb connect 192.168.x.x:5555(IP地址可在手机“设置-关于手机-状态信息”中查看)
再次运行
adb devices,确认设备在线。
5. 启动AI代理并执行自动化任务
现在所有前置条件都已满足,接下来就是见证AI接管手机的时刻。
5.1 命令行方式启动任务
假设你已经在云服务器上部署好了 vLLM 服务,监听在http://<公网IP>:8800/v1,你可以这样运行:
python main.py \ --device-id 123456789 \ --base-url http://123.45.67.89:8800/v1 \ --model "autoglm-phone-9b" \ "打开抖音,搜索抖音号 dycwo11nt61d,进入主页并关注该博主"参数说明:
--device-id:来自adb devices的设备ID--base-url:指向运行 AutoGLM 模型的API地址--model:指定使用的模型名称(需与服务端一致)- 最后的字符串:你的自然语言指令
执行后,你会看到AI逐步执行以下动作:
- 解锁手机(如有锁屏)
- 找到并点击“抖音”App图标
- 等待首页加载完成后,点击底部“放大镜”搜索入口
- 调用 ADB Keyboard 输入“dycwo11nt61d”
- 点击搜索结果中的目标账号
- 判断是否已关注,若未关注则点击“关注”按钮
整个过程无需人工干预,且每一步都有日志记录,便于回溯分析。
5.2 使用 Python API 进行远程控制
如果你希望将 AutoGLM-Phone 集成进自己的测试平台,可以直接调用其Python API。
from phone_agent.adb import ADBConnection, list_devices # 创建ADB连接管理器 conn = ADBConnection() # 连接远程设备 success, message = conn.connect("192.168.1.100:5555") print(f"连接状态: {message}") # 列出所有已连接设备 devices = list_devices() for device in devices: print(f"{device.device_id} - {device.connection_type.value}") # 获取设备IP(用于后续无线连接) ip = conn.get_device_ip() print(f"设备当前IP: {ip}") # 断开连接 conn.disconnect("192.168.1.100:5555")你可以在此基础上封装成“测试任务调度器”,批量下发回归测试指令,收集执行结果,生成报告。
6. 实战案例:APP功能回归验证全流程
我们以某电商App为例,演示如何用 AutoGLM-Phone 完成一次标准的功能回归测试。
6.1 测试目标
验证新版本App中“商品搜索→加入购物车→结算”流程是否正常。
6.2 自然语言指令
打开京东App,搜索“蓝牙耳机”,点击第一个商品,加入购物车,然后去购物车结算,选择货到付款,提交订单。6.3 执行过程观察
AI会自动完成以下步骤:
- 启动京东App
- 检测首页是否有弹窗广告,若有则点击关闭
- 找到顶部搜索框并点击
- 输入“蓝牙耳机”
- 点击搜索结果第一项
- 滑动页面查看价格、评价等信息(模拟用户浏览)
- 点击“加入购物车”
- 弹窗出现后点击“去购物车”
- 勾选商品,点击“结算”
- 选择“货到付款”,提交订单
6.4 回归验证要点
- 行为一致性检查:对比旧版本执行路径,确认关键节点顺序一致
- 异常检测:若某步超时或找不到元素,记录失败原因
- 截图对比:在关键节点保存屏幕截图,用于视觉比对
- 敏感操作拦截:遇到支付确认页时,系统自动暂停,等待人工确认后再继续
这种方式不仅能验证功能可用性,还能捕捉到UI错位、按钮消失、文案错误等视觉层面的问题。
7. 常见问题与排查建议
7.1 连接类问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
adb devices无设备 | USB调试未开启 | 检查开发者选项 |
| 连接被拒绝 | 防火墙阻止端口 | 开放云服务器8800等映射端口 |
| WiFi连接不稳定 | 路由器限制 | 改用USB连接,或固定IP |
7.2 执行类问题
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| AI乱点、误操作 | 屏幕分辨率不匹配 | 确保模型训练数据包含相似分辨率 |
| 输入中文失败 | ADB Keyboard未设为默认 | 检查输入法设置 |
| 模型无响应 | 显存不足或max-model-len太小 | 调整vLLM启动参数,增加显存分配 |
7.3 提示词优化技巧
为了让AI更准确地执行任务,建议指令遵循以下格式:
动词开头 + 明确对象 + 补充细节
例如:
- ❌ “看看有没有便宜的耳机”
- “打开淘宝,搜索‘百元内蓝牙耳机’,按销量排序,点击第一个商品详情页”
越具体,成功率越高。
8. 总结
AutoGLM-Phone 不只是一个炫酷的AI助手,它正在重新定义移动应用的自动化测试方式。通过多模态理解与自然语言驱动,它实现了:
- 零脚本编写:一条指令即可启动完整测试流
- 高抗变性:不依赖控件ID,界面改版也不怕
- 真实用户视角:像人一样“看”和“操作”,覆盖更多边缘场景
- 可扩展性强:支持远程调试、批量任务、人工接管
对于QA团队来说,这意味着可以用极低成本建立一套智能回归测试流水线。每次发版前,只需让AI跑一遍核心路径,就能快速发现潜在问题。
未来,随着视觉语言模型能力的提升,这类AI Agent还将支持更复杂的场景,如语音交互测试、多设备联动、异常恢复等,真正实现“无人值守”的自动化验证。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。