缺陷的生命周期

什么是软件缺陷?
软件缺陷(Defect),常常又被叫做Bug。

所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。

缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。

IEEE729-1983对缺陷有一个标准的定义:

从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;

从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

缺陷属性
缺陷标识(Identifier): 缺陷标识是标记某个缺陷的一组符号。每个缺陷必须有一个唯一的标识。

缺陷类型 (Type): 缺陷类型是根据缺陷的自然属性划分的缺陷种类。

缺陷严重程度 (Severity) :缺陷严重程度是指因缺陷引起的故障对软件产品的影响程度。

缺陷优先级(Priority): 缺陷的优先级指缺陷必须被修复的紧急程度。

缺陷状态(Status) :缺陷状态指缺陷通过一个跟踪修复过程的进展情况。

缺陷起源(Origin) :缺陷来源指缺陷引起的故障或事件第一次被检测到的阶段。

缺陷来源(Source): 缺陷来源指引起缺陷的起因。

缺陷根源(Root Cause): 缺陷根源指发生错误的根本因素。

缺陷类型(Type)
F- Function :影响了重要的特性、用户界面、产品接口、硬件结构接口和全局数据结构。并且设计文档需要正式的变更。如逻辑,指针,循环,递归,功能等缺陷。

A- Assignment: 需要修改少量代码,如初始化或控制块。如声明、重复命名,范围、限定等缺陷。

I- Interface: 与其他组件、模块或设备驱动程序、调用参数、控制块或参数列表相互影响的缺陷。

C- Checking: 提示的错误信息,不适当的数据验证等缺陷。

B Build/package/merge :由于配置库、变更管理或版本控制引起的错误。

D- Documentation: 影响发布和维护,包括注释。

G- Algorithm :算法错误。

U-User Interface:人机交互特性:屏幕格式,确认用户输入,功能有效性,页面排版等方面的缺陷。

P-Performance:不满足系统可测量的属性值,如:执行时间,事务处理速率等。

N-Norms:不符合各种标准的要求,如编码标准、设计符号等。

缺陷严重程度(Severity)
软件测试错误严重程度

Critical:不能执行正常工作功能或重要功能。或者危及人身安全。

Major:严重地影响系统要求或基本功能的实现,且没有办法更正。(重新安装或重新启动该软件不属于更正办法)

Minor:严重地影响系统要求或基本功能的实现,但存在合理的更正办法。(重新安装或重新启动该软件不属于更正办法)

Cosmetic:使操作者不方便或遇到麻烦,但它不影响执行工作功能或重要功能。

Other:其它错误。

同行评审错误严重程度

Major:主要的,较大的缺陷

Minor:次要的,小的缺陷

缺陷优先级(Priority)
Resolve Immediately:缺陷必须被立即解决。

Normal Queue:缺陷需要正常排队等待修复或列入软件发布清单。

Not Urgent:缺陷可以在方便时被纠正。

缺陷状态(Status)
Submitted: 已提交的缺陷

Open :确认“提交的缺陷”,等待处理

Rejected: 拒绝“提交的缺陷”,不需要修复或不是缺陷

Resolved :缺陷被修复

Closed :确认被修复的缺陷,将其关闭

这里根据不同公司需求的不同,其实还有几个细节状态:

Verified :已验证修复的缺陷,等待上线。

Hang : 挂起,暂时不予处理的缺陷

缺陷起源(Origin)
Requirement:在需求阶段发现的缺陷

Architecture:在构架阶段发现的缺陷

Design:在设计阶段发现的缺陷

Code:在编码阶段发现的缺陷

Test:在测试阶段发现的缺陷

缺陷来源(Source)
Requirement: 由于需求的问题引起的缺陷

Architecture: 由于构架的问题引起的缺陷

Design: 由于设计的问题引起的缺陷

Code: 由于编码的问题引起的缺陷

Test: 由于测试的问题引起的缺陷

Integration: 由于集成的问题引起的缺陷

生命周期
在很多公司的流程里,其实是这样的一个流程。

缺陷提交 -> 确认缺陷 -> 已拒绝 -> 关闭或重新打开

缺陷提交 -> 确认缺陷 -> 缺陷修复 -> 缺陷已验证 -> 关闭(缺陷已上线)

而这个流程,通常被称为缺陷的生命周期。

提交(打开)缺陷
  在提交一个缺陷的缺陷,首先尽量描述这个缺陷的属性。Bug重现环境,bug类型,bug等级,bug的优先级以及详细的重现步骤,结果与期望等。
  当然,我们在提交一个问题之前首先应该保证,这个缺陷是没有被提过的,以免造成重复缺陷单。
  如果是回归不通过的缺陷,其状态又会变为打开状态。

分配(转交)缺陷
  这一步不是必须的,跟项目模式有关,有些公司测试部门与开发部门独立,那么测试人员就不确定自己测试的模块是由哪位开发人员负责的,在这种情况下,测试人员统一把问题指派给项目组长或经理,由项目组长(或经理)对问题进行确认后再次分配给相应的开发人员。
  有些测试人员是穿插到不同研发团队中的,所以对不同的开人发员负责的开发模块非常清楚,这个时候就可以将问题直接指派给相应的开发人员。
  也有一种情况,本来此问题应该由A开发人员负责,但由于A开发人员的调离或辞职,些问题为转交给其它人员处理。“分配”强调是上级对下级;“转交”强调的是平级之间。

确认缺陷
  当开发人员接到一个缺陷时,首先是对其进行分析与重现,如果对其进行分析发现不是缺陷(可能由于测试人员不了解需求)或无法对此问题进行重现,那么就需要将此问题反回给测试人员,并注明原因。如果确认为缺陷则需要对其进行处理。

挂起
  在处理问题之后,还需要进行一次判断,是否需要推迟处理,有些需求已经确认了是问题,由于其可能在极端情况下才会出现,或需要对系统架构进行改动,或其优先级非常低,所以暂时不需要对此问题进行处理(或到下个版本进再进行修复)。

修复缺陷
  开发人员在确认完一个问题需要处理时,那么就对其进行处理工作。(例如,redmine 是支持处理人时时更新问题处理进度的,如 已处理30% ,已处理80% 等,当然,对于短时间内可以修复的问题就没必要时时的去更新处理进度。)

回归缺陷
  回归缺陷对于测试人员来说是非常重要的工作,其有三个入口两个出口。

  确认非缺陷问题:对于提交的一个缺陷,开人员处理为非问题或无法重现,然后直接转交给测试人员回归。测试人员再次确认,如果真如开发人员所说,则将问题关闭。如果非开发人员所说,是由于问题描述模糊或其它原因喂重现问题,则再次注明原因转给开发人员。

  确认修复问题:对开发人员修复的问题再次进行确认,确认能过,则关闭问题。确认不通过,将问题再次打开并转给开发人员。

  确认固定问题:有计划的对固定问题进行确认,有些固定问题随着时间的推移,版本的更新或已经不存在了,对这类问题应该及时关闭。有些固定问题依然存在且变得紧急,对于这类问题应该及时打开交给开发人员处理。

关闭缺陷
  对于已经修复的缺陷进行关闭,这也是一个缺陷的最后一个状态

posted @ 2020-06-01 10:26  岁月安好-成都  阅读(1835)  评论(0编辑  收藏  举报