autool/doc/ios.md
2026-06-17 19:44:18 +08:00

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[保存统计/摘要]