Skip to content
🔗 分享本题
查看我的学习进度 →

28 模块 Q6 教学图:测试经常随机挂(flaky),怎么治理?(高频追问,体现工程经验)

🧠 图解记忆:Flaky 是系统缺陷,必须可追踪、可归因并限期消除;点击图片可查看原图。

1. **先复现:** 记录失败时的完整上下文(seed、数据、顺序); 2. **找根因:** 90% 是共享状态污染(全局变量、静态单例、缓存未清理)、时序依赖(sleep、异步没等)、外部依赖抖动; 3. **三板斧:** 隔离数据、注入时钟、替身代替真实网络; 4. **兜底机制:** 重试要谨慎——重试是止痛药不是解药,先治根因; 5. **加分项:** 在 CI 里对 flaky 测试单独标记统计,连续挂 N 次自动禁用以止损,但不删、要修复。

工程取舍: 直接删 flaky 测试是最差解(丢掉防护);无限重试掩盖问题(测试变绿但失去意义);正确做法是"标记 + 统计 + 修根因 + 复启用"。

验证方法: 以 flaky 率作为 harness 质量指标(目标示例:<1%),CI 里统计每测试的失败率。


📚 参考:Google Testing Blog:Flaky Tests at Google(flaky 治理)