写点什么

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

  • 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

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

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

关注

评论

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

VMware Fusion Pro 13 for Mac(VM虚拟机)中文版

Mac相关知识分享

深度解读GaussDB逻辑解码技术原理

华为云开发者联盟

数据库 GaussDB DRS #SQL

私有云容灾方案设计浅谈

天翼云开发者社区

云计算 私有云

合合信息发布智能文档处理“百宝箱”,助力文档应用开发

合合技术团队

App 科技 合合信息 文档解析

摊牌了,创业失败了

禅道项目管理

创业 企业管理 决策 战略规划 决策管理

史上最全ThreadLocal 详解

EquatorCoco

Java 算法 JVM

互联网 Java 面试八股文出炉(2024最新整理)

采菊东篱下

java面试

Web3 游戏周报(10.20 - 10.26)

Footprint Analytics

链游

文献解读-Sentieon DNAscope LongRead – A highly Accurate, Fast, and Efficient Pipeline for Germline Variant Calling from PacBio HiFi

INSVAST

基因数据分析 生信服务 长读长测序 Sentieon

深圳!入选北斗规模应用试点城市

江湖老铁

交易所开发:开启数字金融新时代

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 代币开发

一文彻底弄懂spring boot自动转配的过程

不在线第一只蜗牛

Java Spring Boot 后端

生成对抗网络GAN简介

天翼云开发者社区

网络 GAN

提升前端开发效率的五种实用技术

天翼云开发者社区

前端开发

华为云开源引领,KubeEdge晋级CNCF毕业项目

华为云开发者联盟

云原生 边缘计算 cncf kubeedge

解密虾皮商品详情API接口:获取与运用

科普小能手

API 接口 API 测试 虾皮商品详情接口 虾皮商品详情数据接口 虾皮API接口

HyperWorks的模型简化

智造软件

软件 教程 Hypermesh

软件测试学习笔记丨Selenium复用已打开浏览器

测试人

软件测试

VMware ESXi 8.0U3 Huawei (华为) 定制版更新 OEM BIOS 2.7 支持 Windows Server 2025

sysin

华为 huawei esxi OEM unlocker

鸿蒙网络编程系列39-Web组件打印示例

长弓三石

DevEco Studio 开发实例 HarmonyOS NEXT 网络与连接

多所头部高校教师参加鸿蒙生态学堂·师资培训(贵安站),持续赋能万千开发者

最新动态

CST电磁仿真软件如何计算有源S参数

思茂信息

cst cst使用教程 cst电磁仿真

VMware Aria Operations for Networks 6.13 发布,新增功能概览

sysin

vmware aria

软件测试学习笔记丨Selenium复用cookie

测试人

软件测试

OpenHarmony首次亮相欧洲开源会议

科技热闻

区块链开发:DAPP、NFT、DAO、公链与钱包软件

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

一块显卡理解一部完整电影!智源联合多所高校推出小时级的超长视频理解大模型Video-XL

智源研究院

有哪些推荐的8款TODO团队协作工具可以提升工作效率?

爱吃小舅的鱼

TODO 团队协作工具 todo软件

Java EasyExcel 导出报内存溢出如何解决

威哥爱编程

Java EasyExcel JavaEE

颠覆性创新,低成本一天内快速上线体育赛事直播平台!

软件开发-梦幻运营部

详解MES系统的生产过程实时监控与异常处理

万界星空科技

生产管理系统 mes 制造业数字化 万界星空科技mes 生产过程管理

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