首页/开发/软件测试速查/变更影响测试选择
自动化测试66 条

变更影响测试选择

变更影响测试选择:依据本次改动涉及的文件与依赖关系挑选回归子集,缩短反馈时间;Google 的预测性测试选择用历史数据训练模型,实践上也可以先用文件映射的启发式实现。

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

测试选择是什么

测试选择(test selection)是在全量用例里挑「与本次变更相关、最值得跑」的子集执行:按变更影响映射、历史失败率、风险标签或人工分级来选。目标是在管住质量风险的前提下把回归时间压下来;核心风险是漏选,必须用定期全量跑作为兜底。

基本信息

选择依据变更影响映射、历史失败记录、风险等级标签、用例新旧
常见实现按目录/标记过滤、按 git 变更映射模块、平台级影响分析
标签先行给用例打上手写标签(模块、链路、风险级):选择规则都要落在标签上
兜底机制每日或发版前跑一次全量,校准选择规则的漏检率
度量漏检率、节省时长、选择精度三条一起看
适用边界大型仓库效果最明显;小项目维护映射的收益可能为负

选择手段示例

选择手段示例
pytest -m "smoke"                 # 提交门禁:只跑冒烟标记
pytest --lf                        # 只重跑上次失败的用例
pytest tests/payment tests/order   # 按本次变更的目录选择相关模块
# 变更到公共依赖(工具库、序列化层)时:影响面是全量,直接跑全量而不是贪快

典型使用场景

  • 提交门禁限时:把 15 分钟预算花在最可能出问题的用例上
  • 大仓库回归瘦身:把四小时全量压到半小时的分层策略
  • 发版前聚焦:按本次发布范围选高风险模块
  • 本地开发快速反馈:先 --lf 重跑失败,再按目录跑相关集
  • 灰度发布验证:按影响面挑选对应链路用例
  • 成本控制:避免每次提交都全量重跑造成资源浪费

选择依据对比

依据优点风险
变更映射直觉最准,直接对准本次修改映射表过期即漏选
历史失败优先验证薄弱区域长期通过的用例可能永远不跑
风险标签业务语义清晰,易解释标签维护不到位就失真
用例新旧新用例必跑,防未执行缺陷与覆盖无关,只解决一部分问题
选择规则要盯漏检率:每周用一次全量对照,发现被规则漏掉的失败用例,就补映射或调整权重。
新增与修改的用例永远全跑,不进选择池——否则新用例永远选不中,等于没写。
公共库变更要单独识别:序列化、鉴权、日志这类底层改动的影响面接近全量,按目录映射会严重漏选。

易错点

  • 依赖命名约定做映射但目录结构早已腐化:漏选悄悄发生,定期审计映射表
  • 只看目录不看公共库变更:底层一改全仓相关,选择规则必须显式处理这类变更
  • 选择规则黑盒无人维护:规则失效没人发现,回归形同虚设
  • 取消全量兜底:长期漏检累积,等发现时已放行多个缺陷

数据来源与参考

  • Google Testing Blog《Predictive Test Selection》(testing.googleblog.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌