adb 结束弱网:stop_service 与测试收尾
弱网用例跑完必须显式收尾:停止指令会关闭弱网并让 QNET 进程退出。自动化脚本里「没有停止语句」是新手最常见的疏漏——设备会一直泡在弱网里,影响后续所有用例。
指令结构
adb shell am broadcast -a "qnet.boradcast.drive" --include-stopped-packages --es "command" "stop_service" com.tencent.qnet
与更新指令共用同一 action,差别只在 command 的取值:update 是改参数,stop_service 是结束进程。官方定义里 command 字符串支持 update 与 stop_service 两个取值,完整说明见adb 参数速查表。
执行后的状态变化
- VPN 通道拆除,设备网络立即恢复正常;
- QNET 进程退出,悬浮窗与读数消失;
- 若会话开启了抓包或报告,文件在停止时落盘,取用方式见测试报告:csv 与 html 两份输出。
自动化脚本的收尾断言
健壮的弱网用例框架在 stop_service 之后建议追加三条检查:
- 网络恢复:脚本侧探测设备可正常出网(比如 ping 一台稳定地址);
- 进程退出:
adb shell pidof com.tencent.qnet应无输出; - 文件就位:按会话配置检查缓存目录里 pcap/报告文件是否生成。
任何一条不满足都说明收尾异常,标记该轮结果无效,避免脏数据混进报告。
异常场景的兜底
| 情况 | 处理 |
|---|---|
| 广播无回执(进程已死) | 直接进入文件检查;弱网早已随进程消失 |
| 设备失联(USB 断开) | 重连后先确认设备网络状态再继续 |
| 脚本中途崩溃 | 用例框架的 teardown 里兜底发 stop_service,防止弱网残留 |
崩溃兜底这类纪律与人工测试的保活要求是同一件事的两面,见后台保活与进程保护。
停止之后,一个完整弱网会话就闭环了;把三步指令串成脚本的实际效果见adb 自动化实战。