首页/开发/软件测试速查/顺序依赖的发现与治理
自动化测试66 条

顺序依赖的发现与治理

顺序依赖的典型信号:单独运行失败、整体执行通过;治理方法是查明共享状态来源(数据、单例、登录态、端口),改为自建自清,并在 CI 中用随机顺序持续暴露。

软件测试速查开发更新于 2026-10-13

顺序依赖的发现与治理

顺序依赖的典型信号:单独运行失败、整体执行通过;或随机顺序下零星失败。治理方法是查明共享状态来源(数据、单例、登录态、端口),改为自建自清,并在 CI 中用随机顺序持续暴露。只修当前失败用例而不消除共享状态,问题会换个形式再次出现。

基本信息

典型信号单独跑失败整体跑通过、随机顺序下零星失败
常见来源共享数据、单例状态、登录态、端口与文件
治理方式用例自建自清,隔离数据与资源
暴露手段CI 随机顺序执行,持续轰击
修复顺序先消除共享状态,再回归验证随机顺序
防复发评审用例是否依赖前序执行状态
治理目标任何用例可任意顺序、任意组合执行

暴露手段

暴露手段
# 先核对单独执行:
pytest tests/test_a.py::test_two
# 随机顺序插件(pytest-randomly)用于持续暴露:
pytest -p randomly -q
# 让随机种子在每次 CI 运行中变化,而不是固定一颗

信号与来源对照

信号常见来源治理动作
单独跑失败整体通过依赖前序用例残留数据用例自建自清
随机顺序零星失败全局单例、缓存与登录态用例级重置
并行分片失败共享端口、文件与账号资源隔离与独立账号
时快时慢前序用例改变资源环境独立环境与数据

典型使用场景

  • CI 分片:并行分片后暴露顺序依赖,集中治理。
  • 遗留系统:为老用例补自建自清能力。
  • 缺陷定位:区分用例脆弱与产品缺陷。
  • 用例评审:检查新用例是否依赖全局状态。
  • 框架迁移:批量执行顺序变化,依赖问题集中浮现。
  • 发布保障:随机顺序回归作为发布前例行检查。
  • 度量观察:统计单独执行与整体结果不一致的用例数,作为治理进度。
只修当前失败用例而不删除共享状态来源,问题会以其他形式再次出现。
把随机种子固定下来长期复用,会失去暴露依赖的作用。
治理目标是任何用例可任意顺序、任意组合执行:把它写进用例准入要求。

易错点

  • 用固定排序配置掩盖依赖,问题只在并行或分片时爆发。
  • 把随机种子固定下来长期复用,失去暴露依赖的作用。
  • 共享数据不隔离,用例间互相污染。
  • 顺序依赖被当成产品缺陷排查,浪费定位时间。
  • 共享账号并发登录互相踢出,误报产品缺陷。

数据来源与参考

  • pytest-randomly 项目文档(PyPI)
  • Google Testing Blog(flaky 测试来源分析)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌