61 lines
1.7 KiB
Markdown
61 lines
1.7 KiB
Markdown
# iOS 批量化测试
|
|
|
|
## 批量测试流程
|
|
|
|
```mermaid
|
|
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 卡死检测与异步恢复
|
|
|
|
```mermaid
|
|
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, 记录失败]
|
|
```
|
|
|
|
## 测试架构流程图
|
|
|
|
```mermaid
|
|
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[保存统计/摘要]
|
|
``` |