插上手机,开一个网页,测任意已装 App。
全场景点遍按钮、Monkey 砸崩溃、交叉一起跑。崩溃 / ANR 当场落盘,网页里就能预览。
| 你以前要做的 | 现在 |
|---|---|
| 记一堆 monkey 参数,跑完才翻 logcat | 网页点开始,崩溃 / ANR 当场保存,点标题就能预览 |
| 测着测着跳到桌面、点到别的 App | 只困在你选的那一个包,出去立刻拉回 |
| 想挂一夜、挂三天,还得自己写循环 | 时长支持 分钟 / 小时 / 天 / 不限 |
| Windows 一套脚本、Mac 又一套 | run.bat / run.sh,浏览器打开即用 |
手机用 scrcpy 投屏看着点,更直观。
在目标 App 里按界面往下挖:
- 点击、长按、输入
- 列表上下滑,横向页左右滑
- 看图 / 播放页再走一遍画面滑动和双击
- 点进新页就把那一页的链做完,再回到上一页
- 删除、分享、打开方式、根界面「返回」默认跳过,避免误伤和回桌面
适合:验收关键路径有没有漏。
系统 Monkey,只认你选的包。点击、滑动、返回、Home、切应用都在,出包立刻拉回。
适合:挂几天压崩溃 / ANR。
每扫完一屏,打一段 Monkey,再把新界面交回遍历。
适合:覆盖 + 稳定性一起要。
一出现问题,马上写入:
reports/<包名>/<本次运行>/events/
crash_时分秒_指纹/crash_log.txt
anr_时分秒_指纹/anr_log.txt
logcat.txt · traces · dropbox · 截图
总账在 reports/<包名>/bugs.md。网页右侧点标题展开堆栈,文件可直接打开。
准备: Python 3.10+、ADB platform-tools 在 PATH、手机打开 USB 调试。
Windows
run.batmacOS / Linux
chmod +x run.sh
./run.sh浏览器打开 http://127.0.0.1:8765
- 插上已授权的手机,点刷新
- 输入包名(会记住,下次有提示)或从列表选
- 选模式和时长(20 分钟 / 1 天 / 不限都行)
- 开始测试,看着日志;停下来点停止
测试期间屏幕会保持常亮,并藏掉系统栏,降低误点 Home。测完恢复原设置。
- 后台盯着当前包名,到桌面或其他应用 立刻拉回,不经过桌面乱点
- 包名输入有历史,常用包一键再测
- 不删文件、不移动文件;清单里的文件操作只做新建 / 收藏 / 重命名
- 可先跑 YAML 清单(仓库里带了媒体中心样例
e2e/apps/com.mediacenter.app.yaml)
flowchart LR
A[选包名] --> B{模式}
B -->|全场景| C[操作链:点 / 长按 / 滑 / 输入]
B -->|Monkey| D[随机事件 + 出包拉回]
B -->|交叉| E[一屏遍历 + 一段 Monkey]
C --> F[崩溃 / ANR 落盘]
D --> F
E --> F
F --> G[网页预览 + reports/]
AndroidTestConsole/
run.bat / run.sh 一键启动
e2e/server.py 本地网页服务
e2e/crawler.py 全场景操作链
e2e/monkey.py Monkey(含拉回)
e2e/logcat.py 崩溃 / ANR 解析
e2e/apps/*.yaml 可选清单
reports/<包名>/ 报告与日志(不入库)
没有设备? adb devices 要能看到 device,不是 unauthorized。
还是跳到桌面? 手势导航仍可能被点到。守护会拉回;全场景不会在首页按系统返回。
ANR 没有 traces? 部分手机不开放 /data/anr。anr_log.txt 和 logcat 一定在。
改了 Python 代码没生效? 关掉 run.bat / run.sh 再开。网页刷新即可更新前端。
MIT。欢迎提 Issue / PR。测你自己的 App,别拿去折腾别人的设备。


