- 软件测试技术指南
- 斛嘉乙 符永蔚 樊映川
- 1451字
- 2025-02-22 07:57:17
1.5 软件缺陷
软件缺陷(Defect),常常又被叫作Bug。所谓软件缺陷就是指计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。
在IEEE(Institute of Electrical and Electronics Engineers,简称IEEE,电气和电子工程师协会)中对缺陷有一个标准的定义如下:
1)从产品内部看,是指软件产品开发或维护过程中存在的错误、毛病等各种问题。
2)从产品外部看,是指系统所需要实现的某种功能的失效或违背。
早在1947年9月9日,Bug(英文译文“臭虫”或“虫子”)一词,由美国海军的编程员,编译器的发明者格蕾斯·哈珀(GraceHopper)提出,他发现计算机死机的问题,竟然是一只飞蛾导致的。她小心地用镊子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例”。从此以后,人们将计算机的错误统称为Bug。
1.5.1 软件为什么会引入缺陷
简单说,只要是人,就会犯错。根据数据统计,即使是一个优秀的程序员,在开发软件的过程中,如果不经过测试,代码中遗留的缺陷至少在每千行代码6个以上。
常见的导致软件中存在缺陷的根源主要有以下几点:
1.缺乏有效的沟通或者没有进行沟通
现在的软件不是一个人就可以完成的事,往往涉及多个人,甚至几十个。同时还需要跟不同部门进行沟通。如果沟通不到位,可能会导致软件无法集成,或者集成出来的软件无法满足用户的需求。
2.软件的复杂度
随着软件的发展,现在的软件变得越来越复杂,复杂度增加了,软件越容易出现错误。图形化界面、分布式的应用、数据通信、关系数据库、应用程序等,这些因素导致软件设计的复杂度增加。
3.程序员编程错误
编程的错误也是程序员经常会犯的错误,它包括语法错误、拼写错误以及逻辑设计的错误等。有很多问题可以通常由编译器直接找到,但是遗留下来的就必须通过严格的测试才可能发现。
4.需求的不断变更
在实际项目开发过程中,需求的变更是导致项目失败的最大杀手。对项目而言,需求的变更可能会引起重新设计,甚至会导致项目延期。但是不管是很小的变更还是较大的变更,由于项目中不同部分间可知和不可知的依赖关系,都有可能会引入新的错误;同时项目开发人员的积极性也会受到打击。
5.时间的压力
进度问题每一个从事过软件开发人员都会碰到的问题。在快速变化的商业环境下,为了更好地抢占市场,产品必须比竞争对手早一步把产品提供出来,于是就产生了不合理的进度安排,不断的加班加点最终导致大量的错误产生。
6.人员过于自信
在生活中,我们经常发现人们常说:这个很简单,没有问题等。往往一些问题就是出现在我们认为没有问题的时候。这个经常发生在一些资深的测试人员身上。
1.5.2 缺陷种类
常见的缺陷种类的分为以下4种情况:
1.遗漏
遗漏是指规定或预期的需求未体现在产品中。造成该现象的原因,可能是需求调研和分析阶段,未将用户规格说明全部分析实现;还可能在后期实现阶段,未能将用户规格说明全面实现。
2.错误
错误是指需求是明确的,在实现阶段未将规格说明正确实现。造成该现象的原因,可能是在设计阶段产生了错误,也可能是在实现阶段编码引入的错误。
3.冗余
冗余是指需求规格说明并未涉及的需求被实现了。造成该现象的原因,可能是开发人员的画蛇添足,也可能是开发人员的代码复制复用导致的。
4.不满意
除了上述3种外,通常用户对产品的实现不满意也称为缺陷。简单说,现在产品越来越复杂,用户使用的要求也越来越多,只要用户对产品不满意,项目也算是一个失败的项目。
从上面几种情况分析,作为一名优秀的测试工程师,在测试的过程中必须要以用户的需求为基准,从需求角度出发进行测试。