首页/开发/代码质量与评审速查/度量博弈:常见刷指标手法与对策
技术债与度量63 条

度量博弈:常见刷指标手法与对策

可预期的博弈行为:为覆盖率写空断言、为「关闭问题」加豁免、把大 PR 拆成多个小 PR 凑数量、让 flaky 测试跳过;对策是组合指标、抽查与只看趋势不做排名。

度量博弈是什么

任何被当作目标的指标都会引出对策:覆盖率可以靠空断言刷高,问题数可以靠批量豁免压低,PR 数量可以靠拆碎提交凑出来,构建时长可以靠跳过测试缩短。这不是团队品德问题,而是指标设计的必然结果。对策是组合指标、随机抽查、只看趋势不做排名,并给改进留出真实可行的路径。

基本信息

理论背景Goodhart 定律:指标一旦成为目标,就不再是好的度量
常见手法空断言、批量豁免、拆碎提交、跳过测试
对策组合指标、随机抽查、趋势优先
前提必须存在可行的改进路径,否则只能作弊

识别与应对

  • 覆盖率突增但缺陷没减少:抽查断言质量与变异测试结果
  • 问题数骤降但没有修复提交:审计豁免列表与降级记录
  • PR 数量上升而交付没变:改看交付结果与前置时间
  • 构建变快但线上回归增多:核对必跑测试清单与超时告警
  • 指标在不同团队间横向排名:立刻会催生口径调整,改为看自身趋势
  • 抽查结果不反馈:抽查形同虚设,需要公开结论与后续动作

抽查机制示例

抽查机制示例
每迭代随机抽 5% 的「已解决」问题复核
豁免条目定期复审(是否仍必要、是否到期)
覆盖率报告与变异测试结果交叉验证

# 抽查结论要有去处:
# - 确认无误 → 记录抽样结果
# - 发现问题 → 回退问题状态并复盘口径

指标与博弈手法

指标博弈手法对策
覆盖率空断言、忽略标记变异测试抽检
问题数批量豁免、降级审计豁免列表
PR 数量拆碎提交改看交付结果与前置时间
构建时长跳过测试必跑清单加超时告警
缺陷数降低严重级判定抽样复核分级标准
只堵不疏必然失效:如果指标要求达不到、又没有任何可行的改进路径,团队除了绕过别无选择。设指标的同时要给出工具、时间与示例,让达标成为可能。
排行比数值更危险:同一指标在团队间横向排名会立刻催生口径调整。改为看自身趋势、看是否比上个季度好,博弈动机自然下降。

易错点

  • 只堵不疏:没有任何改进路径,团队被迫作弊,指标彻底失去参考价值
  • 抽查无结论:抽查结果不反馈则形同虚设,还消耗评审时间
  • 把指标用于个人排名:个体博弈立即出现,数据可信度断崖式下滑
  • 指标之间互相抵消:一边要求缩短构建时长、一边要求提升覆盖率,最终靠跳过测试两边达标

数据来源与参考

  • 软件度量反模式研究与实践总结(Goodhart 定律应用)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌