1、软件测试中的“黑天鹅”

  几年前,我带领的一个测试小组遗漏了一个严重的bug到网上,当用户反馈这个bug后,我们对它进行了深入的分析和重现,最终所有人一致认为,这个bug能够发生实在是机缘巧合,因为它需要多个条件同时发生才有可能触发,比如“XX算法开关必须打开、XX算法开关又必须关闭、XX参数必须取某个特定值、用户的使用环境必须是XX个场景、硬件必须是使用XX接口板、软件必须是XX版本、XX的带宽恰巧又不够。。。”,在用户那里,这些条件有一条不满足,就不会发生这个bug。

  由于这个bug的影响比较严重,又是用户报告的,照例要提交缺陷根因分析报告。其中,报告里有一项“后续如何发现这类缺陷,确保不遗漏?”我们不知道如何避免这样的缺陷再次发生,实际上,如果从正向设计的角度,我们无论如何也不会设计一个满足上述所有条件的用例,也不会去执行这样的测试。不过,我们不得不费尽心思地去思考,这个bug的发生是如何有其合理性的、是可以解释的、因此也是可以预防的,以填补报告里这一项的空白。

不要等待机会,而要创造机会,学习是自己坚持不懈谦虚的,如果大家还想在软件测试上学的更多,走的更远给大家推荐个群:903217991 里面有大牛为带你学习提升,为你整理好的资料。

  前不久我阅读了一本书叫做《黑天鹅》。数千年来,人们认为世界上只有白天鹅,但是发现第一只澳大利亚黑天鹅以后,这种牢不可破的观念被颠覆了。作者指出“黑天鹅事件”满足三个特征:

  - 稀有性,或意外性,即它通常在预期之外;

  - 冲击性,即它会产生极端影响;

  - 事后(而不是事前)可预测性,人的本性促使我们在事后为它的发生编织理由,并且或多或少地认为它是可解释和可预测的。

  很多重要的线上bug不就是测试中的“黑天鹅”吗?它们的发生在你的预期之外、产生了极端的影响、事后人们总是认为这些bug是可以避免的。

  仔细想一想,你所在的项目中是否有“黑天鹅”?2013年1月31日,亚马逊主页瘫痪近1小时,你是否提前预期到了(《黑天鹅》书中写到,“从对称的角度讲,一个高度不可能事情的发生,与一个高度可能事件的不发生是一样的”)?12306网站的瘫痪、高铁事故、ATM取款系统故障。。。,你是否能提前预期到?其实,你可能已经发现,“黑天鹅”离我们并不遥远,总是有那么多被认为不应该发生的现象实际发生了。

  造成“黑天鹅”现象的可能有很多种原因,从测试的角度讲,我们如何来认识软件测试中的“黑天鹅” – 那些总是让人意想不到又产生严重后果的bug呢?

不要等待机会,而要创造机会,学习是自己坚持不懈谦虚的,如果大家还想在软件测试上学的更多,走的更远给大家推荐个群:903217991 里面有大牛为带你学习提升,为你整理好的资料。 2、对“黑天鹅”视而不见

  人们习 惯于对“黑天鹅”视而不见。“社会学家一直错误地以为他们的理论能够衡量不确定的事物”。人们相信通过使用趋势分析工具和复杂的数学公式可以帮助我们很好地预测股票市场的风险、挑选一支好的股票,结果大失所望的人不在少数;人们相信复杂的科学仪器和先进的数学、物理学、天文学等理论可以帮助我们很好地预测地震、海啸、天气,结果经常有令人意想不到的自然灾害发生。

  人们习惯于使用确定性的理论去推测那些不确定的事物,在这个处处都充满了“变数”的时代,“以不变应万变”的做法已不合适。RBT(基于风险的测试)是个不错的方法,有些人会按照既定的套路使用RBT:在项目的某个时间点,邀请相关人一起收集风险、分析风险,然后按照风险分析结果开展测试活动。但是风险是时刻变化的、风险是不能确定的,你不可能提前预期所有的风险,你得学会“以动制动”,动态地、持续地应用RBT技术。哪怕如此,你仍然无法避免所有的风险,仍然会有“黑天鹅”发生,因为软件测试的过程充满了随机性。

  ReqBT(基于需求的测试)是个至少从数学上说很严谨的测试技术,它会用因果图的方法把业务中的每一个原子逻辑规则都表达出来。ReqBT的创始人Richard Bender认为只要使用了ReqBT方法,不会遗漏一个从黑盒角度讲、功能上的、业务逻辑相关的、严重的bug。我深知这套方法的妙处,但仍然对如上的陈述有所怀疑,原因无他,测试中的不确定性太多,没有哪个确定性的理论是银弹,可以保证没有某类的“黑天鹅”发生。

  但这并不表示这些形式或模式确定类的技术没有任何用处、只要使用不确定性的技术比如ET(探索性测试)、RST(快速软件测试)等就好了。应该说,这些确定性的方法(RBT、ReqBT等)和不确定性的方法(ET、RST等)结合起来使用的话,“动静结合”,会更有效地减少测试中“黑天鹅”的发生。

不要等待机会,而要创造机会,学习是自己坚持不懈谦虚的,如果大家还想在软件测试上学的更多,走的更远给大家推荐个群:903217991 里面有大牛为带你学习提升,为你整理好的资料。 3、判断是否是“黑天鹅”

  想知道哪些重要的软件缺陷是“黑天鹅”,哪些不是?只要问一问,这些bug与出现之前所预期的相比较,是否是在预料之中的?

  我们会发现,这些重要的bug大体可以分为两类:一类是可以预期发生的,但是并没有采取及时的措施去规避;一类是不被预期发生的,认为不应该发生这种缺陷。这就启发我们在做RCA(缺陷根因分析)时,对不同类bug的分析会带来不同的收获。

分析可以预期发生的严重缺陷,可以很好地帮助我们改进已经在实施的确定类方法或技术中的不足。比如在实施RBT过程中,为什么没有识别出某个风险?或者为什么对风险级别的估计不足?或者为什么没有对已知的风险采取风险规避措施?再比如在应用MBT(基于模型的测试技术)过程中,为什么某一个因子在建模时被遗漏了?或者为什么基于模型生成测试条件或测试用例时某个重要的参数被忽略掉了?再比如按照企业既定的流程管理软件测试的过程中,为什么在测试策略或测试方案中忽略了这一风险?或者为什么在测试分析和测试设计中没有覆盖这个风险点?或者为什么在测试执行环节没有发现这个缺陷?等等。通过这样对的RCA过程,可以更好地帮助我们改善既有的测试方法或流程。

  分析不被预期发生的严重缺陷,可以为我们开展不确定类测试方法或技术提供更多的输入和想法。例如本文开篇所举的那个关于某算法失效的例子,想通过确定类的测试方法、正向的方式提前设计(也就是预期)相关的测试用例,基本不大可能。相反,我们换一个角度,也许在ET中探索出这个缺陷的几率更大一些,比如适当增加与用户应用环境相关的各种因子组合的复杂场景测试的session。

  《黑天鹅》是一本关于不确定性的书。“有两种认识现象的方式。第一种排除不正常的现象,只关注正常现象。研究者不理会意外事件,只研究正常案例。第二种方法则认为,为了理解这一现象,人们需要首先考虑极端现象,尤其是当它们有非同寻常的效应累积的时候,比如黑天鹅现象。”对于测试而言,如果希望了解我们的不足,这两类缺陷(可以被预期的缺陷和不可以被预期的缺陷)都要分析。

不要等待机会,而要创造机会,学习是自己坚持不懈谦虚的,如果大家还想在软件测试上学的更多,走的更远给大家推荐个群:903217991 里面有大牛为带你学习提升,为你整理好的资料。 4、我们所不知道的更有意义

  “黑天鹅的逻辑是,你不知道的事比你知道的事更有意义,因为许多黑天鹅事件正是由于它们不被预期而发生和加剧的。”作者认为现在的世界由不确定性主导,不论这个结论正确与否,单就测试而言,这个结论是非常适用的,软件测试是由不确定性主导的。测试就是寻找未知的过程,这些未知的事情包括未知的缺陷、未知的被测对象的质量状况、未知的真实的被测对象是什么样的以及所有那些你认为你已经知道的但实际上是你不知道的软件相关的信息,这些未知给予测试挑战的同时也赋予测试很大的意义。

  可以这样说,所有的测试用例都是基于测试人员已知的知识设计出来的,执行这些用例有机会发现那些能够被预期的缺陷;而测试中的“黑天鹅”- 那些重要的不被预期的缺陷,有多少是由测试用例发现的?

  分析每一只“黑天鹅”,会帮助我们发现那些原本对于我们是“未知”的东西,每一只“黑天鹅”的遗漏,都是由于一些“未知”的因素,或者是未知的知识或信息、或者是不知道某些信息的重要程度而加以重视。下一次测试中,就会有意识地尽量拓宽我们的已知领域,减少“黑天鹅”发生的次数。

  探索性测试在拓宽“已知领域”方面功不可没。当我们需要探索时、当我们不知道下一步测试什么时、当我们想要获得更多的想法时,我们使用探索性测试,ET有助于拓宽我们的测试深度和测试宽度,尽可能扩大已知领域的边界,缩小我们未知的领域。

不要等待机会,而要创造机会,学习是自己坚持不懈谦虚的,如果大家还想在软件测试上学的更多,走的更远给大家推荐个群:903217991 里面有大牛为带你学习提升,为你整理好的资料。 5、结论

  你看到一个后果很严重的缺陷,正是由于你认为它不应该发生?这是不是很奇怪?不管你采用什么样的测试方法、你的测试团队有多么强大、你在测试上投入了多少人力物力,测试中的“黑天鹅”总会发生。

  作者在《黑天鹅》书中指出人性的一个弱点:“习惯于学习精确的东西,而不是总体的东西”,并且把“由于只关注那些纯粹而有明确定义的‘形式’而导致的错误”称为‘柏拉图化’”。测试的柏拉图化思想会让你只关注外在的形式,例如测试的流程是否遵守、测试的模板是否应用、测试方法的具体步骤是否实施,而开始忽略其他不那们具体不那么明确不那么美好和解释得清的事务,忽略那些显得有些混乱和不可琢磨的事务,比如在有些人眼里,探索性测试不容易管理、不好解释给别人、步骤不那么明确、有太多不可琢磨的东西在里面。

  就像敏捷里承认变化总会存在而去拥抱变化一样,我们也应该正视测试中“黑天鹅”现象的存在,并尽最大可能地多尝试以减少“黑天鹅”发生的机会(拓展已知领域、减少未知领域),并且一旦“黑天鹅”发生了尽最大可能地把握黑天鹅机会(分析那些未知点,更好地应用不确定类的方法,寻求测试改进)。

软件测试中的“黑天鹅”相关推荐

  1. 什么是软件测试中的黑天鹅

    1,黑天鹅以及软件测试中的黑天鹅 在发现澳大利亚的黑天鹅之前,欧洲人认为天鹅都是白色的.所以说"黑天鹅"代表了一个小概率事件,它罕有发生,但一旦出现,就具有很大的影响力." ...

  2. 拥抱开发过程中的“黑天鹅”

    6月29日,由阿里云研发协同RDC.阿里云云效和云栖社区联合举办的"首届阿里巴巴研发效能嘉年华"上,阿里巴巴资深专家.敏捷教练洪湖带来"拥抱'黑天鹅'"的演讲. ...

  3. 《黑天鹅》读书笔记(part2)--我们从重复中学习,但忽略了从未发生过的事件

    觉得不错的句子收藏 "我从未想说保守主义者通常很愚蠢,我想说的是愚蠢的人通常很保守" 我们对一则信息的反应不是根据它的逻辑特性,而是根据它的环境,以及它在我们的社会情绪系统中的位置 ...

  4. 什么是“黑天鹅现象”?

    你以为一切都是有规律的,掌握了这些规律,你就可以让恐龙继续繁盛.公司继续扩张.股市如同印钞机吗?大错特错,决定世界命运的不是那些规律,你已经被规律蒙住了双眼,没有看到-- 一切都会继续好下去-- 距今 ...

  5. Linux社区遭遇黑天鹅事件

    黑天鹅事件指的是因为天鹅是白的,只有在极其小的概率下才会出现一个黑天鹅,代表发生了极小概率事件.而这样的极小概率事件往往会导致非常严重的后果,因为人们对此类事件毫无防范.比如2007年的美国次贷危机就 ...

  6. 2021-9-20 18点00 程序外生活 - 中国A50指数 机器预测学习跟踪记录 - 回调有点大,但是还是再箱体里面,且没有破前低,恒大黑天鹅继续发酵,等待箱体稳定。

    日线级别:先看是否形成存在箱体震荡来过渡这段时间,观察,今天这么跌都没有破前低,也是比较神奇的. 周线级别:  在长期趋势线这边上下震荡,等待稳定. 月线级别:正常逻辑下,在长期阻力线附近应该是很难向 ...

  7. 2021-9-16 18点00 程序外生活 - 中国A50指数 机器预测学习跟踪记录 - 回调的有点大,因为有恒大这个黑天鹅,等待箱体稳定

    日线级别:突破向上的截至被有点打乱,先看是否存在箱体震荡来过渡这段时间,观察. 周线级别:  9.16重新回到长期趋势线附近支撑,正常应该再次恢复反弹,这地方支撑应该强.看多. 月线级别:正常逻辑下, ...

  8. 《黑天鹅》black swan 高清迅雷下载 DVD BD高清中英双字

    片名: 黑天鹅   英文片名: Black Swan 更多片名: 暂无 导演: 达伦·阿罗诺夫斯基 Darren Aronofsky 制片: Scott Franklin ...... 编剧: Mar ...

  9. 白天鹅黑天鹅灰天鹅?手把手教你用卷积神经网络搞定识别

    来源:读芯术 本文约3000字,建议阅读10分钟. 本文将通过一系列的天鹅图片来解释卷积神经网络(CNN)的概念,并使用CNN在常规多层感知器神经网络上处理图像. 图像分析 假设我们要创建一个能够识别 ...

最新文章

  1. 【RocketMQ工作原理】订阅关系的一致性
  2. html5 meta标签属性整理
  3. Linux下的USB总线驱动 mouse
  4. 为什么软件开发,人多,事少,还会工作量大?
  5. MVC基于角色权限控制--用户管理
  6. android view强制重绘_android view 相关方法 layout draw 布局 重绘 | 学步园
  7. CRMEB开发文档及目录结构
  8. concurrent 底层_万字长文!从底层开始带你了解并发编程,彻底帮你搞懂Java锁!
  9. c#winform控件过多卡顿问题解决方案
  10. POJ 1521 Entropy
  11. 《软件项目管理(第二版)》第 7 章——项目风险管理 重点部分总结
  12. 【周记:距gdoi43天】
  13. j2ee与mysql乱码过滤_J2EE中文乱码处理
  14. 交互式反汇编器专业版IDA Pro的一点介绍
  15. 寻求生态保护与矿产开发平衡点 青海给出“绿色方案”
  16. python有关数据结构问题
  17. 数据库关键字搜索查询html,在所有数据库中搜索关键字
  18. 8.3 Spring Boot集成Scala混合Java开发
  19. ThinkPHP一键检测ThinkPHP漏洞,漏洞检测工具
  20. PLSQL Developer多 表 查 询

热门文章

  1. 中国十大SNS交友网站排名
  2. 大卫·麦克里奇的Excel页面
  3. 关于Google收购FeedBurner的一点感想
  4. android乐视视频直播技术,乐视网进军android平台开发领域
  5. catia 创成钣金设计_CATIA钣金设计实例教程
  6. 【图像修复】基于matlab GUI FMM+Criminisi算法彩色图像修复【含Matlab源码 1507期】
  7. 是敌是友?科技巨头间错综复杂的关系
  8. 架构师之路 — 部署架构 — Overview
  9. springboot+dubbo+redis+RabbitMQ 项目整合实例【附完整源码】
  10. 香港国际珠宝展及香港国际钻石、宝石及珍珠展揭幕