Bug的类型
美国计算机科学家、图灵奖获得者詹姆斯·尼古拉·格雷(Jim Gray),在他的著名的论文“Why do computers stop and what can be done about it?”中首次提出了程序bug的类型,比如玻尔bug(Bohrbug)、 海森堡bug(Bohrbug)等用著名科学家名称命名的bug。后来又出现了更多的bug类型。现在,让我们来看看它们都是什么bug类型。
美国计算机科学家、图灵奖获得者詹姆斯·尼古拉·格雷(Jim Gray)
玻尔bug(Bohrbug)
大多数我们遇到的bug都是可以重现的,这些bug被统称为玻尔bug(Bohrbug)。它是用丹麦著名物理学家、诺贝尔获得者尼尔斯·波尔的名字命名的。波尔首先在1913年提出了一个简单、易于理解的原子模型概念。在波尔的模型中,原子中的电子的路径和动量是可预知的。同样的道理,玻尔bug(Bohrbug)也是可预知的。如果让软件在相同的条件下运行,你可以让bug再次显现。例如,如果程序遇到空指针异常会崩溃,那么,设定相同的输入条件,你可以轻易的让它们重新。
丹麦著名物理学家、诺贝尔获得者尼尔斯·波尔
海森堡bug(Bohrbug)
所有有阅历的程序员都遇到过这种情况:有个bug让程序崩溃了,但当程序重启后,这个bug消失了。不论你用多少的时间和精力来试图让bug重现,bug就是人间蒸发了。这样的bug被称为海森堡bug(Bohrbug),它是用德国物理学家、量子力学的创始人、“哥本哈根学派”代表性人物维尔纳·海森堡(Werner Heisenber)的名字命名,隐射其著名的“测不准原理”(又称“海森堡不确定性原理”)。根据他的这个理论,在某一个给定的时间点,一个电子所处的位置是无法确定的,也无法跟踪它的轨迹。当你去debug、探测、隔离一个bug时,你的这些动作会导致bug改变它们的行为表现,这些bug就叫做海森堡bug(Bohrbug)。这种事情是有可能的,比如,如果你使用未初始化的变量,这会导致一个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
转自:http://***/a/zixun/2014/0623/104.html
Bug的类型的更多相关文章
- MyEclipse项目的BUG修复错误类型
一.The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .cla ...
- AIX6.1/11.2.0.3在有关数据库SWAP一个BUG
昨天南京到客户服务数据库的优化调整,其中新上线,经过审查alert.log当日志现在是在过去一段时间内取得,每隔几个小时的时间滞后,班会报似的内容: Thu Aug 21 09:01:26 2014 ...
- bug生命周期&bug跟踪处理
一.BUG BUG:软件的缺陷 1.BUG的定义:----与软件测试的目的对应 软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节.或 ...
- BUG描述规范管理
BUG:软件系统中存在的可能导致系统出错.失效.死机等问题的错误或缺陷. 描述一个缺陷,需要以下核心要素 标题:用简洁的话描述该缺陷,主要让开发知道这是一个什么样的缺陷 参数设置:Bug的类型(功能/ ...
- 理解Flow静态类型检查
一.为什么在JavaScript中使用静态类型 了解静态类型的最快方法是将其与动态类型进行对比. 有静态类型参数的语言被称为静态类型语言. 另一方面,有动态类型参数的语言被称为动态类型语言.核心区别是 ...
- ios 7 Autolayout bug
ios 7 Autolayout bug 错误类型:NSInternalInconsistencyException(SIGABRT) 详情:Auto Layout still required af ...
- bug的分类和等级
一.bug的定义 软件的bug,狭义指软件程序的漏洞或缺陷,广义指测试工程师或用户提出的软件可改进的细节.或与需求文档存在差异的功能实现等 对应三个测试目的:(3个为了) 1.为了发现程序的代码或业务 ...
- 提交bug的标准及书写规范
Bug有效性 1.交付过程中测试者需按照专家设定好的模块,对Bug进行归类提交: 2.Bug的类型默认为UI问题.功能问题.崩溃问题,提交Bug时不能弄错: 3.需求是否明确.前提条件是否满足.输入数 ...
- BUG 的生命周期
BUG 的生命周期 Bug-->软件程序的漏洞或缺陷 Bug 的类型:代码错误.设计缺陷.界面优化.性能问题.配置相关.安装部署.安全相关.标准规划.测试脚本....其他(功能类.界面类.性能类 ...
随机推荐
- python基础-字符串操作
输出高亮 语法: 显示方式.前景色.背景色至少一个存在即可. 显示方式:0(关闭所有效果),1(高亮),4(下划线),5(闪烁),7(反色),8(不可见). 前景色以3开头,背景色以4开头,具体颜 ...
- innobackupex基于binlog日志的恢复 -- 模拟slave恢复
说明:一般来说,如果恢复的binlog量不大,可以使用此方法来恢复:mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000018 |mysql - ...
- SQL小知识_长期总结
1. 左联接右联接区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner ...
- 10个HTML5 实战教程 提升你的综合开发能力
HTML5 作为下一代网站开发技术,无论你是一个 Web 开发人员或者想探索新的平台的游戏开发者,都值得去研究.借助尖端功能,技术和 API,HTML5 允许你创建响应性.创新性.互动性以及令人惊叹的 ...
- 使用jquery实现获取除this(当前选定)以外的元素
今天做项目时,要求完成功能评价的分类,即好评,差评,中评.遇到一个问题,如何在选定一个评论类型时,该div颜色改变,其他评论类型的div颜色不变. 在使用$(this).attr()时,表示当前元素的 ...
- React后台管理系统-商品列表搜索框listSearch组件
1.商品列表搜索框 2.搜索框页面的结构为 <div className="row search-wrap"> <div classN ...
- webpack4简单入门
安装webpack需要安装node环境,因此需要在电脑中安装node.node官网https://nodejs.org/,安装LTS版本即可. webpck基本概念 entry:分析依赖模块的入口 o ...
- npm 常用指令 使用指令删除 node_modules 包
查看 npm 命令 npm help 全局命令参数 -g npm install -g 安装全局 npm uninstall -g 卸载全局 全局node包中 i5ting_toc 这个包可以把md文 ...
- 【原创】数据处理中判断空值的方法(np.isnan、is np.nan和pd.isna)比较
转载请注明出处:https://www.cnblogs.com/oceanicstar/p/10869725.html 1.np.isnan(只有数组数值运算时可使用) 注意:numpy模块的i ...
- mysql 绿色版 安装
1.下载mysql的绿色版压缩包.(自行百度) 2.自行规划目录解压 3.安装 注意:我遇到的两种版本的安装方法(暂时按照解压后的目录中是否含有data目录来区分) 3.1 无data目录(我用到的的 ...