background image
上海育创带你 Bug 程序调试 
 
复杂系统总是源于简单系统的演化,软件开发作为一个复杂的系统,从开始的编写到最后一
次的运行,不是一蹴而就的过程,不论你如何费尽心机,bug  总是对我们一往情深,原因就
是: 
Because when you fix one, you create two. 
 
虽然
编写高质量的、没有 bug 的程序,是每位程序员所追求的目标。但随着软件规模越来越
大,功能日趋复杂,
可能存在的 bug 就越多,“
没有 bug
这一目标也就变得越来越困难。
 
当然,如果一个软件不增加新功能,后续工作就是只要一有用户上报 bug 就修复掉,那么最
后做到几乎没 bug 甚至完全没有 bug 是可能的。比如,你写一个“hello world”是几乎不可
能搞出 bug 来的。 
问题是,这样的模式存在极大的浪费——本来可以加入新功能的,新功能往往也就意味着新
bug  。 
那么现在问题来了——不停地加入新功能(同时修复 bug),不停地修复 bug  和撒手不管哪
个收益更高?在这里我们先划分下
Bug 缺陷等级和缺陷优先级。 
1、Bug 缺陷等级 
这个划分也比较灵活,有分三级、四级的,也有分五级的,这里我把他分为了五级: 
(1)致命:一招毙命的缺陷,使你的系统无法运行,有造成数据泄漏的安全性问题。 
(2)严重:可以引起易于纠正的异常情况、可能引起易于修复的故障或对产品外观难以接
受的缺陷。 
(3)一般:指不影响产品的运转和运行、不会成为故障起因,但对产品外观和下道工序影
响较大的缺陷  
(4)轻微:轻微缺陷是指对产品外观和下道工序可能会有轻微影响的缺陷  
(5)建议:增加用户使用体验的建议性问题。(一般情况下,建议也为做为缺陷的一种,
这个跟系统的类型与需求有关) 
2、缺陷优先级 
当问题处理人员在面对许多问题需要处理进,就需要问题进行优先级排序。我们做事情的安
排,操作系统有处理进程等都在使用着优先级。