零代码自动测试,星界云手机ADB脚本实践
“真机又掉线了!”凌晨两点,测试群里弹出一张截图——Jenkins构建失败,原因是实验室里30台旧手机中的一台自动升级系统,导致ADB授权失效。这不是第一次,也不会是最后一次。移动APP持续集成最怕三件事:设备碎片化、数据回传断点、环境不可复制。传统做法买机柜、布线、人工值守,成本一路飙升,却依然挡不住“黑天鹅”。
把真机搬到云端,是业内近两年最热的解法。星界云手机把ARM服务器、GPU加速、安卓容器做成按需租用的“手机即服务”,24小时不掉线,还能一键开ADB白名单,让Jenkins直接把它当成本地设备调用。下面用一次真实迭代,看看零代码思路如何把测试时长砍掉80%。
一、移动APP持续集成痛点:真机分散、数据回传难
- 设备分散:线下实验室跨楼层,USB Hub级联,ADB端口常冲突。
- 数据回传:Logcat、截图、崩溃日志需要手动
adb pull,再上传到SonarQube或Allure,链路一长就丢包。 - 环境漂移:同一批手机,今晚跑通,明早系统静默升级,脚本全军覆没。
星界云手机把“物理手机”抽象成“容器镜像”,支持Android 7.1/11/13三版本并列,创建时锁定系统补丁号,再也不怕半夜升级。
二、星界云手机ADB白名单连接Jenkins
步骤1:在控制台勾选50台云手机,批量开启ADB,填写Jenkins所在服务器公网IP到白名单,30秒后每部手机拿到独立域名+端口,例如adb connect cep-18-123-45-67.chinac.com:20018。
步骤2:在Jenkins节点安装android-sdk-linux,把云手机列表写进parallel流水线,每条分支对应一个ANDROID_SERIAL。
步骤3:构建触发后,流水线并发执行,云端设备零掉线,平均握手延迟38 ms,与本地USB体验无异。
三、Python+ADB批量安装、Monkey压力测试示例
from adbutils import adb
import concurrent.futures, random, time
devices = [d.serial for d in adb.device_list()]
apk_path = "app-debug.apk"
def job(serial):
d = adb.device(serial)
d.install(apk_path, nolaunch=True)
pkg = d.shell("dumpsys package | grep -E 'packageName.*com.demo'").split()[0].split('=')[1]
seed = random.randint(1000, 9999)
d.shell(f"monkey -p {pkg} --pct-touch 60 --pct-motion 20 --throttle 200 -v 50000 -s {seed} > /sdcard/monkey.txt")
d.pull("/sdcard/monkey.txt", f"./logs/{serial}.txt")
return f"{serial} finished"
with concurrent.futures.ThreadPoolExecutor(max_workers=50) as pool:
res = pool.map(job, devices)
脚本零依赖UI自动化框架,纯ADB指令,5分钟内完成50台安装+50万次事件注入,回传日志自动按序列号归档。
四、实时预览截图与Logcat云端归档
星界云手机控制台自带“实时预览”窗口,支持1080P 30 fps MJPEG流;无需本地scrcpy,直接在浏览器里多点触控。
每条流水线分支在Monkey结束后调用adb shell screencap -p /sdcard/end.png,再adb pull到工作区,通过archiveArtifacts上传到Jenkins制品库;Logcat同理,用sed截取START|CRASH|ANR关键字,生成logcat-${BUILD_NUMBER}.txt,统一存入Elasticsearch,Grafana仪表盘实时展示崩溃曲线。
五、并行50台云手机,测试时长缩短80%
线下实验室原先需要8小时才能完成的全量回归,拆解如下:
| 阶段 | 线下30台 | 星界50台 | 缩短比例 |
|---|---|---|---|
| 安装+权限 | 45 min | 3 min | 93% |
| Monkey 5W事件 | 6 h | 1.2 h | 80% |
| 日志整理 | 30 min | 0 min(自动) | 100% |
| 总耗时 | 8 h | 1.5 h | 81% |
GPU硬件加速让高帧游戏不再掉帧,云端快照可在任意节点秒级回滚到“干净”镜像,下一轮回归零等待。
如果你也想把真机室搬到云上,现在打开星界云手机官网注册账号,联系客服可申请1天免费试用,50台高配版瞬间到账。零代码、零布线,让持续集成回归“写代码”本身,而不是“修手机”。
