缺陷管理
软件缺陷
软件缺陷,通常又被叫做bug或者defect,即为软件或程序中存在的某种破坏正常运行能力的问题、错误,其存在会导致软件产品在某种程度上不能满足用户的需求。 软件缺陷是指存在于软件(程序、数据、文档中的)那些不符合用户需求的问题。
软件缺陷产生的原因有哪些
软件缺陷的产生主要是由软件产品的特点和开发过程决定的,比如需求不清晰、需求频繁变更、开发人员水平有限等。
(1)需求不明确。软件需求不清晰或者开发人员对需求理解不明确,导致软件在设计时偏离客户的需求目标,造成软件功能或特征上的缺陷。此外,在开发过程中,客户频繁变更需求也会影响软件最终的质量。
(2)软件结构复杂。如果软件系统结构比较复杂,很难设计出一个具有很好层次结构或组件结构的框架,这就会导致软件在开发、扩充、系统维护上的困难。即使能够设计出一个很好的架构,复杂的系统在实现时也会隐藏着相互作用的难题,而导致隐藏的软件缺陷。
(3)编码问题。在软件开发过程中,程序员水平参差不齐,再加上开发过程中缺乏有效的沟通和监督,问题累积越来越多,如果不能逐一解决这些问题,会导致最终软件中存在很多缺陷。
(4)项目期限短。现在大部分软件产品开发周期都很短,开发团队要在有限的时间内完成软件产品的开发,压力非常大,因此开发人员往往是在疲劳、压力大、受到干扰的状态下开发软件,这样的状态下,开发人员对待软件问题的态度是“不严重就不解决”。
(5)使用新技术。现代社会,每种技术发展都日新月异。使用新技术进行软件开发时,如果新技术本身存在不足或开发人员对新技术掌握不精,也会影响软件产品的开发过程,导致软件存在缺陷。
软件缺陷的属性
- 缺陷标识(Identifier):
是标记缺陷的一组符号。每个缺陷必须有一个唯一的标识。 - 缺陷标题(Summary):
缺陷的标题,一般格式为[Function]Summary Description. - 缺陷描述(Description)
缺陷发生的具体环境及步骤。记录缺陷发生的软硬件条件及时间
点,抓取log及相应的视频。 - 缺陷类型(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) : 与工作环境、其他外设,如操作系统、浏览器、网络环境等不匹配、 冲突。 - 缺陷严重程度(Severity)
1)Critical:不能执行正常工作功能或重要功能。
2)Major:严重地影响系统要求或基本功能的实现,且没有办法更正。(重新安装或重新启动该软件不属于更正办法)
3)Minor:严重地影响系统要求或基本功能的实现,但存在合理的更正办法。(重新安装或重新启动该软件不属于更正办法)
4)Normal:使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。
5)Enhancement:需要改善的其它错误。 - 缺陷优先级(Priority)
1)Resolve Immediately:缺陷必须被立即解决。
2)Normal Queue:缺陷需要正常排队等待修复或列入软件发布清单。
3)Not Urgent:缺陷可以在方便时被纠正。 - 缺陷状态(Status)
1)Submitted: 已提交的缺陷
2)Open :确认“提交的缺陷”,等待处理
3)Rejected: 拒绝“提交的缺陷”,不需要修复或不是缺陷
4)Resolved :缺陷被修复
5)Closed :确认被修复的缺陷,将其关闭 - 缺陷起源(Origin)
1)Requirement:在需求阶段发现的缺陷
2)Architecture:在构架阶段发现的缺陷
3)Design:在设计阶段发现的缺陷
4)Code:在编码阶段发现的缺陷
5)Test:在测试阶段发现的缺陷 - 缺陷来源(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进行分析、统计
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。