SuperAPI AI 工具集

absolute-deflake

测试与质量

查看项目

更新于 10-15 23:57

技能介绍

用途:找出会随机通过或失败的测试,诊断每个测试的根因并修复,移除非确定性来源,而不是靠重试或跳过。输出为证据(每个测试的失败率)→ 原因 → 修复,并通过重复运行验证。适用于 CI 不稳定、测试随机失败、本地通过但 CI 失败、清理被 retry/skip 标记掩盖的测试积压。不适用于确定性失败的测试,那属于真实 bug 或回归。

主要能力:运行共享引擎 references/health-engine.md 中的 DETECT → SCAN → TRIAGE → FIX → VERIFY → REPORT 循环。用 preferences.health.deflakeRuns 作为重复运行默认次数(否则 20)。检测方式按生态:Jest/Vitest 重复运行套件 N 次并随机化顺序(--shuffle / testSequencer);pytest 用 pytest-randomly 加 pytest --count=N(pytest-repeat),用 -p no:randomly 做 A/B;Go 用 go test -count=N -shuffle=on ./... 与 -race。同时挖掘已有 retry/flaky/skip 标注、可获取的 CI 历史,并分别在隔离与完整/并行下运行套件。记录每个可疑测试的失败率。

常见根因与修复:测试顺序/共享状态(单独通过、套件失败)→ 隔离状态、测试间重置/清理;时间/时钟(午夜、DST 或负载下失败)→ 假定时器/注入时钟,不用真实 sleep;异步竞态/缺少 await(并行或慢 CI 下失败)→ await 实际条件,不用固定超时;随机性(约 X% 无规律失败)→ 给 RNG 设种子;网络/外部 I/O(离线或慢链路失败)→ mock/stub 边界;无序集合(map/set 迭代顺序)→ 断言前排序;资源泄漏/端口复用(重复或并行失败)→ 使用唯一资源并清理。

风险分级:第 1 波为清晰孤立原因(种子、await、假时钟、排序)立即修复;第 2 波为共享状态/顺序问题,需重构 fixture,本次逐个修复;第 3 波为指向真实产品竞态的 flaky,需标记并可能修代码。修复后需多次重跑(乱序/并行/-race)验证,绿色一次不算修好;移除掩盖问题的 retry/skip/flaky 标注;重跑完整套件确认未影响邻近测试。

限制与禁忌:禁止用重试、盲目提高超时、sleep 或跳过测试来“修复”;不要为掩盖真实并发 bug 而稳定测试;不要忽略顺序/并行维度。配套命令:/absolute upgrade、/absolute debt、/absolute work。