3.软件实现了说明书中没有提到的功能
软件实现了说明书中没有提到的功能也是Bug这一点可能有点难于理解。一个软件,功能难道不是越多越强大吗?其实不尽然,实现额外的功能有如下几个缺点,如表1-3所示。
表1-3 软件实现说明书中未提到功能所带来的问题
缺 点 |
说 明 |
代码量增大 |
由于代码可能相互影响,因此这部分额外 的功能可能对其他功能的实现造成影响, 带入新的Bug |
增加额外的开发、测试时间 |
在软件项目时间固定的情况下,导致投入 到其他必备功能的开发测试时间减少, 可能影响它们的完成质量 |
增加了成本, 与软件的宣传不完全符合 |
虽然用户对于增加功能一般不会有意见, 但可能影响了公司的销售策略和市场定位 |
4.软件没有实现说明书中没有提到但应该实现的功能
小白一般是将网上找到的有用文档保存在随身携带的U盘中。这一次,他在测试记事本程序的时候,同样打算将文件保存在U盘上,可是由于连日来的文档太多了,优盘已经没有空间,记事本提示无法保存,同时系统托盘有提示说磁盘空间已满。在这种情况下记事本的行为,就属于实现了说明书中没有提到却应该实现的功能(在磁盘满的情况下,给用户以提示)。如果没有提示,不符合绝大部分用户的使用习惯,也是一个Bug。
5.软件难于使用、性能差
软件是拿来用的,再好的界面使用不方便也不会产生多大效果。一个网站如果半天都打不开,很难想象还会有多少用户会访问它。因此这样的问题也是Bug,而且对于性能测试来说,这一个规则很重要。
1.2.3 发现虫子的危害
既然软件Bug对产品造成了这么多的影响,那么发现它就显得非常重要了。业内人士都认为,在软件生命周期内的不同阶段发现Bug,所节省的成本是不同的,如图1-5所示。
图1-5 软件生命周期内各阶段发现与改正Bug所需成本示意图
从图中可以看出,在产品设计阶段发现Bug要比在产品维护阶段发现好得多,这是很好理解的。
在需求分析阶段,对于用户需求的理解停留在需求文档中,对其中理解不正确的部分只需要修改文档即可以,基本不会产生什么成本。
在软件设计阶段,发现的Bug很多都是设计思想的缺陷。由于尚未开始编码,这样的Bug一般需要进行深入的讨论最终获得一种正确的结论,因此改正成本也不高。
在软件编码阶段和测试阶段,代码通过开发人员和测试人员的努力在进行不断的完善,有关Bug的成本主要花费在项目内部的沟通与时间成本方面。
但是一旦产品发布,在软件维护阶段发现的Bug,其修改成本会非常高昂:一是因为软件成为了系统,与开发阶段重点检查各模块功能相比更为复杂,寻找代码上的产生Bug根源更加困难。特别是,如果前期工作没有做好的话,甚至软件产品的结构都需要进行大修改;二是因为牵扯的部门明显增加,比如客户服务部门、产品部署部门、销售部门等都要参与,导致公司内部、公司与客户之间的沟通成本急剧增加;第三点则是影响产品质量与公司的信誉、未来产品的销售。
【千年虫的问题】
在前几年,有一个著名的虫子把业内搅得不可开交,那就是千年虫问题,也叫做2000年问题。它是指在某些使用了计算机程序的智能系统(比如一般的计算机系统以及自动控制芯片等)中,由于其中的年份沿用早期的设计,只使用2位十进制数来表示,比如用80代表1980年,因此当系统进行(或者涉及到)跨世纪的日期处理运算(比如计算1980年到2080年之间的日期)时,就会出现错误的结果,从而引发各种各样的系统功能紊乱甚至系统崩溃。
从千年虫的实际例子中也可以看出,不考虑硬件上的限制,如果当初在设计日期表示格式的时候能够想得更长远一些,就完全可以避免这个虫子的发作,从而节省一大笔修改更新软件等的费用(据未经证实的来自美国国际资料公司调查报告表明,光是1995年到1998年,全球捉"千年虫"的开销就已经达到惊人的1840亿美元)。