查看原文
其他

Stop!质量可以评估,而不能度量

James Bach 软件质量报道 2022-06-03

【译者注:这是上下文驱动测试流派掌门人James Bach的文章,文中观点犀利,即使有些观点似乎有些偏激,还是值得大家好好品味。虽然今天我们强调度量、拿数字说话,推行KPI,但也带来许多问题甚至欺诈】


如何度量(measure)质量是一个普遍的问题。我想给出的答案说起来容易做起来难:“ 停下来! 质量不能度量,但可以讨论和评估(assessed)。把注意力放在评估上而不是度量上!

这样的回答并不奏效,因为它听起来像是一些毫无意义的、标签上的区别——大多数人认为度量和评估是一回事。这听起来会让人害怕数字,我的客户可能会问我:是不是在大学里学的是语言学而不是工程学?(我爱数字! 但我从来没上过大学! )

什么样的答案更有效?我想到了两个选择。我可以就一些值得考虑的数据给出一些浅显的建议,我的客户希望听到这样的建议,但是:

  1. 并确实不能回答这个问题;
  2. 最终也不会使它们清晰、可控和胜任;
  3. 最重要的是它会损坏科技发展的工厂范式——也就是常见的世界观:一切重要的事可以通过机器人或者人被压迫到表现得像机器人来完成。

或者,我可以像教授一样,仔细解释度量和评估之间的区别,以及它们的重要性。在本文中,我将采用专业的方法。迈克尔·博尔顿告诉我,我把这篇文章写得太高深了,你是不会读的。也许他是对的。然而,你知道,有时真理是多么希望你说出来,不管有没有人听?这就是我今天的感受。


~ 介绍计量学 ~

度量是“一个通过实验获得一个或多个量值的过程,这些量值可以合理地归因于一种现象、物体或物质的特性,其中该特性具有一个量值,可以表示为一个数字和一个参考值。”  。这是来自国际计量学的词汇,对于赢得关于度量的争论是一个很好的参考。

这个迂腐定义的要点是,度量是指以合理的方式给事物分配数字,这样我们就可以用这些数字做出合理的决定。

在科学领域,计量学是一门严肃的学科。在软件开发领域,它应该也是严肃的,但更多时候它只是一场戏剧——一种对数字的仪式性使用,为一个不合理的管理过程蒙上科学的光环。人们一直试图计数那些没有任何意义的东西,如测试用例数。

下面是为什么你应该对软件产品质量的度量表示怀疑。


1. 质量不能客观全面度量

度量是发现某些事物的状态的一种方法。我们要了解我们的产品的状态,但很多事情是可以度量的,产品的质量却不在其中。至少,当客户、用户和业务人员想知道“产品的质量是否好”或“质量比上个月好还是差”时,在任何意义上,它都不能涵盖他们所谈论的所有内容。

度量质量有什么难的?当我们想到的质量,我们想到的是产品的“好”。然而,好并不是任何事物的固有属性。这是一种社会建构。所以,我们面对的是至少四个方面的问题:

  • 顾名思义,“” 总是植根于某些人的感觉中,而其他人可能不会有这种感觉,这是你作为人类所知道的
  • ” 至少是人、产品和环境的三方面关系。人的地位和环境会随着时间的推移而改变,因此即使事物本身没有改变,它的质量也会改变。你从社交媒体上清楚地知道这一点:你在推特上开的一个十年前被认为很有趣的玩笑,再次被发现时可能导致你今天丢掉工作。
  • 是许多变量之间神秘的相互作用所产生的一种现象。随着时间的推移,我们观察这些变量,并通过我们扭曲的感知和记忆印象来过滤它们。没有单一种类的数据值得关注,这是一个组合的数据。而且,我们也没有可靠、没有争议的公式来将这种组合数映射到单一尺度上的一个值。我们也缺乏一个度量模型——这样的数量计算可以推导出来。在机器学习系统中,度量 “好” 的奧秘是显而易见的,这些系统可笑地、错误地分类了事物。或者当我们可笑地爱上了错误的人,我打赌你一定经历过这种事。
  • ” 的判断往往是社会风险。我们会根据影响他人的方式来改变自己对质量的看法。例如,如果我问你是否认为一个产品是不好的,你认为它是坏的,但是你知道:你的诚实和直接的答案会让我取消你的项目和失去你工作中所有的朋友。你真的会坚定不移地打算告诉我真相吗?或者你会给你的回答涂上美好的颜色。你一定也遇到过这种情况。

2. 质量可以部分度量

好消息! 不要让我在上面写的任何东西过多地打扰你。以方便度量的方式定义和阐明需求并不是错误的。尽管我声称:无论你做什么,都不会导致对你的服务或产品质量的客观 “度量”,但它可能是有用的! 这可能就足够了。它可能会要求你需要做一个质量评估。

人们通常通过简单地将质量从客户理解的东西重新定义为有限的和法律上的东西来应对度量质量的挑战。他们用严格的合同条款来定义需求。他们制定了一组“验收测试”,如果没有一个测试“失败”,这些 “验收测试” 将被断言为 “产品有效”。这是一种叫做“目标置换(goal displacement)” 的游戏,由此产生的度量结果被度量专家称为替代度量。如果你能让你的客户同意玩这种游戏(接受被取代的和替代的目标,放弃对你的产品感到满意的欲望),如果你选择不关心他们是否真正满意你的产品,也许你会感到快乐。然而,科技的历史上充斥着废弃的产品和萎缩的公司,它们忽视了难以捉摸但却持久的质量现实。就我个人而言,我不想在惹恼顾客的同时发财。你明白我的意思吗?

尽管如此,也许我真正需要的是对质量的部分度量。也许,如果我能够度量金子的纯度和重量,我不会介意:没有技术上的方法分辨金子是否有益或伤害社会,或任何其他方面的“好”。如果我只想卖出黄金,那么黄金的经济可量化方面可能是对我来说唯一重要的方面。

与其说我们在度量质量,不如说我们可以度量关于质量的线索(clues)。我们可以收集指标并使之有意义。为此,我们可以使用多种可度量的数据。


3. 真正的目标可能是
对产品的状态进行有用的评估

主观性是有帮助的。我能让你给一个产品打1到5星的等级,你也能做出评论。这就是你自己的感受,映射到一个数字上。这是主观评价,也是一种评估,你通过解释和整合经验,然后通过你的讲故事机器(story-telling machinery)来过滤。这种评级是出了名的不可靠,如果我对某个产品感到愤怒,我不会给它打四星级的评价,即使它基本上是好的,一部分原因是我有偏见,另外的原因是希望我的观点能够产生影响。然而,第三方可以通过观察趋势、不连续性和上下文来从主观选择的数字中获取含义。在这种情况下,并不是评级本身有任何固定的意义,而是它与其他收集的数据一起构成完形(Gestalt)。

我们可以通过系统地回顾和讨论相关数据的不同方面来改进简单的主观评估。它仍然是主观的,但评估变得更加准确和可靠。

我最近了解到assessment(评估)这个词来自拉丁语,意思是“坐在一起(to sit with)”。在我解释词源和常用用法时, assessment 是指使用证据进行评估,这比度量更重要。您可以使用度量进行评估,但也可以使用任何证据进行评估,无论它是否是度量过程的结果。例如,你可以不用尺子或压力表就能判断出你的轮胎爆了(彻底瘪了),因为它看起来很明显是爆了。

那么,度量只是达到目的的一种手段。其目的是:收集有效的证据,为我们的质量评估提供信息这些质量评估可用于制定业务决策(例如,何时发货;产品团队有多好;产品或团队的问题是否持续、积累或得到解决?)
我们可以通过收集以下证据来评估质量:
  • 我们如何测试。我们测试了什么,忽略了什么?报道中有很多有趣的方面,如果对报道没有理解,我们的发现也就无法解释。
  • 我们发现了什么。具体的问题或缺少令人关注的问题。我们需要了解调查结果的含义,而不仅仅是统计报告。
  • 这些将告诉我们商业风险。我们必须把调查结果与我们项目的目的、业务和客户联系起来。这些都不能归结为任何简单的公式。这一切都需要人的社交能力,而且常常需要大量的讨论。


4.任何用于评估而度量人的系统,都会成为系统性欺骗的手段

当你试图度量软件质量时,你是在间接地度量创造软件的人的能力和表现,因为软件实际上是人类解决问题所留下的痕迹。它没有别的东西。我的意思是,当管理层创建系统来监督员工时,员工不会无所事事。他们会发现如何使用这些系统来创造积极的印象和避免消极的印象。当管理层希望用度量来代替复杂和多结构证据时,而且管理层不希望参与探讨什么才是重要的时候,这一点尤其容易做到。当所有相关维度都缩减为少数几个 “关键绩效指标” 时,聪明的人就会有很大的回旋余地。

任何一个在测试中使用自动化的人都知道,如果你透露出你花了多少时间和遇到了多少麻烦才让自动化基本能跑起来并能继续正常运行,这可能会产生很严重的后果。你可能会因为轻率地认为输出检查很容易自动化(所有的广告都这么说!)而被指责为不称职。所以,你把多余的时间藏起来,让自动化测试看起来很简单。通过这样做,你可以让管理层相信这真的很容易——让他们对自动化的幻想永存。如果没有人用已自动化的测试用例或每单位时间执行测试用例数来 “度量” 你的进度,你就不需要这种欺骗

这就是假优化问题。任何涉及人类判断力的情境,当其中存在一个只能部分度量的隐性过程,这时就容易受到这种功能障碍的影响。人们倾向于“朝着有光和希望的方向”的优化,并在黑暗中隐藏低效率。当你准备在家里开派对的时候,你会把把所有的杂物都扔进房间,锁上房门。问题是,几乎总是有许多方法可以优化,而不是对产品或项目的健康造成危害。尽管根据我的经验,这并不一定意味着彻头彻尾的欺诈,但在这种情况下,欺诈是令人沮丧的普遍现象。更重要的问题是,任何一个或多个 “坏数字” 都可以通过各种方法 “变得更好” 但只有其中的一些方法才能真正地使系统变得更好

你用漏洞数来度量质量吗?以下是使质量看起来更好而不是变的更好的方法
  • 不要公开报告错误,也不要跟踪它们。
  • 不要为客户建立一个可靠或简单的方法来报告现场的问题。
  • 将错误报告降级为低严重性,然后制定规则忽略低严重性错误。
  • 制定一个规则,只有当存在无可争辩的证据证明错误违反了书面要求并且易于复制时,才报告错误。
  • 在每个bug报告表单中报告多个问题。
  • 只雇佣初级和未经培训的测试人员。
  • 假设100%自动化是你的目标,那么自动化只是完成许多简单的检查,然后吹嘘你是如何完成 “成千上万的测试”。这样你不会发现很多错误,但你会看起来很忙,有很多代码可以显示出来。
  • 当错误被报告时,开发人员表现出愤怒和悲伤,这样测试人员会对报告任何事情感到气馁。
  • 把你的测试外包给一家想取悦你的公司,让它知道你对任何质量投诉都不满意。
  • 摆脱测试人员,说 “质量和测试是每个人的责任”,更少的错误会被报告,他们将是容易的错误。

5. 度量的冲动通常是
由人们的控制欲望所驱使的,
就好像他们是没有生命的物体一样

大家都知道,人是麻烦的,人们很难相处。任何抱怨 “会议太多” 的人都是指其他人的会议。我们抱怨糟糕的文档,我们指的是其他人写的文档。管理者常常渴望快乐、乐于助人、任劳任怨的员工,他们把自己的观点和风格留在家里。顺从,服从,你们这些无赖!

这就是为什么我认为:度量产品质量的冲动不是出于对冷漠理性的热爱或需求,而是出于对热议的恐惧,希望“客观的度量”能够防止尴尬和愤怒。否则,就没有任何意义了!我喜欢数学、统计学、概率论和质量工程。你必须承认我是一个数字爱好者,但我还是不想度量质量。当我帮助获奖软件作为Borland C++的测试经理时,我是12个管理团队的一员,他们讨论了质量问题,我们一起决定是否足够好。从来没有人建议度量质量,我想那是因为我们彼此相处得很好。

也许与其度量质量,不如交些朋友。


总之,我并不反对收集数据。我的建议是:
  • 有许多有用的数据,其中只有一些是可以度量的
  • 经营一家企业合理地要求对质量进行客观的度量,这种观点是不合理的。
  • 度量的另一种方法是评估,这实际上是每个人在现实世界中所做的事情,即使他们声称是在度量质量。
  • 评估质量是一个过程,它可以包含度量,而不必本身就是一个度量过程。

参考:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存