可以说,没有任何一个产品没有Bug,也永远不可能找出并修复所有的Bug。在修复了旧的Bug的同时,往往又会产生新的Bug。以微软的经验,每修复三到四个Bug,一般又会产生一个新的Bug。

所以,在Bug管理工具提交Bug给开发人员解决后,可能会有以下几种类型的反馈:

(1)Fixed:表示Bug已经被修复或更正了;

(2)Duplicated:表示测试人员所找到的某个Bug已经被别人找出来了。

(3)PostPoned:表明这个Bug不是很重要,在当前阶段不用进行更正了,或者更正这个Bug风险太大,Bug本身又不会造成大的影响。

(4)By Design:测试人员认为是Bug,不符合逻辑,也不符合用户的需求,但开发人员则认为是按照项目经理的设计做的。

(5)Not repro:以前出现的某个Bug自动消失了,可能是处理其他Bug的时候把这个Bug一并修复掉了。

(6)Won't Fix:这个Bug是一个错误,还没有重要到非要更正不可的地步,完全可以忽略不计。

综上,Bug是不可能被消灭的。这是因为当一个软件产品,包括但不限于:应用、操作系统、游戏、复杂交互的网页等等,复杂到一定程度之后,其是否会出现bug根本不以开发者本人的意愿为转移了。

无论你软件工程多么完美,开发规划多么细致,写代码的水平有多么高,当由无数个组件组合起来形成一个大型的软件生命周期项目以后,其中可能出现不可预知的错误的地方的数量是非常庞大的。

你如果只是写一个在屏幕上输出hello world 的程序,这个可以保证做到没有bug,但是你要做一个操作系统,做一个大型MMORPG,就实际上无可避免的会出现bug。