Open-AutoGLM持续集成:CI/CD流水线自动化测试实战
本文介绍了如何在星图GPU平台上自动化部署Open-AutoGLM – 智谱开源的手机端AI Agent框架镜像,实现基于自然语言指令的移动端UI自动化测试。该镜像结合视觉语言模型与ADB技术,可智能识别屏幕并执行点击、输入等操作,典型应用于App功能回归验证与CI/CD流水线中的无人值守测试。
Open-AutoGLM持续集成:CI/CD流水线自动化测试实战
Open-AutoGLM 是智谱开源的一款面向手机端的 AI Agent 框架,旨在通过自然语言指令驱动移动设备完成复杂操作。它结合视觉语言模型与 ADB 自动化技术,让 AI 能“看懂”屏幕、“理解”用户意图,并自主执行点击、滑动、输入等动作。这一能力不仅适用于个人助理场景,更在自动化测试、远程运维、UI 流程验证等领域展现出巨大潜力。
随着 AI 驱动的自动化工具逐渐进入工程实践,如何将 Open-AutoGLM 无缝集成到现代软件交付流程中,成为提升研发效率的关键问题。本文聚焦于 CI/CD 流水线中的自动化测试实战,带你从零构建一个基于 Open-AutoGLM 的持续集成系统,实现用自然语言描述测试用例,自动执行 App 功能验证,并生成结果报告。我们将深入部署细节、连接配置、脚本调用与异常处理,确保你能在真实项目中快速落地。
1. Open-AutoGLM 架构解析:为什么适合 CI/CD?
在进入实战前,先理解 Open-AutoGLM 的核心架构设计,有助于我们更好地将其融入自动化流程。
1.1 多模态感知 + 自主决策 = 真正的智能代理
传统自动化测试依赖固定脚本和控件 ID,一旦 UI 变动就容易失效。而 Open-AutoGLM 的突破在于:
- 视觉语言模型(VLM):能直接“读图”,识别按钮、文本、布局结构,无需依赖 XML 层级或资源 ID。
- 意图解析引擎:将自然语言指令(如“登录账号并下单”)拆解为可执行的动作序列。
- 动作规划器:根据当前屏幕状态动态调整下一步操作,具备容错和重试机制。
这意味着,即使 App 更新了界面样式,只要功能逻辑不变,AI 依然可以完成任务——这正是 CI/CD 所需的稳定性与适应性。
1.2 基于 ADB 的跨平台控制能力
Open-AutoGLM 通过 Android Debug Bridge(ADB)与设备通信,支持 USB 和 WiFi 两种连接方式。这种设计带来三大优势:
- 无需 Root 权限:普通开发者模式即可启用。
- 兼容真机与模拟器:可在本地调试,也可部署在云测平台。
- 远程调试支持:结合 vLLM 推理服务,实现“本地控制 + 云端推理”的混合架构。
对于 CI/CD 场景而言,这意味着你可以将 AI 测试 Agent 部署在 Jenkins 或 GitHub Actions 的运行环境中,远程操控位于内网或云上的测试机群。
2. 环境准备:搭建可复用的自动化测试基础
要让 Open-AutoGLM 在 CI/CD 中稳定运行,必须建立标准化的环境配置流程。以下步骤适用于 Windows/macOS 开发机及 Linux 构建服务器。
2.1 系统与依赖要求
| 组件 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | Windows 10+ / macOS 12+ / Ubuntu 20.04+ | 推荐使用 Linux 容器化部署 |
| Python | 3.10+ | 需支持 async/await 异步编程 |
| ADB 工具包 | platform-tools 最新版 | 包含 adb、fastboot 等工具 |
| Git | 2.30+ | 用于克隆仓库和版本管理 |
建议:在 CI 环境中使用 Docker 镜像统一环境,避免因系统差异导致连接失败。
2.2 ADB 环境配置(以 CI 服务器为例)
在 Linux CI 节点上安装 ADB:
# 下载并解压 platform-tools
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip -d ~/
# 添加到 PATH
export PATH=$PATH:~/platform-tools
# 验证安装
adb version
为了持久化配置,可写入 .bashrc 或使用 update-alternatives 注册全局命令。
2.3 手机端必要设置(批量预配置)
每台参与测试的安卓设备需提前完成以下设置:
-
开启开发者选项
设置 → 关于手机 → 连续点击“版本号”7次。 -
启用 USB 调试
设置 → 开发者选项 → 启用“USB 调试”。 -
安装 ADB Keyboard(关键!)
下载 ADB Keyboard APK 并安装,用于接收 AI 发送的中文输入指令。 -
设置默认输入法为 ADB Keyboard
设置 → 语言与输入法 → 当前输入法 → 切换为 ADB Keyboard。
提示:可通过自动化脚本批量推送 APK 并设置默认输入法:
adb install adb-keyboard.apk adb shell settings put secure default_input_method com.android.adbkeyboard/.AdbKeyboard
3. 控制端部署:集成 Open-AutoGLM 到 CI 流程
现在我们将 Open-AutoGLM 的控制代码集成到 CI 脚本中,实现一键触发自动化测试。
3.1 克隆并安装 Open-AutoGLM
git clone https://github.com/zai-org/Open-AutoGLM
cd Open-AutoGLM
# 安装依赖
pip install -r requirements.txt
pip install -e .
注意:在 CI 环境中建议缓存 pip 包以加快构建速度。例如在 GitHub Actions 中使用
actions/cache。
3.2 编写自动化测试脚本
创建 test_login_flow.py 示例脚本:
import asyncio
from phone_agent.agent import AutoGLMAgent
async def run_test():
# 初始化代理
agent = AutoGLMAgent(
device_id="your-device-id", # 可通过 adb devices 获取
base_url="http://your-vllm-server:8800/v1",
model="autoglm-phone-9b"
)
try:
# 执行自然语言指令
result = await agent.run("打开淘宝,搜索‘连衣裙’,加入购物车第一个商品")
# 输出执行日志
print(" 测试成功完成")
print(f"最终状态: {result.final_state}")
print(f"耗时: {result.duration:.2f}s")
# 标记 CI 成功
exit(0)
except Exception as e:
print(f"❌ 测试失败: {str(e)}")
exit(1)
if __name__ == "__main__":
asyncio.run(run_test())
该脚本可在任何 CI/CD 平台(如 Jenkins、GitLab CI、GitHub Actions)中作为 step 执行。
3.3 使用 API 实现设备管理自动化
在多设备测试场景下,推荐封装设备连接逻辑:
from phone_agent.adb import ADBConnection, list_devices
def setup_device(ip: str):
conn = ADBConnection()
# 尝试连接
success, msg = conn.connect(f"{ip}:5555")
if not success:
raise RuntimeError(f"连接失败: {msg}")
# 获取设备信息
devices = list_devices()
if not devices:
raise RuntimeError("未检测到设备")
print(f"已连接设备: {devices[0].device_id}")
return devices[0]
此函数可用于动态发现测试设备,适配弹性伸缩的测试集群。
4. CI/CD 流水线实战:以 GitHub Actions 为例
下面展示如何将上述流程嵌入标准 CI/CD 流水线。
4.1 创建 .github/workflows/autotest.yml
name: Mobile UI Test with Open-AutoGLM
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test-android:
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install ADB
run: |
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip platform-tools-latest-linux.zip -d ~/
echo "$HOME/platform-tools" >> $GITHUB_PATH
- name: Start ADB Server
run: adb start-server
- name: Connect Device (via ADB over TCP)
run: adb connect ${{ secrets.DEVICE_IP }}:5555
- name: Install ADB Keyboard
run: |
adb install tests/assets/ADBKeyboard.apk || true
adb shell settings put secure default_input_method com.android.adbkeyboard/.AdbKeyboard
- name: Setup Open-AutoGLM
run: |
pip install -r Open-AutoGLM/requirements.txt
pip install -e Open-AutoGLM
- name: Run AI Test Case
env:
BASE_URL: http://${{ secrets.VLLM_SERVER }}:8800/v1
run: |
cd Open-AutoGLM
python ../test_login_flow.py
- name: Upload Test Report
if: always()
run: echo "Test logs here..." > test-report.txt
uses: actions/upload-artifact@v3
with:
path: test-report.txt
4.2 关键配置说明
secrets.DEVICE_IP:测试设备的局域网 IP。secrets.VLLM_SERVER:运行 vLLM 推理服务的服务器地址。- ADB 连接使用 TCP 模式,便于跨网络访问。
- 即使测试失败也上传日志,便于排查问题。
5. 敏感操作与异常处理:保障自动化安全
在 CI 环境中运行 AI 自动化脚本,必须考虑安全性与稳定性。
5.1 内置确认机制防止误操作
Open-AutoGLM 支持对敏感操作(如支付、删除、授权)进行人工确认:
agent = AutoGLMAgent(
...
require_confirmation=True # 开启确认模式
)
当模型识别到“付款”、“卸载”等关键词时,会暂停执行并等待外部信号继续。在 CI 中可通过 webhook 触发审批流程。
5.2 登录与验证码场景应对策略
常见挑战包括:
- 账号登录需要手动输入密码
- 图形验证码无法绕过
- 短信验证码延迟接收
解决方案:
- 预登录设备池:维护一组已登录的测试账号设备,每次测试前重置状态。
- 注入 Token:通过 ADB 修改 SharedPreferences 直接写入登录态。
- 跳过验证流程:在测试版 App 中关闭验证码校验。
示例:通过 ADB 注入登录状态
adb shell pm clear com.example.app adb push login.json /data/data/com.example.app/shared_prefs/
5.3 网络与设备稳定性优化
-
WiFi 连接不稳定? 在 CI 中优先使用 USB 连接,或增加重连机制。
-
ADB 断开? 添加守护进程定期检查:
while true; do adb devices | grep -q "device$" || adb connect $IP:5555 sleep 10 done -
模型响应慢? 设置超时机制,避免阻塞整个流水线:
try: result = await asyncio.wait_for(agent.run(prompt), timeout=120.0) except asyncio.TimeoutError: print(" 模型响应超时,终止测试")
6. 总结:迈向智能化的持续集成新时代
Open-AutoGLM 不仅是一个手机 AI 助理框架,更是推动 智能化自动化测试 落地的重要工具。通过本文的实战配置,你已经掌握了如何:
- 在 CI/CD 环境中部署 Open-AutoGLM 控制端;
- 使用自然语言编写可执行的测试用例;
- 集成到主流 CI 平台(如 GitHub Actions);
- 处理设备连接、输入法、敏感操作等实际问题。
未来,随着视觉语言模型能力的增强,这类 AI Agent 将不仅能执行预设任务,还能主动发现 UI 异常、识别交互反模式,甚至生成测试用例建议。我们可以预见,“用一句话启动一轮完整回归测试” 将成为新的工程常态。
立即尝试将 Open-AutoGLM 引入你的项目,体验 AI 驱动的自动化新范式。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)