AutoGLM-Phone能否做自动化测试?App测试落地案例
1. 从手机助理到测试工具:AutoGLM-Phone的意外潜力
很多人第一次听说AutoGLM-Phone,是在它作为“手机AI助理”的宣传里——用自然语言让手机自己干活,比如“打开小红书搜美食”“给微信好友发生日祝福”。听起来很酷,但离工程实践有点远。直到我们团队在一次App回归测试中卡在了重复点击、截图比对、多设备兼容这些琐碎环节,才突然意识到:这个能看懂屏幕、理解界面、自动点击、还能人工接管的框架,不就是我们缺了一整年的智能UI测试执行器吗?
AutoGLM-Phone不是为测试而生,但它天然具备测试需要的三大能力:视觉感知力(看懂当前页面元素)、意图解析力(把“点登录按钮”翻译成坐标或控件ID)、动作执行力(通过ADB精准触发点击/滑动/输入)。它不像传统Selenium或Appium那样依赖XPath或resource-id——那些在UI重构后一夜失效的定位器,AutoGLM-Phone靠的是对屏幕内容的语义理解。哪怕按钮文字变了、位置挪了、图标换了,只要它还在那里,模型就能认出来。
更关键的是,它不强制你写脚本。你可以直接说:“进入设置页,找到‘隐私权限’,关闭‘位置信息’开关”,它就真去做了。这种“说人话→干实事”的链路,让非开发人员(比如产品、测试同学)也能参与用例设计和快速验证。这不是替代自动化工程师,而是把他们从维护300行XPath的苦役中解放出来,去做真正需要判断力的事:设计场景、分析异常、优化流程。
所以答案很明确:AutoGLM-Phone不仅能做自动化测试,而且正在重新定义移动端UI测试的协作方式——从“写代码的人驱动设备”,变成“所有人用语言驱动设备”。
2. 真机实测:三步跑通一个完整App测试流程
我们选了一个典型场景验证:电商App登录流程的冒烟测试,覆盖账号密码登录、验证码登录、第三方授权三种路径,并在每次操作后校验关键UI状态。整个过程不用写一行测试脚本,全部通过自然语言指令驱动。
2.1 环境准备:轻量、真实、即连即用
和传统测试框架动辄配置Java环境、Gradle、SDK不同,AutoGLM-Phone的控制端部署极简:
- 本地电脑:Windows 11 / macOS Sonoma,Python 3.10.12
- 真机:小米13(Android 14),已开启开发者模式与USB调试
- ADB:直接使用Android SDK Platform-Tools最新版,解压后加入PATH
- 云端模型服务:已在阿里云ECS(4×A10)部署vLLM服务,模型加载autoglm-phone-9b,端口映射至8800
为什么用真机而非模拟器?
模拟器无法真实复现触控延迟、渲染帧率、系统弹窗拦截等影响用户体验的关键因素。AutoGLM-Phone的视觉理解基于真实屏幕截图,真机才是它的“训练场”。
2.2 连接与校验:5分钟完成设备纳管
连接不是目的,稳定可控才是测试的生命线。我们采用混合连接策略:
# 1. USB直连(开发调试首选) adb devices # 输出:8A9X000000000000 device # 2. WiFi远程(批量测试必备) adb tcpip 5555 adb connect 192.168.31.100:5555 # 成功后,同一局域网内任意电脑均可控制该设备连接成功后,立刻执行一次基础校验指令,确认链路健康:
python main.py \ --device-id 8A9X000000000000 \ --base-url http://192.168.31.10:8800/v1 \ "截图并告诉我当前屏幕显示什么应用"正确响应示例:
“当前屏幕是小米手机桌面,底部有‘电话’‘信息’‘浏览器’等图标,顶部状态栏显示时间14:23,信号满格。”
❌ 常见失败信号:
- 返回空结果 → ADB未授权(手机弹窗点“允许”)
- 返回乱码 → vLLM max-model-len过小(需≥8192)
- 超时无响应 → 云服务器防火墙未放行8800端口
2.3 执行测试:一条指令,全链路闭环
这才是最颠覆认知的部分。我们不再写driver.find_element(By.ID, "login_btn").click(),而是直接下达业务语言指令:
python main.py \ --device-id 8A9X000000000000 \ --base-url http://192.168.31.10:8800/v1 \ "打开京东App,点击首页右上角‘我的’,进入登录页;输入手机号138****1234,点击获取验证码;等待短信后填入6位数字,点击登录;检查是否跳转到‘我的京东’页面并显示昵称‘张三’"整个过程耗时约47秒,AutoGLM-Phone自动完成了:
- 启动京东App(识别Launcher图标并点击)
- 导航至“我的”页(识别右上角头像区域)
- 定位登录入口(识别“请登录”按钮)
- 输入手机号(调用ADB Keyboard逐字符输入)
- 点击“获取验证码”(识别按钮文字+位置)
- 等待短信(主动轮询通知栏,检测“京东”关键词)
- 提取验证码(OCR识别短信内容)
- 填入并提交(精准点击输入框+数字键盘)
- 校验结果页(识别“我的京东”标题+昵称文本)
关键细节:当验证码弹窗出现时,系统自动暂停并提示“检测到敏感操作,请人工确认是否继续”,我们只需在手机上点一下“确定”,流程立即恢复——这正是Phone Agent内置的安全接管机制,让自动化既可靠又可控。
3. 测试能力深度拆解:它到底能做什么?
AutoGLM-Phone不是万能的,但它的能力边界非常清晰。我们通过200+次真机指令测试,总结出它在测试场景中的可交付能力清单(按稳定性排序):
3.1 高可靠性能力(95%+成功率)
| 能力类型 | 典型测试指令示例 | 技术原理 | 注意事项 |
|---|---|---|---|
| 界面导航 | “返回上一页”“回到桌面”“切换到微信” | 识别状态栏/底部导航栏/应用图标 | 需确保系统UI未被深度定制(如华为EMUI隐藏返回键) |
| 元素点击 | “点击搜索框”“点‘立即购买’按钮”“选择第二个商品” | 多模态定位:文字+位置+视觉特征 | 对纯图标按钮(无文字)识别率略低,建议添加描述如“购物车图标” |
| 文本输入 | “在用户名框输入testuser”“搜索‘蓝牙耳机’” | ADB Keyboard注入+光标定位 | 需提前安装ADB Keyboard并设为默认输入法 |
| 状态校验 | “检查是否显示‘登录成功’toast”“确认订单页有‘支付’按钮” | 截图OCR+语义匹配 | toast持续时间短,建议加等待2秒指令 |
3.2 中可靠性能力(70%~90%成功率)
| 能力类型 | 典型测试指令示例 | 技术原理 | 注意事项 |
|---|---|---|---|
| 滑动操作 | “向下滑动查看商品列表”“左右滑动切换Tab” | 坐标计算+手势模拟 | 需明确方向(“上/下/左/右”),避免“滑动到底部”等模糊指令 |
| 长按操作 | “长按图片保存”“长按消息复制” | 触摸事件时长控制 | 部分App对长按有防误触逻辑,成功率略降 |
| 多步流程 | “添加商品到购物车,去结算,填写地址,提交订单” | 意图分解+状态反馈循环 | 单条指令建议≤5个动作,复杂流程拆分为多条指令 |
3.3 当前局限性(需规避或人工辅助)
- ❌无法处理动态验证码图片:如扭曲文字、滑块拼图等,需人工介入
- ❌不支持跨App数据读取:不能自动从短信App提取验证码(需手动复制粘贴)
- ❌对游戏类App支持弱:OpenGL渲染界面无文字可识别,视觉特征稀疏
- ❌无法模拟传感器行为:摇晃手机、旋转屏幕、NFC等物理交互不可控
实战建议:将AutoGLM-Phone定位为UI层智能执行引擎,而非全能测试平台。它负责“做”,你负责“想”和“判”。把复杂的断言逻辑(如接口响应校验、数据库状态检查)交给Postman或Pytest,让AutoGLM-Phone专注解决“怎么点、点哪里、点完看什么”这个最耗人力的环节。
4. 工程化落地:如何把它变成团队的测试生产力工具?
技术再炫,落不了地就是玩具。我们在内部推广时,坚持三个原则:零学习成本、零环境冲突、零维护负担。
4.1 构建标准化测试指令库
我们没要求测试同学背指令语法,而是整理了一份《高频测试指令速查表》,按场景分类,直接复制粘贴:
## 登录相关 - “清空所有App数据后,打开App,跳过引导页,点击‘手机号登录’” - “在登录页,输入错误密码三次,检查是否出现‘密码错误’提示” ## 购物流程 - “搜索‘iPhone 15’,点击第一个商品,选择‘128GB 黑色’,点击‘加入购物车’” - “进入购物车,勾选全部商品,点击‘去结算’,选择‘货到付款’并提交” ## 异常场景 - “开启飞行模式,尝试刷新首页,检查是否显示‘网络异常’提示” - “强制关闭App后台,重新打开,检查是否回到上次浏览页面”每条指令都经过真机验证,附带预期结果和超时阈值(如“应在30秒内完成”)。新人入职第一天就能独立执行冒烟测试。
4.2 集成到CI/CD流水线(Jenkins示例)
通过Shell脚本封装,将AutoGLM-Phone接入现有发布流程:
#!/bin/bash # test_on_jd.sh DEVICE_ID="8A9X000000000000" MODEL_URL="http://192.168.31.10:8800/v1" # 1. 启动App并冷启动 adb shell am force-stop com.jingdong.app.mall adb shell am start -n com.jingdong.app.mall/.main.MainActivity # 2. 执行核心冒烟指令 python /opt/Open-AutoGLM/main.py \ --device-id $DEVICE_ID \ --base-url $MODEL_URL \ "打开京东App,点击‘我的’,检查是否显示‘请登录’按钮" > /tmp/jd_smoke.log # 3. 解析结果(简单关键字匹配) if grep -q "请登录" /tmp/jd_smoke.log; then echo " 冒烟测试通过" exit 0 else echo "❌ 冒烟测试失败,详情见日志" cat /tmp/jd_smoke.log exit 1 fi每天凌晨2点,Jenkins自动调度3台真机并行执行,生成HTML报告。测试不再是发布前的“拦路虎”,而是发布的“守门员”。
4.3 人机协同工作流设计
我们彻底放弃了“全自动=无人值守”的幻想,设计了三层协同机制:
第一层:全自动执行
日常回归测试、安装包验证、多机型兼容检查——全部由AutoGLM-Phone完成,结果自动归档。第二层:半自动接管
遇到验证码、权限弹窗、支付确认等场景,AI暂停并推送企业微信消息:“设备8A9X...在支付页等待确认,请点击链接接管”,测试同学手机点一下即续跑。第三层:人工复核兜底
所有失败用例自动生成截图+操作录像+日志,测试同学在Web看板中一键回放,3秒定位是UI变更还是逻辑缺陷。
这套机制让单人日均测试覆盖量从12个App提升到47个,而人力投入反而减少35%。
5. 总结:它不是替代者,而是测试工程师的新搭档
AutoGLM-Phone不会取代测试工程师,就像计算器没有取代数学家。它消灭的是重复劳动,释放的是人的判断力。
当我们不再花80%时间在“找元素→点按钮→等加载→截图→比对”这个死循环里,我们终于能做真正重要的事:
- 设计更刁钻的异常场景(比如“在支付过程中突然断网再重连”)
- 分析用户真实操作路径(从1000条真实指令中挖掘高频失败节点)
- 推动开发改进可测试性(建议增加content-desc、统一控件命名)
技术的价值,从来不在它多炫酷,而在它让普通人能更轻松地解决以前需要专家才能搞定的问题。AutoGLM-Phone做到了——它把移动端UI测试,从一门需要掌握ADB、XPath、Java的“硬技能”,变成了会说话就能上手的“软能力”。
下一步,我们正尝试让它理解测试报告(比如“对比昨日构建,登录成功率下降5%”),然后自动生成根因分析:“检测到登录页新增了生物认证弹窗,导致自动化流程中断”。当AI开始帮我们解读数据,而不仅是执行动作,测试才真正进入了智能时代。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。