[关闭]
@Rays 2018-04-17T08:42:35.000000Z 字数 4509 阅读 1218

怀疑在软件测试中所起的作用

文化&方法


摘要: 对我们自身及大多数人所确信的事情秉持怀疑态度,这可促使我们脚踏实地,全力以赴地努力做好。对我们自身的及他人的确定感做出怀疑,这是一种健康的实践,将有助于我们解决问题,并避免产生更长远的问题。怀疑可使我们成为更好的测试人员。

作者: Ben Linders

正文:

本文要点

  • 对我们自身、其他大多数人,以及确定性事务应持怀疑态度。
  • 拒绝确定性,对任何事情持怀疑态度。
  • 健康的怀疑态度,以及合理的怀疑,测试可从中收益。
  • 一些批判性思维法则有效地扩展了测试者工具。
  • 假定天天都是愚人节。

对我们自身及大多数人所确信的事情秉持怀疑态度,这可促使我们脚踏实地,全力以赴地努力做好。对我们自身及他人的确定感做出怀疑,这是一种健康的实践,将有助于我们解决问题,并避免产生更长远的问题。怀疑可使我们成为更好的测试人员。

Zeger Van Hese是一位独立测试顾问。在2018欧洲测试大会(European Testing Conference)上,他做了题为“怀疑的力量:成为一名软件怀疑论者”的主题演讲。InfoQ以采访和文章全程报道了此大会。

在小册子《怀疑的力量》中,Van Hese介绍了他是如何接纳怀疑态度,给出合理的怀疑,并解释了怀疑将如何影响测试。

InfoQ采访了Van Hese,访谈内容涉及:怀疑和怀疑态度的日常表现;怀疑态度的一些法则及这些法则如何应用于测试;心存怀疑是如何使其成长为一名测试人员的。

InfoQ:是什么使您决定成为一位软件怀疑论者?

Zeger Van Hese:我无法给出某个具体的时间点,或是某个具体的触发事件。这是一种持续多年并且愈发强烈的情怀。我所得到的经验越丰富,就越是认识到自己存在更多的未知之处,只是流于表面。我周围不少人似乎对自己非常确信,而我总是对自己的知识、能力和决定持怀疑态度。经过多年,我认识到,软件团队是一个复杂实体,其中的事情通常并非黑白分明,而更多情况下是模糊不清。对于那些我曾确凿无疑表述的事情,经验使我超越事情本身进而产生怀疑,这有助于我取得提高。如果一个人所从事的领域是需要以“给出保证”为工作职责,那么秉持怀疑态度无疑是格格不入的。

我并没有将怀疑深藏心底,而是决定去面对它们。我想对此究根问底,并用一年的时间完全投入所有与怀疑态度相关的事情中,希望从中发现一些有助于我开展测试并解决怀疑的蛛丝马迹。这是一个美好的过程,我在欧洲测试大会上的主题演讲以及附带论文中对此做了介绍。

InfoQ:持怀疑态度和怀疑的日常表现是什么?

Van Hese: 在一开始时,我们在了解了自身所存在的偏见后,会对自己产生怀疑态度。我们无法相信自己的所见、所闻甚至是记忆。意识到我们每天都很易于被愚弄,这使得我们脚踏实地,全力以赴地努力做好。

此外,对于大多数人所相信的事情,我尽量持怀疑态度。在与他人分享你的意见时,你很难改变主意。很难在别人认定的事物、传统思维以及“所接受的真理”上进行争辩。如果某个理念只是一个人提出的,那么对此可能会出现一些分歧或争论。但是如果有多个人认同某事就是真相时,我们自己往往也不会做进一步的质询。

我自身在怀疑态度上的经历告诉我,也应对确定性持怀疑态度。确定的感觉是十分棘手的事情。科学研究表明,无论人们在感觉上是多么的确定,但确定性并非一种有意识的选择,也不是一个思维过程。与爱情或愤怒一样,确定性是一种源自于大脑的机制,独立于理性而发挥作用。在我们相信某事为真时,我们最终也无法相信自己,认识到这一点是非常重要的。或许有时我们应该相信自己,认识到我们并不知道答案。

InfoQ:您能列举一些怀疑态度的法则吗?

Van Hese: 当然。有很多法则可以帮助我们增强怀疑态度。Carl Sagan在他所著的《恶魔萦绕的世界:科学是黑暗中的一支蜡烛》(Demon Haunted World - Science as a Candle in the Dark)一书中,给出了他自己提出的一套称为“Baloney检测工具”的实用法则。还有一些人也分享了他们是如何有效地持有怀疑态度的经验法则。我觉得其中有一小部分十分有用,列举如下:

奥卡姆剃刀

这是一个非常易用的经验法则。在解释某事时,如果存在两种不分伯仲的假设,那么选择其中更简单的,即需要做出最少假定的。

逆火效应(The backfire effect)

仅仅因为一个假设是自己提出的,就过份依赖于其,这时就会产生逆火效应。应尽量避免这种做法。在追求知识的过程中,假设只是其中的一个步骤。扪心自问为什么自己会对此想法情有独钟,并尽量将该想法与其它一些选择进行比较。

不要受来自权威说辞的影响

来自权威的说辞通常如此:“我是对的,因为我是专家”。无需将权威的说辞看得过重,因为这些“权威”在过去曾犯过错误,他们将来同样也会犯错误。

“如果我是错的?”

当你要做出一个重要假设时,尝试用这个问题问问自己。检查潜在的双方可能。这样一旦信息被证明是错误的,你也有退路。

对未知之处了然于胸

找出任何项目或情况中的未知之处。你无法对任一缺失变量做到面面俱到。但如果能做到认识自身的未知之处,那么一旦有新的信息出现,这将有助于你做出反应。

证伪

总是寻找假设可被证伪的方式。无法测试或不可证伪的命题是毫无价值的。

谨防偏见盲点

偏见盲点是一种认知偏差,它导致人们能看到偏见对判断他人的影响,而看不到偏见对判断自身的影响。

假定每日都是愚人节

在我看来,这是最重头的怀疑法则。一年中只有在愚人节当天,每个人会在看到、读到或听到所有内容时切换到一种“超级谨慎模式”,而在第二天就会放弃这种模式。我尽可能提醒自己,每天都是愚人节。

InfoQ:您是如何在测试中应用这些法则的?

Van Hese:早在2002年出版的经典测试书籍《软件测试的经验与教训》(Lessons Learned in Software Testing)中提出:“如果你认为自己是个傻瓜,那么你就很难以被欺骗”。软件行为以及我们的感官行为会欺骗我们,这正是这些怀疑法则在测试中发挥作用之处。

在你看到一份图表或报告时,问一下自己:“它们是什么意思?”、“它们表现了什么?”,尤其是,“它们并未显示出什么?” 图表的目的通常在于帮助人们解读数据,但它们有时只会误导我们,影响我们的测试方式。图表或报告可能会扭曲数据,而测试策略和决策通常基于这些数据。用批判性的眼光看待它们,有助于避免产生进一步的问题。

要将合理的怀疑纳入到我们的日常测试实践中。有一种简单的做法,即使用安全语言。如果你使用了“它肯定有效”、“我确定就是这个行为”等绝对性用语时,你最好是绝对正确的,否则你就会失去信誉。我鼓励大家使用“也许、“可能是”、“到目前为止”或“看起来”这样的表达,给自己留出一定的回旋余地。

怀疑态度建议我们,在至少能够核证一些事实之前,应拒绝任何确定性,并暂时将一些确信束之高阁。这种做法非常强有力,可做为测试人员的一种日常工作方式。永远不要认为你所收到的信息就是全部的真相,甚至不要相信它们是正确的。我并不是说人们对你说谎了,而是说人们可能并不了解全部的真相。他们告诉你的,是他们所见的事实。如果我们的开发人员向我们保证:“我们不需要对应用的这一部分做整体重新测试,因为修复程序针对的是其它一些地方,而这个区域并未受到影响”。这时,如果我们听从了他们的建议,会发现应用的一些重要区域甚至不再工作,并只能在出现问题后去再去寻找解决出路。我们真的知道某事是否将会受影响吗?开发人员在扩展他们的代码时,有时出现一些神秘的状况。

“假定今天是愚人节”法则非常适用于测试。在分析需求时,问问自己:“有什么收获?”、“我错过了什么?”、“当然这不可能是全部?” 。在做部分测试时,如果一切都看起来很完美,那么问问自己:“有什么收获?”、“什么是我没有看到的?”。如果看到软件行为异常并需要提交软件缺陷时,对自己说:“等一下,慢下来,这真的是一处软件缺陷吗?我的系统配置是否正确?我的测试数据是否有问题?我所看到的行为真的是错误的吗?还是由于其它原因导致了这一切?”。如果你感觉所读到的或所见的信息存在问题,那么对此做出检查,查找对其有贡献的多个来源。

InfoQ:作为一名测试人员,您从怀疑中得到了什么?

Van Hese: 我知道人们对怀疑颇有微词。毕竟,怀疑似乎并没有让你走得很远,也不会使你赢得奖励,得到晋升。这所导致的结果是,确定性和过度的自信大行其道。但我已经看到怀疑与智慧,知识和技能已在关联,这使我认为怀疑肯定会发展得更好。这就是为什么我主张对怀疑做重新评估的原因。我们开始以不同的方式看待怀疑。它并非一种表示软弱的迹象,而是一种集合了能力和文化的标志。

我之前提到,确定性作为一种情感,它和愤怒或爱情一样,不一定是出于一种正确的判断。最大的问题在于,当我们认为自己知道某事的那一刻起,我们的大脑就会进入一种自动驾驶模式。从我们认为自己知道解决方案或答案的那一刻起,我们就不再对其做批判性的思考。怀疑我们自己和其他人的确定感,这是一种好的做法,有助于我们去解决问题,并从长远看可避免出现更大的问题。

一旦你新加入了一个团队,或新分配了一个项目,这时你需要迅速地消化大量的信息。你必须加快速度,虽然没有人期望你能从一开始就无所不知。“凡事在做成之前,不可引以为真”,这是长期流行在顾问人群中的一个座右铭。我知道它是起作用的,我承认,过去我甚至亲自做过,但我现在更喜欢不再假装。我现在的一般做法是,在对事情有更好的理解之前,我不会做出结论,而是会说“我目前不清楚”。我鼓励大家也这样做。

我相信,如果能以合理的方式做出怀疑,我们就会成为更好的测试者。怀疑态度的关键在于持续地、积极地应用科学的方法。怀疑态度的最大挑战在于,如何在两种看似矛盾的态度之间找到一个平衡点,即对新的观念持开放态度,同时也对所有的新旧观念做出怀疑审查。

我最后给出的建议是:怀疑,但应作出合理的怀疑。对所有事物持怀疑态度,包括你自身在内。保持思考能力,不要失去好奇心。

InfoQ以问答、总结和文章全程报道了2018欧洲测试大会。

关于被访者

Zeger Van Hese认为自己是一位需要毕生学习软件测试技能的学生。他曾担任Eurostar 2012大会的程序主席,也是探索测试荷兰研讨会(DEWT,Dutch Exploratory Workshop on Testing)和比利时研讨会(BREWT)的联合创始人。他在自己的博客TestSideStory和Twiiter账号@testsidestory上推出了一些测试实践,并定期在一些国家级和国际会议上演讲。他在2013年创立了自己的公司Z-sharp。

译者注:文中大量使用了“skeptical/skepticism”和“doubtful/doubt”。两种用词都可直译为“怀疑”,区别之处在于,前者强调的是一种难以动摇的怀疑态度,而后者强调的是尽管经过了一些调查依然无法确定的状态。因此在本文中,“skepticism”译为“怀疑态度”,“doubt”则直译为“怀疑”。

查看英文原文: The Power of Doubt in Software Testing

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注