用途:针对某个具体的不稳定测试做分类排查(triage),给出历史与失败模式,并输出修复、隔离或上报建议。依赖 dd-pup 技能(pup CLI 已安装并认证)。
输入:完全限定测试名(如 TestMyFunc 或 com.example.MyTest);仓库为小写、无协议 URL(如 github.com/org/repo),未提供时可从 git remote get-url origin 推导,需去掉协议与结尾 .git 并转小写。
主要能力与流程:先用 pup cicd flaky-tests search 按 fingerprint_fqn 或按测试名+套件+仓库查询,取 fingerprint_fqn、flaky_state、失败率、分类、codeowners、丢失时长;再用 pup cicd tests search 查近 7 天失败历史(错误信息、分支、频率),用 pup cicd events aggregate 统计受影响流水线数量作爆炸半径。注意查询字段为 flaky_test_state,响应字段为 flaky_state,二者同义但不可用 flaky_state:active 作过滤。
建议逻辑:按分类(timeout、concurrency、network、time、order_dependency、environment_dependency、resource_leak、randomness、asynchronous_wait、io、unknown)给出修复方向;禁止加超时/休眠/重试、放宽断言等掩盖手段;若根因属 CI 基础设施问题则建议重试,分类 unknown 或无法确认根因时建议隔离。判定阈值:失败率 >10% 或爆炸半径 >5 条流水线建议隔离;≤10% 且分类明确可修复;≤10% 且分类未知则带简报上报 codeowners。
输出与操作:生成 triage 简报;若建议隔离,须先获得用户明确批准且存在 fingerprint_fqn,才写 JSON 文件并执行 pup test-optimization flaky-tests update --file /tmp/flaky-update.json,撤销时将 new_state 改为 active。若未返回 fingerprint_fqn,不要写入,提示用户到 Flaky Test Management UI 手动隔离。费用、平台范围、配额等资料暂未提供。