`

Bug的类型

 
阅读更多

美国计算机科学家、图灵奖获得者詹姆斯·尼古拉·格雷(Jim Gray),在他的著名的论文“Why do computers stop and what can be done about it?”中首次提出了程序bug的类型,比如玻尔bug(Bohrbug)、 海森堡bug(Heisenbugs)等用著名科学家名称命名的bug。后来又出现了更多的bug类型。现在,让我们来看看它们都是什么bug类型。

 

玻尔bug(Bohrbug)

大多数我们遇到的bug都是可以重现的,这些bug被统称为玻尔bug(Bohrbug)。它是用丹麦著名物理学家、诺贝尔获得者尼尔斯·波尔的名字命名的。波尔首先在1913年提出了一个简单、易于理解的原子模型概念。在波尔的模型中,原子中的电子的路径和动量是可预知的。同样的道理,玻尔bug(Bohrbug)也是可预知的。如果让软件在相同的条件下运行,你可以让bug再次显现。例如,如果程序遇到空指针异常会崩溃,那么,设定相同的输入条件,你可以轻易的让它们重新。

 

海森堡bug(Heisenbug)

所有有阅历的程序员都遇到过这种情况:有个bug让程序崩溃了,但当程序重启后,这个bug消失了。不论你用多少的时间和精力来试图让bug重现,bug就是人间蒸发了。这样的bug被称为海森堡bug(Heisenbug),它是用德国物理学家、量子力学的创始人、“哥本哈根学派”代表性人物维尔纳·海森堡(Werner Heisenber)的名字命名,隐射其著名的“测不准原理”(又称“海森堡不确定性原理”)。根据他的这个理论,在某一个给定的时间点,一个电子所处的位置是无法确定的,也无法跟踪它的轨迹。当你去debug、探测、隔离一个bug时,你的这些动作会导致bug改变它们的行为表现,这些bug就叫做海森堡bug(Heisenbugs)。这种事情是有可能的,比如,如果你使用未初始化的变量,这会导致一个bug出现。然而,当你试图debug这个程序时,程序却没有任何异常,因为很多的debug工具会自动初始化变量为0,所以这些bug将不会再现。

 

德国物理学家、量子力学的创始人、“哥本哈根学派”代表性人物维尔纳·海森堡(Werner Heisenberg)

曼德博bug(Mandelbug)

当bug产生的原因过于复杂而难以理解时,bug的出现也变得没有规律,这些叫做曼德博bug(Mandelbug)。它是用分形几何学之父本华·曼德博的名字命名。例如,操作系统中基于任务调度产生的bug就属于曼德博bug(Mandelbug)。

 

薛定谔bug(Schroedinbug)

有时候,一个可以运行的程序,当你去看它的代码时,发现里面有一个bug或有某些问题,程序完全不可能在这样的bug下运行。但你再次运行这个程序时,bug突然就其作用了,程序崩溃的了!虽然这听起来很诡异,但这样的bug确实存在,而且被叫做薛定谔bug(Schroedinbug)。它是用奥地利理论物理学家、量子力学的奠基人埃尔温·薛定谔的名字命名。隐射薛定谔著名的薛定谔猫思想实验。在量子力学中,像原子这样的粒子可以存在于两种或两种以上的量子状态中,但薛定谔认为,在更典型的物体,例如一只猫——由很多原子构成——存在于两种状态下的可能性是没有的。他提出了一种思想实验:把一只猫、一个装有氰化氢气体的玻璃烧瓶和一个放射性原子核放进封闭的盒子里。当盒子内的监控器侦测到衰变粒子时,就会打破烧瓶,杀死这只猫。根据量子力学的哥本哈根诠释,在实验进行一段时间后,猫会处于又活又死的叠加态。可是,假若实验者观察盒子内部,他会观察到一只活猫或一只死猫,而不是同时处于活状态与死状态的猫。而在量子物理中,这被称作叠加态:猫同时处于生和死的状态。

 

回到我们的bug上,因为你在代码中发现了这个问题,你改变了程序的输出——程序要么就继续运行,要么崩溃。所以,这种bug就叫做薛定谔bug(Schroedinbug)。

还有几种其它类型的bug没有在这里列出,例如“成长的bug(aging-related bugs)”——只有在程序运行很久之后才会出现的bug。

[英文原文:Types of Bugs ]

via : http://www.vaikan.com/types-of-bugs/ 

  • 大小: 79.7 KB
  • 大小: 33.6 KB
分享到:
评论

相关推荐

    bug类型和等级划分

    解释测试bug分类的技术文档,可以帮助bug的初学者

    软件测试bug统计分析图表

    bug统计分析图表 bug统计分析图表 bug统计分析图表

    SonarQube检测出的bug、漏洞以及异味的修复整理

    SonarQube检测出的bug、漏洞以及异味的修复整理。包含是什么bug,漏洞以及异味。以及怎么修复案例,一目了然

    BugFree(Bug跟踪管理系统) v3.0.rar

    BugFree3.0版将浏览器、如何发现、Bug 类型等字段全部从基本字段移除,基本字段只保留标题、模块路径、指派给、抄送给、复现步骤等常用字段。其它都通过自定义字段来扩展。可以针对自定义字段设定可编辑阶段(新建、...

    SSM项目ssm软件bug管理系统.zip

    4. 数据可视化:系统提供了丰富的数据统计和分析功能,如Bug数量统计、Bug类型分布、Bug解决时长等,帮助团队更好地了解项目进展和问题所在。 5. 跨平台支持:系统采用Web方式访问,支持多种浏览器,方便团队成员...

    BUG统计图表模板1

    按模块统计按BUG严重级别统计按BUG类型统计UI 界面设计,页面显示问题UE 用户体验、易用性FC 功能问题CK 操作提示信息问题IF 接口问题按BUG回归情

    软件测试中bug的定义

    bug可以多种类型。1.按照严重程度进行划分。是指bug对软件质量的破坏程度。即此bug的存在将对软件的功能和性能产生什么样的影响。按照严重程度由高到低的顺序可以分为5个等级:系统崩溃,严重后果,  bug就是软件...

    Java Bug模式详解

    Java.Bug模式详解 第1章 混乱环境下的灵活方法 1.1 软件设计、实现和维护的趋势 1.1.1 对于稳定、安全 系统的需求增加 1.1.2 传统软件工程技 术的局限性 1.1.3 开放源代码的软 件项目的可利用性 1.1.4 对于...

    测试培训教材

    测试类型: Test Type Description MANUAL A Quality Center manual test. WR-AUTOMATED A test that is executed by WinRunner, Mercury's functional testing tool for Microsoft Windows applications. LR-...

    java类型BUG总结

    ZenTaoPMS.12.5.2.win64.zip

    3690 集成中做代码评审生成的Bug类型有误 3689 测试单下的用例模块显示问题 3688 批量编辑任务关闭时间没有更新 3687 编辑任务手动设置的关闭时间没有时分秒自动保存的有时分秒 3686 Bug导出日期没有时分秒 3685 ...

    ZenTaoPMS.12.5.2.win32.zip

    3690 集成中做代码评审生成的Bug类型有误 3689 测试单下的用例模块显示问题 3688 批量编辑任务关闭时间没有更新 3687 编辑任务手动设置的关闭时间没有时分秒自动保存的有时分秒 3686 Bug导出日期没有时分秒 3685 ...

    【软件测试002】认识软件缺陷、缺陷生命周期、缺陷分类、缺陷说明.pdf

    此外,我还将关注软件缺陷的信息分类,包括软件缺陷的生命周期、信息内容以及分类方法,将详细解析软件缺陷的严重程度、优先级和BUG类型,帮助你更好地理解和应对不同类型的软件缺陷。 之外,我也会探讨开发人员...

    Bug发现提交报告

    发现软件存在的bug需要一个规范化的文档,帮助开发人员及时了解到bug

    禅道项目管理软件6.0.stable

    1338 批量创建bug的时候隐藏不需要的bug类型 1339 修复bug操作系统的错误 1340 检查开源版本的工时记录,处理任务的完成者信息 1341 任务的status字段改用enum类型 1342 版本创建的时候增加placeholder提示作用 ...

    项目需求和bug管理系统(Redmine)使用手册

    开源的项目需求和bug管理系统(Redmine)使用手册

    Python灰帽子-黑客与逆向工程师的Python编程之道[简体中文版]

    8.1 几种常见的bug类型 8.1.1 缓冲区溢出 8.1.2 整数溢出 8.1.3 格式化串攻击 8.2 文件Fuzzer 8.3 后续改进策略 8.3.1 代码覆盖率 8.3.2 自动化静态分析 第9章 Sulley 9.1 安装Sulley 9.2 Sulley中的基本数据类型 ...

    VUE 修复MOCKJS ResponseType BUG

    VUE 修复MOCKJS ResponseType BUG

    xwork-2.1.2.jar —— 修正了double类型传值问题的Bug

    此包 xwork-2.1.2.jar 一个严重的BUG。 BUG现象: 从客户端传一个小于或等于零的double类型数据到服务端,会报异常。

    软件测试错误(BUG)类型及参生原因

    软件测试类型软件测试错误(BUG)类型及参生原因概述软件本地化测试的测试对象是本地化的软件,需要在本地化的操作系统上进行。虽然本地化的软件是基于源程序软件创建的,但二者的测试内容和重点具有很大的不同。一般...

Global site tag (gtag.js) - Google Analytics