警惕度量指标陷阱

news2025/4/27 12:40:45

本文首发于个人网站「BY林子」,转载请参考版权声明。


近日,某群有人发了领导制定的绩效考核指标:

对测试人员的工作成效进行考核,指标是发现的 Bug 的情况,甚至有参考指标细到每个小时要求发现多少 Bug,同时还考虑不同严重程度的 Bug 占的权重也不一样,并附有详细计算公式。当然,细节就不说了,大意是发现 Bug 越多绩效越好,且越严重得分越高。

这可真是一套经过严密设计的考核指标,相信这位指标制定者一定下了一番功夫!

指标固恋(metric fixation)

《指标陷阱》

杰瑞·穆勒(Jerry Z. Muller)所著的《指标陷阱(The Tyranny of Metrics)》对痴迷于使用指标来度量绩效的现象提出“指标固恋”的概念:

  1. 相信基于标准化数据的可比较绩效的数值型指标,替代依靠个人经验和天赋获得的判断力,不但可行,还是可取的;
  2. 相信公开这些指标(透明),可确保机构履行其目的(问责制);
  3. 相信在这些组织内,激励人们的最佳方式是根据其测量绩效进行奖惩,奖励可以是货币性的(绩效薪酬),也可以是声誉上的(排名)。

很多的管理者都喜欢使用看似非常客观的标准化的数据来考察人员的绩效,但人不是流水线上的机器,软件开发过程是一系列的社会化活动,怎么可能通过简单的标准化数据来衡量呢?

度量什么,就一定能得到什么

上有政策,下有对策。当度量指标跟绩效挂钩,指标就会被操纵。

在《指标陷阱》一书中介绍了各行各业的指标操纵案例:

  • 航空公司延长航班预定飞行时间,以提高正点率;
  • 警方只逮捕低级毒贩来提高办案效率,而放任大毒贩逍遥法外;通过不登记报案来降低犯罪率,使得受害者得不到保护,而违法分子得不到法律制裁;
  • 医生避免治疗疑难病例,以维持成功率,使得最需要医生的病人得不到医治;
  • ……

同样,对于本文开头提到的测试人员绩效考核指标,各位专家同仁积极出谋划策,提出各种可以提高绩效或响应该指标的好建议:

  • 指标制定者说啥就是啥,好好配合吧
  • 跟研发搞好关系,多写点 Bug
  • Bug 别一次性都提报, 控制好节奏
  • 有些不那么严重的, 可以屯着, 等下个 Milestone 再报
  • 能拆的 Bug 就拆开来报
  • Fuzzing 和 Monkey Testing 走起,Bug 一堆一堆地出来
  • 准备一块板砖,随时拿手里……
  • 走人!

这件事情很有意思,这样下去测试人员的工作变得简单多了,至于产品质量是否有保障,相信大家也已心知肚明……

如果指标被操纵,看似度量结果很完美,但跟我们真正需要关注的内容可能已经偏离十万八千里。不恰当的度量指标,可能会带来扭曲的、欺骗性知识:可度量的,不一定值得度量;度量得到的东西跟我们真正需要的可能毫无关系;度量的成本可能高于收益;被度量的东西,可能分散我们需要真正在乎的事情上的精力。

让度量发挥它该有的价值

度量指标可能会被操作,导致结果没有意义;度量没用对地方,可能会带来负面结果。但是,度量还是有价值的,只不过,我们需要正确运用度量,让其发挥价值。

那么,该何时使用以及如何使用度量指标呢?《指标陷阱》中介绍了一个核对清单,我们在做度量方案的时候,值得对清单中的每一条都进行谨慎斟酌:最合适的做法是不是根本就不使用指标

Checklist

该核对清单包含 10 个问题,详情如下。

1. 你要度量的是什么类型的信息?

不同类型的被度量对象对度量结果可靠性的影响是不同的:

  • 越接近无生命物质,度量的可能性越大,如自然科学和工程学等;
  • 如果被度量对象受到度量过程影响,度量的可靠性就会降低;
  • 被测对象越接近人类活动,度量过程越不可靠,因为人的自我意识会对度量过程做出反应。

而软件开发是一项复杂的人类社会活动,在定义软件质量相关指标的时候,就需要提防度量有效性被人为地扭曲。

2. 所测信息有多大的用处?

要始终提醒自己,有些可以被度量的活动,并不意味着它值得被度量。有可能越容易度量的东西,对它度量的意义反而越小。例如,前面提到的Bug数量很容易度量,但是把它作为测试人员的绩效指标,对于软件的高质量交付完全没有帮助。

3. 更多的指标有多大的用处?

度量指标可能在辨识异常情况方面会起作用,本来就很好的绩效可能很难通过指标来区分;指标越多成本也越高,甚至成本可能超过收益。因此,指标有用,但也不是越多越好。

4. 除了标准化的度量外,是否还有其他信息源?

对软件质量的度量,人们往往喜欢用工具平台收集到的数据,除此之外,是否还有一些实践过程以及客户满意度等信息的综合考虑?对测试人员的考核或许收集360度反馈更加有效?

5. 度量用于什么目的?

当度量跟绩效挂钩,用来衡量个人或团队工作做得好与坏,就很容易被各种“对策”糊弄;而度量仅是评估现状,用于牵引持续改进将会更有价值。

6. 获取指标数据的成本是多少?

获取信息都需要成本,如果成本太高,再有价值的指标可能也不划算。平衡成本和收益,是务必要考虑的因素。

7. 领导为什么对绩效指标提出要求?

对绩效评估的要求,有时候是源于对情况的不了解。比较常见的有对外包的开发或测试团队的绩效考核,可能是由于不了解供应商的具体情况而不放心。这种情况下是否可以通过更有效的协作和信息共享等方式来增加透明度,而不是简单地用指标衡量?

8. 绩效指标由谁设定,怎么设定?

如果问责制的绩效指标自上而下强加的,由远离一线工作的人设定的标准化公式,就很难发挥效果。前面提到的bug数量作为测试人员的绩效指标就属于该情况。如果能有一线人员参与指标的设定,效果可能会好很多。

9. 请记住:哪怕最好的度量,也受制于腐败或目标转移。

人总会想方设法最大化自身利益,绩效度量计划也就难免会存在缺陷。建议不要采用单一指标来度量,而是综合运用多个指标,让指标之间有一定的制约关系,从而缩小可操纵空间。同时,度量策略也需要定期回顾,持续演进,确保始终在为正确的目标服务。

10. 请记住:有时候承认可能存在的局限性,是智慧的开端。

不是所有的问题都能得到解决,仅依靠指标能解决的问题更少。有些重要情形,需要依赖经验或无法量化的技能来判断和阐释,这时如果想依赖度量指标来解决,可能就会误入歧途。

写在最后

简单说来,度量最关键的有以下三点:

  1. 度量需要以目标驱动,真正为目标服务的度量才可能发挥价值。例如,目标是交付高质量的软件,应该是 Bug 数量越少越好,如果用发现更多的 Bug 数量来度量测试人员绩效更好,那就是本末倒置,显然得不到高的质量。
  2. 度量需要综合多个指标,定性与定量相结合,过程指标和结果指标相结合。这块内容,于晓南的度量系列文章有非常详细的介绍。
  3. 不要过度迷恋度量,小心落入指标陷阱。

推荐阅读

  • 书籍《指标陷阱》
  • 文集:质量度量
  • 文章:《构建测试的体系化思维(基础篇)》
  • 文章:《构建测试的体系化思维(进阶篇)》
  • 文章:《构建测试的体系化思维(高级篇)》

本文首发于个人网站「BY林子」,转载请参考版权声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE L ClassStyle ⑦

目录 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持✨ V u e j s Vuejs Vuejs C l a s s Class Class与 S t y l e Style Style绑定总结 文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持…

scratch绘制正方形 少儿编程 电子学会图形化编程scratch编程等级考试二级真题和答案解析2023年5月

目录 scratch绘制正方形 一、题目要求 1、准备工作 2、功能实现 二、案例分析</

动态规划之下降路径最小和

1. 题目分析 题目链接选自力扣 : 下降路径最小和 如果光看这个题目说明的话, 是有点抽象的. 我们结合实例 1 来看 : 总的来说就是, 起始点是第一行中的任意一点, 每个点只有三个方向可以走即向下, 左下, 右下. 当到达最后一行的任意一点即算作到达终点. 期间不同的路径上不同…

mysql单机安装

准备工作 检测项 检测命令 标配值 服务器内存 free -m 32G 硬盘 df -h 1T seLinux getenforce Disabled&#xff08;disabled指关闭&#xff0c;Enforcing指开启 文件描述符大小 ulimit -n 65535 其他优化 Other Other 清理环境 卸载服务器自带…

佩戴比较舒适的蓝牙耳机有哪些?长久佩戴舒适的蓝牙耳机推荐

​听歌、刷剧、游戏&#xff0c;运动、吃饭、睡觉等&#xff0c;要说现在年轻人除了离不开手机之外&#xff0c;还有就是蓝牙耳机了&#xff01;当然&#xff0c;随着蓝牙耳机的快速发展&#xff0c;各种各样的蓝牙耳机都有&#xff0c;导致很多人不知道耳机怎么选了&#xff0…

四大因素解析:常规阻抗控制为什么只能是10%?

随着高速信号传输&#xff0c;对高速PCB设计提出了更高的要求&#xff0c;阻抗控制是高速PCB设计常规设计&#xff0c;PCB加工十几道工序会存在加工误差&#xff0c;当前常规板厂阻抗控制都是在10%的误差。理论上&#xff0c;这个数值是越小越好&#xff0c;为什么是10%&#x…

Git进阶系列 | 7. Git中的Cherry-pick提交

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第7篇。原文&#xff1a;Cherry-Picking Commits in Git[1] 在本系列的第5部分中&#xff0c;讨论了r…

Facebook如何与品牌合作,提升用户体验?

Facebook是全球最大的社交媒体平台之一&#xff0c;每天有数亿用户在上面发布内容、互动交流。对于品牌来说&#xff0c;与Facebook合作可以帮助它们扩大影响力、吸引更多潜在客户。 但是&#xff0c;与Facebook合作不仅仅是在平台上发布广告&#xff0c;还需要更深入的合作来…

Ramnit病毒分析

概述 Ramnit病毒是一个相对古老的病毒&#xff0c;使用会感染系统内的exe和html文件&#xff0c;通过文件分发和U盘传播。 样本的基本信息 Verified: Unsigned Link date: 19:02 2008/2/12 Company: SOFTWIN S.R.L. Description: BitDefender Management Console MachineTyp…

王道操作系统学习笔记(3)——内存管理

前言 本文介绍了操作系统中的内存管理&#xff0c;文章中的内容来自B站王道考研操作系统课程&#xff0c;想要完整学习的可以到B站官方看完整版。 3.1.1&#xff1a;内存基本知识&#xff08;指令工作原理、编译、链接、逻辑地址到物理地址的转换&#xff09; 内存可存放数据…

【yocto1】利用yocto工具构建嵌入式Linux系统

文章目录 1.获取Yocto软件源码2.初始化Yocto构建目录2.1 imx-setup-release.sh脚本运行2.2 imx-setup-release.sh脚本解析2.2.1 setup-environment脚本解析 3.构建嵌入式Linux系统3.1 BitBake构建系统3.2 BitBake构建系统过程简要解析3.2.1 解析Metadata基本配置Metadatarecipe…

HTML+CSS面试题总结(附答案+视频讲解)

HTMLCSS面试题总结如下 红色标注为常见重点 对应的视频讲解在B站&#xff1a;可以点击免费观看 2023前端高频面试题详解/面试必刷HTMLCSS前端面试题_哔哩哔哩_bilibili 目录 1. 块元素和行内元素有哪些 2. css3选择器 &#xff08;了解&#xff09; 3. css优先级 4. 对we…

java 艺考报名系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 JSP 艺考报名系统 是一套完善的系统源码&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内容是基于Web的艺考报名系统&…

mdk下栈地址相关的知识梳理

mdk中&#xff0c;堆栈地址范围不像在gcc工程中那么容易看出来。过程被mdk隐藏了&#xff0c;单纯从代码层面不好看出来。但是基本的流程是这样的&#xff1a;先确定代码其他部分使用RAM的情况&#xff0c;然后紧跟着已使用的RAM地址&#xff0c;在剩下的RAM地址中分配Stack_Si…

电商数据分析方案和BI强强联合,一站式做分析

搭建一个电商大数据分析平台需要哪些条件&#xff1f;总的来说需要一套满足电商数据分析需求的方案&#xff0c;一个能够提供强大数据计算分析功能和数据可视化图表的平台&#xff0c;比如电商数据分析方案和奥威BI软件这样的组合。 电商数据分析方案BI软件&#xff0c;一站式…

提前出击:如何在故障降临之前解决设备问题?

在现代工业生产中&#xff0c;设备故障和停机时间对企业来说是极具挑战性和成本高昂的问题。为了解决这一问题&#xff0c;预测性维护作为一种先进的维护策略应运而生。本文将探讨预测性维护的概念以及如何通过它在设备故障之前解决问题。 预测性维护是一种基于设备运行数据和分…

111.实战网页建立移动导航

本节课我们建立一个移动导航&#xff0c;如下图所示 首先添加这个button <button class"btn-mobile-nav"><ion-icon class"icon-mobile-nav" name"menu-outline"></ion-icon><ion-icon class"icon-mobile-nav"…

SpringBoot 使用 EmbeddedDatabaseBuilder 进行数据库集成测试

SpringBoot 使用 EmbeddedDatabaseBuilder 进行数据库集成测试 在 SpringBoot 应用程序中&#xff0c;我们可以使用 EmbeddedDatabaseBuilder 进行数据库集成测试。EmbeddedDatabaseBuilder 是一个测试工具&#xff0c;可以让我们在内存中启动嵌入式数据库&#xff0c;并进行测…

PHY芯片的使用(二)使用Vivado SDK调试网络

在使用ZYNQ或者FMQL的以太网时都需要在Vivado BD中勾选Enet0/1,最好也勾选上UART0/1。 如果就使用这两个外设就可是直接生成bit然后导出硬件启动SDK了。 SDK建立工程中有以太网相关的工程&#xff0c;选用最简单的即可如下图。使用这个工程除了选Enet还要选用串口&#xff0c;…

【C】C语言实现三子棋小游戏

这里写目录标题 游戏的整体框架游戏函数的具体实现&#xff08;这里的函数声明都放到game.h中&#xff0c;函数的实现在game.c中&#xff09;初始化棋盘函数玩家下棋电脑下棋判断输赢判断棋盘是否满了 游戏的逻辑及game()的实现game.hgame.ctest.c 今天带大家用C语言来实现我们…