管理作为软件质量管理的重要组成部分,正在成为软件开发管理过程的又一亮点,从国内外越来越多的公司进行相关管理工具的开发,到人们对缺陷管理工具的需求逐渐增多而且更加明确,同时渴望能够得到物美价廉的可用版本(当然大多数都有免费的试用板),软件缺陷管理的其重要性和被人们所给予的重视程度可见一斑。我今天讨论的主题不是缺陷管理的重要性,而是在进行缺陷管理之前我们应该明确的问题一一什么是软件缺陷?
提起软件缺陷,你的第一反映或许是bug,因为大家感觉它离我们很近,而且很熟悉,触手可及,但是要是让你给它下一个准确的定义,到底什么是软件缺陷,或许我们会想到许多和它有关的词,比如defect, fault, failure, error等等,当然除了这些英文单词之外,在汉语中还有更多与之相关的词或解释。那么到底应该如何来给它下一个定义呢?似乎三言两语难以说清。下面在我个人收集到的相关信息的基础上谈点我个人的看法,希望能够与您产生共鸣。
与“bug ",“缺陷”相关词语的解释首先,我们石看上面提到的几个与软件缺陷有关的词在英语中的解释。翻译如下:
.bug:(小错误,缺陷,不足,过失…一个计算机bug指在计算机程序中存在的一个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault),这些bug使程序无法正确的运行。Bug产生于程序的源代码或者程序设计阶段的疏忽或者错误。我们知道所有应用的程序中都存在bug,只是设计良好的程序包含的bug相对少一些,并且这些bugs不会妨碍程序正常完成它的任务。包含很多bug的程序(常常指的是含有缺陷的软件),是指那些包含有大量bug并且这些bug严重的妨碍了程序正常功能的完成。
.Defect:(缺陷)在软件工程(Software Engineering)中,软件与它的需求(requirements)不一致,常常指软件无法正确完成需求所要求的功能,也称之为bug.
.Fault:(故障)在ISO/CD 10303-226的文档中,fault被定义为存在于组件、设备或者子系统中异常的条件或者缺陷,常常会导致系统的失败。
依照联邦1037C标准(Federal Standard 1037C), Fault有以下的含义:
1.一个导致某一功能单元无法完成它预期功能的异常条件。
2.一个导致重复出现的或者灾难性的功能失常的过错。一个可重复出现的功能失常被认为是指该现象在同样的环境下可再现。
3.在电力系统中,两个带电导体之间或者一带电导体与零电势体之间的意外的、局部的短路。
一Failure:(失效)ISO/CD 10303-226将Failure定义为一个组件,设备,子系统或者系统无法(不具备相应的能力)去完成它设计的任务。Failure常常源自于一个或许多的错误。
.Error:(错误)Error在不同的领域有不同的含义,在拉丁语中它表示:徘徊的(wandering)或者迷路的(straying)。那么它在编程(programming,直译:规划,设计)方面含义如下:
一个error是指编写错误的代码,通常是无意中造成的。一般有两类主要的错误,一是语法错误(syntax error),该类错误易于检测,因为代码在编译阶段无法解析而不能正常编译通过。另一个是逻辑错误(logical error),因为它与代码的实际执行密切相关所以不易发现。两类错误都会导致错误“雪崩”(error avalanche,一个小的错误最终演变为一个非常大的错误),因为当前的错误代码将影响后续部分代码。比如一段程序的输出是另一段程序的输入。
从上面的解释中我们可以看到这些词语的解释与我们日常的使用习惯密切相关,或许因为人们在偏袒小虫,所以bug的含义延伸的最广,它的意思几乎涵盖了其它几个与“缺陷”
有关的词语。而其它的词语之间有细微的差别,适用于不同的环境。当我们的软件功能与需求不一致时,我们可以说这是一个defect;当程序的某部分代码存在错误导致程序执行失败时,我们可以说这是一个fault:当程序因为错误太多而导致无法完成预定功能时,我们说这是一个failure:当代码中存在因为疏忽而造成的错误时,我们说这是一个error.
上一篇:测试工程师工作职责
下一篇:不懂编程也能学软件测试吗
相关资讯


