1.7 KiB
1.7 KiB
iOS 批量化测试
批量测试流程
graph TD
A["加载 CSV 应用列表"] --> B["启动基础设施<br>tunnel+转发+WDA+代理"]
B --> C["遍历应用"]
C --> D["安装应用获取 bundle_id"]
D -->|失败| E["记录 SKIPPED, continue"]
D -->|成功| F["启动抓包(可选)"]
F --> G["执行 DroidBot 测试"]
G --> H["记录结果到统计"]
H --> I["停止抓包"]
I --> J["实时保存 CSV"]
J --> C
E --> J
C -->|全部完成| K["打印摘要 + 清理资源"]
WDA 卡死检测与异步恢复
flowchart TD
A[WDA 操作失败] --> B{连续失败 ≥ 3次?}
B -->|否| C[继续下一步操作]
B -->|是| D[触发异步恢复]
D --> E[后台线程: stop_wda → start_wda]
E --> F[_wait_wda_ready 自动等待恢复]
F --> G{WDA 恢复?}
G -->|是| H[测试继续]
G -->|否| I{恢复次数 ≥ 3?}
I -->|否| D
I -->|是| J[抛出 WDAStuckError, 记录失败]
测试架构流程图
flowchart TD
A[ios_test.py main] --> B{批量/单个模式?}
B -->|batch| C[load_apps_from_csv]
B -->|single| D[单个 bundle_id]
C --> E[遍历 app 列表]
E --> F
D --> F
F[setup_infrastructure] --> G[install_app_and_get_bundle_id]
G --> H["阶段1: AppleID + GuiAgent<br/>处理权限/登录"]
H --> I["阶段2: FastbotAgentController.run()<br/>Fastbot + 异步检测"]
I --> J{PageStuckDetector<br/>检测到卡住?}
J -->|是| K[暂停 Fastbot]
K --> L["调用 GuiAgent<br/>判断并处理"]
L --> M[恢复 Fastbot]
M --> J
J -->|否| N{Fastbot 结束<br/>或超时?}
N -->|否| J
N -->|是| O[收集结果 TaskResult]
O --> P[保存统计/摘要]