【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

  • 2018-04-17
  • 本文字数:4176 字

    阅读完需:约 14 分钟

本文要点

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

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

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2018-04-17 17:521561
用户头像

发布了 391 篇内容, 共 127.3 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

成长练习

escray

学习 极客时间 朱赟的技术管理课 8月日更

04 设计模式之生成器模式

陈皮的JavaLib

Java 面试 设计模式 8月日更 生成器模式

架构实战营 毕业设计

夏日

架构实战营

毕业设计

yu

架构实战营

快递员应不应该送货到家?

石云升

用户体验 体验设计 8月日更

你的登录接口真的安全吗?快看看你有没有中招!

xcbeyond

架构 安全性 8月日更

架构1期模块四作业

五只羊

架构实战营

架构实战营-毕业设计

fazinter

架构实战营

毕业设计

菲尼克斯

架构实战营

数组结构--线性表知识

喵叔

8月日更

架构实战营-模块四作业

fazinter

架构实战营

模块四作业

seawolflin

架构实战营 毕业总结

CR

项目白手起家之Java对象的解读

卢卡多多

Java 对象 8月日更

模块四

江南巴飞特

架构训练营——毕业总结

开拓纪

架构训练营 毕业总结

区块链公益发展观察:落地成效尚可,全面推广受限

CECBC

华为区块链,构建可信政务服务

CECBC

架构训练营 模块四

小卷儿

区块链技术影响的 10 个领域

CECBC

架构实战营-毕业总结

fazinter

架构实战营

模块4 千万级学生管理系统的考试试卷存储方案

SAKIN

模块四-考试试卷存储方案

kk

架构实战营 毕业总结

夏日

架构实战营

学生管理系统-考试存储架构设计

babos

#架构实战营

【LeetCode】第 N 个泰波那契数Java题解

Albert

算法 LeetCode 8月日更

毕业总结

yu

架构实战营

带孩子VS带团队,不变的是项目管理

Ian哥

项目管理

架构实战营-模块五作业

fazinter

架构实战营

千万级学生管理系统的考试试卷存储方案

gawaine

架构实战营

道术之间:人文社科教师为什么要学习AI?

脑极体

怀疑在软件测试中所起的作用_软件工程_Ben Linders_InfoQ精选文章