微信号:infoqchina

介绍:有内容的技术社区媒体

软件测试中的黑天鹅:黑天鹅发生的前后

2013-05-21 16:57 InfoQ

《黑天鹅》一书的作者Nassim指出“历史是模糊的。你看到了结果,但看不到导致历史事件发生的幕后原因。”其实,测试何尝不是这样,假如把测试看成一个盒子,这个盒子也是模糊的,你看不到盒子里面是什么,整个机制是如何运行的。 书中描述:“对待历史问题,人类思维会犯三个毛病,我称之为三重迷雾。他们是:

  1. 假想的理解,也就是人们都以为自己知道在一个超出他们认知的更为复杂(或更具随机性)的世界中正在发生什么。

  2. 反省的偏差,也就是我们只能在事后评价事务,就像只能从后视镜里看东西(历史在历史书中比在经验现实中显得更加清晰和有调理)。

  3. 高估事实性信息的价值,同时权威和饱学之士本身有缺陷,尤其是在他们进行分类的时候,也就是进行‘柏拉图化’的时候。” 我很容易联想到,这三重迷雾分别对应测试中的黑天鹅发生之前、之后、以及黑天鹅形成之中的故事,即:发生之前的“盲目预测”、发生之后的“假想解释”、以及黑天鹅形成之中的“柏拉图化”。

“几乎所有关心事态发展的人似乎都确信自己明白正在发生什么。每一天都发生着完全出乎他们预料的事情,但他们就是认识不到自己没有预测到这些事。很多发生过的事情本来应该被认为是完全疯狂的,但在事情发生之后,看上去就没有那么疯狂。这种事后合理性在表面上降低了事件的稀有性,并使事件看上去具有可理解性。”就拿我所生活的这座城市-上海来说,近来的许多事件都在证实着这点:黄浦江上打捞出数千头病死猪、H7N9的流行,昨天突然看到一条“上海自来水中添加了XX”的微博更是令人触目惊心,我们内心都预测这些事情不应该发生,可是实际上却发生了。


这种黑天鹅发生之前的“盲目预测”让我想到软件测试中版本发布之前的“测试评估”。一个产品经过测试团队的集中测试后,发布到用户那里,谁能准确预测是否会出现“黑天鹅”呢?


对于任何一条需求,开发人员的任务就是实现它,无论是由一个项目组实现,还是多个项目组配合实现。但是,对于测试人员,考虑的事情就复杂一些。我们除了要验证这条需求本身的功能实现是否正确,还要验证该需求和其它功能之间的交互,还要考虑客户可能使用的各种场景(Scenario),包括各种组网场景、各种参数的配置等。如果把测试场景和测试特性交互起来,测试就无穷无尽了,并且也没有必要在每一种测试场景下,都验证被测特性的基本功能、异常功能、与其它功能的交互、非功能属性等各方面。


毫无疑问,尽管测试设计人员和测试执行人员精疲力尽的试图覆盖该特性的所有可能的场景,测试人员仍然只覆盖了一小部分的场景下的该特性的部分测试用例,如果没有Fatal的遗留问题,是否该特性的质量就可以评价为A或B,并且认为可以对外发布了呢?这种测试评估工作,与其说是让测试人员对被测对象的质量进行测试评价,不如说是让测试人员对被测对象进行质量预测,因为测试人员所了解的只是部分信息,而不是全部。Nassim说“在这些错误的预测和盲目的希望中,有一些愿望的成分,但也有知识的问题。”我更愿意相信,测试人员对产品质量的预测主要是“知识的问题”,毕竟完整测试是不可能的。 既然测试无法做到完整覆盖,不如在有限的时间和资源内,尽可能覆盖典型的场景。


点击“阅读原文”查看更多内容并吐槽吧。

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Android的独白 【技术蛋糕】Java中的内存泄露是什么样子的?其发生条件是什么? 深度 | 深度学习系列文章Part2:迁移学习和微调深度卷积神经网络(附论文) Python数据可视化案例二:动态更新数据 深入理解PHP7之zval