【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

  • 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

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2018-04-17 17:521543
用户头像

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

关注

评论

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

国内大模型打假胜诉第一案;苹果取代三星成为 2023 年智能手机销售冠军丨 RTE 开发者日报 Vol.128

声网

RocketMQ 中冷热分离的随机索引模块详解

阿里巴巴云原生

阿里云 RocketMQ 云原生

2024年要想做好谷歌SEO,你需要了解这些新趋势!

九凌网络

申请开启|成为亚马逊云科技 Community Builder,共建云端社区!

亚马逊云科技 (Amazon Web Services)

数据库

部署SD-WAN需要哪些设备和软件?

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 异地组网

自动化的10项准备工作

FunTester

网络安全中的人工智能:保护未来数字世界的利剑

快乐非自愿限量之名

人工智能 低代码 AI技术 智能化

在线白板软件哪个好?2024年不要错过这7款高效神器!

彭宏豪95

效率工具 在线白板 在线协作 效率软件 boardmix

流式传输 VR 和 AR 内容——实时云渲染服务

3DCAT实时渲染

实时渲染 实时云渲染 云流化

云边协同的 RTC 如何助力即构全球实时互动业务实践

阿里巴巴云原生

阿里云 云原生

拍卖直播APP开发公司选择,延期赔付合同承诺无隐藏费用

软件开发-梦幻运营部

低代码平台的的现状与分析

这我可不懂

软件开发 低代码开发 JNPF

强化加密生态合规性:Token Explorer 助你一臂之力!

Footprint Analytics

区块链 Token

IPQ6010 and IPQ8072:OFDMA support in Wifi6 Solution

wallyslilly

IPQ6010 IPQ8072

ETLCloud详解,如何实现最佳实践及问题排查

RestCloud

ETL 数据集成

低代码开发让量化交易插上翅膀

EquatorCoco

低代码 低代码开发 量化交易

聚道云连接器实现泛微OA与金蝶EAS对接,企业实现数字化转型

聚道云软件连接器

案例分享

无需改动代码:将传统应用平滑迁移到云端

北京好雨科技有限公司

Kubernetes 容器 #云原生

2023 IoTDB Summit:北京城建智控科技股份有限公司高级研发主管刘喆《IoTDB 在城市轨道交通综合监控系统中的应用》

Apache IoTDB

海外云手机的三大实用性

Ogcloud

云手机 海外云手机

阿里巴巴按关键字搜索商品 API (alibaba.item_search)在电商中的需求

技术冰糖葫芦

API

阿里巴巴按关键字搜索商品API(alibaba.item_search):如何保证阿里巴巴按关键字搜索商品API返回的商品信息的准确性

技术冰糖葫芦

API 编排

模型服务网格:云原生下的模型服务管理

阿里巴巴云原生

阿里云 云原生 服务网格

掌握 C# 变量:在代码中声明、初始化和使用不同类型的综合指南

小万哥

C# .net 程序人生 软件工程 后端开发

SD-WAN满足企业不断增长的网络需求

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商

低代码与智能化办公:解锁工作效率的新纪元

不在线第一只蜗牛

人工智能 低代码 数字化 智能化 智能办公

典型场景解析|PolarDB分布式版如何支撑SaaS多租户?

阿里云瑶池数据库

数据库 阿里云 SaaS 多租户

独立站运营应该知道的十佳 WordPress SEO 插件

九凌网络

云原生场景下,AIGC 模型服务的工程挑战和应对

阿里巴巴云原生

阿里云 云原生

2024-01-17:lc的30. 串联所有单词的子串

福大大架构师每日一题

福大大架构师每日一题

低代码平台的的现状与分析

这我可不懂

软件开发 低代码开发 JNPF

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