Agent Skills
返回列表
💻

CircleCI 不稳定测试检测

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 的安装指南,在 AI 助手中安装 @user_3c6cb52e/circleci-flaky-test-detector-2 技能。

技能介绍

问题背景

在持续集成流水线中,有一种测试特别棘手——它们不是持续失败,而是偶尔通过、偶尔失败。这类测试被称为"不稳定测试"(flaky tests)。当 CircleCI 的构建历史中积累了足够多的运行记录后,人工翻阅每次构建的日志去找出这些反复横跳的用例几乎是不可能的任务。你可能需要查看数十次甚至上百次的运行结果,才能凭经验猜出哪些测试存在这种行为模式。

核心能力

这个技能通过查询 CircleCI Insights API 来自动化这一过程。它首先拉取最近若干次运行的测试结果数据,然后对每个测试用例在通过和失败之间的状态切换进行检测。检测完成后,技能会按失败率从高到低生成一个排名列表,让你快速定位最需要关注的不稳定用例。

隔离策略

针对检测出的不稳定测试,技能提供了针对不同测试框架的隔离方案:

  • Jest:在 CI 配置中开启独立运行模式或使用重试机制
  • pytest:通过 -p no:randomly 或调整 xdist 并行策略来减少环境干扰
  • RSpec:利用 --tag 筛选或引入顺序随机化插件
  • JUnit:检查测试间的共享状态和清理逻辑

适用边界

需要注意的是,Insights API 的数据覆盖范围受限于 CircleCI 的项目配置和数据保留策略。如果项目中启用了测试分片或自定义测试收集器,Insights 可能无法完整捕获所有用例的执行结果。此外,隔离策略属于工程建议而非自动修复脚本,实际落地时仍需结合项目自身的测试架构进行调整。

使用场景

  • CI 构建中频繁出现偶发性失败,需要从多次运行记录里找出反复横跳的具体测试用例,而非排查持续报错的用例
  • CircleCI 项目积累了大量历史运行数据,想按失败率排序快速定位最不稳定的测试,为后续修复排优先级
  • 检测出 flaky 测试后,需要针对团队正在使用的 Jest 或 pytest 获取可落地的隔离配置建议并调整 CI 设置
  • 测试套件规模扩大后,需要区分哪些是稳定的失败用例、哪些是环境导致的偶发抖动,避免误修持续报错的测试

适合人员

  • 负责维护 CircleCI 流水线质量的后端工程师,面对随机失败的测试需要数据驱动地定位问题
  • 主导测试基础设施改进的技术负责人,需要按失败率识别 flaky 测试并制定修复优先级
  • 在 CircleCI 上管理大规模前端测试套件的工程师,使用 Jest 且深受不稳定用例困扰
  • 负责 Ruby 项目 CI 稳定性的开发者,使用 RSpec 且需要针对不稳定测试获取隔离策略建议