软件缺陷

软件缺陷,通常又被叫做bug或者defect,即为软件或程序中存在的某种破坏正常运行能力的问题、错误,其存在会导致软件产品在某种程度上不能满足用户的需求。 软件缺陷是指存在于软件(程序、数据、文档中的)那些不符合用户需求的问题。


软件缺陷产生的原因有哪些

软件缺陷的产生主要是由软件产品的特点和开发过程决定的,比如需求不清晰、需求频繁变更、开发人员水平有限等。
(1)需求不明确。软件需求不清晰或者开发人员对需求理解不明确,导致软件在设计时偏离客户的需求目标,造成软件功能或特征上的缺陷。此外,在开发过程中,客户频繁变更需求也会影响软件最终的质量。

(2)软件结构复杂。如果软件系统结构比较复杂,很难设计出一个具有很好层次结构或组件结构的框架,这就会导致软件在开发、扩充、系统维护上的困难。即使能够设计出一个很好的架构,复杂的系统在实现时也会隐藏着相互作用的难题,而导致隐藏的软件缺陷。

(3)编码问题。在软件开发过程中,程序员水平参差不齐,再加上开发过程中缺乏有效的沟通和监督,问题累积越来越多,如果不能逐一解决这些问题,会导致最终软件中存在很多缺陷。

(4)项目期限短。现在大部分软件产品开发周期都很短,开发团队要在有限的时间内完成软件产品的开发,压力非常大,因此开发人员往往是在疲劳、压力大、受到干扰的状态下开发软件,这样的状态下,开发人员对待软件问题的态度是“不严重就不解决”。

(5)使用新技术。现代社会,每种技术发展都日新月异。使用新技术进行软件开发时,如果新技术本身存在不足或开发人员对新技术掌握不精,也会影响软件产品的开发过程,导致软件存在缺陷。


软件缺陷的属性

  1. 缺陷标识(Identifier):
    是标记缺陷的一组符号。每个缺陷必须有一个唯一的标识。
  2. 缺陷标题(Summary):
    缺陷的标题,一般格式为[Function]Summary Description.
  3. 缺陷描述(Description)
    缺陷发生的具体环境及步骤。记录缺陷发生的软硬件条件及时间
    点,抓取log及相应的视频。
  4. 缺陷类型(Type):
    1)功能(Function): 功能性缺陷,需要修改设计文档。如逻辑,指针,循环,递归,功能等缺陷。
    2)Assignment: 需要修改少量代码。如声明、重复命名等缺陷。
    3)接口(Interface): 与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。
    4)Checking: 提示的错误信息。
    5)软件包(Build/package/merge): 由于配置库、变更管理或版本控制引起的错误。
    6)文档(Documentation): 影响发布和维护,包括注释。
    7)Algorithm:算法错误。
    8)用户界面(User Interface): 人机交互特性:屏幕格式,确认用户输入,功能有效性,页面排版等缺陷。
    9)性能(Performance): 不满足系统可测量的属性值,如:执行时间,事务处理速度等。
    10)Norms: 不符合各种标准的要求,如编码标准、设计符号等。
    11)兼容性(Compatibility) : 与工作环境、其他外设,如操作系统、浏览器、网络环境等不匹配、 冲突。
  5. 缺陷严重程度(Severity)
    1)Critical:不能执行正常工作功能或重要功能。
    2)Major:严重地影响系统要求或基本功能的实现,且没有办法更正。(重新安装或重新启动该软件不属于更正办法)
    3)Minor:严重地影响系统要求或基本功能的实现,但存在合理的更正办法。(重新安装或重新启动该软件不属于更正办法)
    4)Normal:使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。
    5)Enhancement:需要改善的其它错误。
  6. 缺陷优先级(Priority)
    1)Resolve Immediately:缺陷必须被立即解决。
    2)Normal Queue:缺陷需要正常排队等待修复或列入软件发布清单。
    3)Not Urgent:缺陷可以在方便时被纠正。
  7. 缺陷状态(Status)
    1)Submitted: 已提交的缺陷
    2)Open :确认“提交的缺陷”,等待处理
    3)Rejected: 拒绝“提交的缺陷”,不需要修复或不是缺陷
    4)Resolved :缺陷被修复
    5)Closed :确认被修复的缺陷,将其关闭
  8. 缺陷起源(Origin)
    1)Requirement:在需求阶段发现的缺陷
    2)Architecture:在构架阶段发现的缺陷
    3)Design:在设计阶段发现的缺陷
    4)Code:在编码阶段发现的缺陷
    5)Test:在测试阶段发现的缺陷
  9. 缺陷来源(Source)
    1)Requirement: 由于需求的问题引起的缺陷
    2)Architecture: 由于构架的问题引起的缺陷
    3)Design: 由于设计的问题引起的缺陷
    4)Code: 由于编码的问题引起的缺陷
    5)Test: 由于测试的问题引起的缺陷
    6)Integration: 由于集成的问题引起的缺陷

简述软件缺陷的处理跟踪过程

请输入图片描述

(1)提交:测试人员发现缺陷后,将缺陷提交给测试组长。

(2) 分配:测试负责人收到测试人员提交的缺陷后,交给开发人员。

(3) 确认:开发者收到转移的缺陷后,会与团队甚至测试人员讨论确定该缺陷是否为缺陷。

(4) 拒绝/延期:如果经协商,该缺陷不是真正的缺陷,则拒绝处理并关闭该缺陷;如果经过协商确定是真正的缺陷,可以根据缺陷的严重程度或优先级等选择立即处理或推迟处理。

(5)处理:显影剂修正缺陷。

(6) Retest:开发者修正缺陷后,测试者重新测试(retest),检查缺陷是否确实被修改了。如果没有正确修改,请重新提交缺陷。

(7) 关闭:测试人员重新测试后,如果缺陷已被正确纠正,则关闭缺陷,完成整个缺陷处理。


对软件缺陷报告有哪些处理方式

1、记录bug
2、对bug进行分类(模块、bug状态、严重程度、版本)
3、跟踪bug
4、对bug进行分析、统计