软件缺陷(Defect或Bug)是软件开发过程中的“副产品”,缺陷通常会导致软件产品在某种程度上不能满足用户的需要。
ISO 9000对缺陷的定义“未满足与预期或者规定用途有关的要求”,表明缺陷是软件中已经存在的一个部分,可以通过修改软件而消除。
美国的Ron Patton在其著作《软件测试》中把符合下列5条规则的问题称为缺陷(Software Bug)。
(1)软件未达到产品说明书表明的功能;
(2)软件出现了产品说明书指明不会出现的错误;
(3)软件实现了产品说明书中未提及的功能,即超出了说明书指明的范围;
(4)软件未达到产品说明书虽未指出但应达到的目标;
(5)软件测试员认为软件难于理解、不易使用、运行速度缓慢,或者最终用户认为不好。
软件缺陷不只是通常所说的程序中存在的错误或疏忽(即俗称的Bug),而是指软件产品与预期属性发生的偏离现象。
在软件工程整个生命周期中,任何背离需求、无法正确完成用户所要求的功能的问题,包括存在于组件、设备或系统软件中因异常条件不支持而导致系统的失败等都属于缺陷的范畴。