一个BUG(缺陷)的生命周期

本文详细介绍了软件缺陷从提交到关闭的整个生命周期,包括打开、指派、处理、固定、回归及关闭等状态及其流转过程,强调了不同角色在各阶段的责任。
缺陷状态
  
对于一个问题,其处理过程是一个周期,周期的不同阶段,其所处的状态也是不一样的。不同状态所对应的处理人也是不一样的。

打开 : 表示问题被提交等待有人处理。

重新指派 : 问题被重新指派给某人处理。 

处理 : 问题在处理中,尚未完成。

固定 : 确认此问题存在,但暂时不进行处理。

回归 : 对已经修复的问题进行回归确认。Reopened :

关闭 : 问题的最后一个状态。 





提交(打开)缺陷
  在提交一个缺陷的缺陷,首先尽量描述这个缺陷的属性。Bug重现环境,bug类型,bug等级,bug的优先级以及详细的重现步骤,结果与期望等。
  当然,我们在提交一个问题之前首先应该保证,这个缺陷是没有被提过的,以免造成重复缺陷单。
  如果是回归不通过的缺陷,其状态又会变为打开状态。
 
 
分配(转交)缺陷
  这一步不是必须的,跟项目模式有关,有些公司测试部门与开发部门独立,那么测试人员就不确定自己测试的模块是由哪位开发人员负责的,在这种情况下,测试人员统一把问题指派给项目组长或经理,由项目组长(或经理)对问题进行确认后再次分配给相应的开发人员。
  有些测试人员是穿插到不同研发团队中的,所以对不同的开人发员负责的开发模块非常清楚,这个时候就可以将问题直接指派给相应的开发人员。
  也有一种情况,本来此问题应该由A开发人员负责,但由于A开发人员的调离或辞职,些问题为转交给其它人员处理。“分配”强调是上级对下级;“转交”强调的是平级之间。
 
确认缺陷
  当开发人员接到一个缺陷时,首先是对其进行分析与重现,如果对其进行分析发现不是缺陷(可能由于测试人员不了解需求)或无法对此问题进行重现,那么就需要将此问题反回给测试人员,并注明原因。如果确认为缺陷则需要对其进行处理。
 
推迟处理
  在处理问题之后,还需要进行一次判断,是否需要推迟处理,有些需求已经确认了是问题,由于其可能在极端情况下才会出现,或需要对系统架构进行改动,或其优先级非常低,所以暂时不需要对此问题进行处理(或到下个版本进再进行修复)。
 
固定
  对于推迟处理的问题可以暂时进行固定(“固定”为QC中的叫法。)一般固定的问题需要经过项目经理与测试经理协商后才能固定。
 
处理缺陷
  开发人员在确认完一个问题需要处理时,那么就对其进行处理工作。(例如,redmine 是支持处理人时时更新问题处理进度的,如 已处理30% ,已处理80% 等,当然,对于短时间内可以修复的问题就没必要时时的去更新处理进度。)
 
回归缺陷
  回归缺陷对于测试人员来说是非常重要的工作,其有三个入口两个出口。
  确认非缺陷问题:对于提交的一个缺陷,开人员处理为非问题或无法重现,然后直接转交给测试人员回归。测试人员再次确认,如果真如开发人员所说,则将问题关闭。如果非开发人员所说,是由于问题描述模糊或其它原因喂重现问题,则再次注明原因转给开发人员。
  确认修复问题:对开发人员修复的问题再次进行确认,确认能过,则关闭问题。确认不通过,将问题再次打开并转给开发人员。
  确认固定问题:有计划的对固定问题进行确认,有些固定问题随着时间的推移,版本的更新或已经不存在了,对这类问题应该及时关闭。有些固定问题依然存在且变得紧急,对于这类问题应该及时打开交给开发人员处理。
 
关闭缺陷
  对于已经修复的缺陷进行关闭,这也是一个缺陷的最后一个状态。

缺陷生命周期通常包含以下几个部分: 1. **New(新)**:测试人员发现缺陷,提交缺陷报告,并将缺陷的状态置为 new,表示这是一个新发现的缺陷[^3]。 2. **Open(打开)**:开发经理验证提交的 bug,如果确认是 bug,将状态改为 open,意味着开发组承认这是一个需要解决的 bug,并会指派具体的开发人员去解决它;若开发经理认为不是 bug,则把状态改为 rejected(拒绝)[^3]。 3. **Fixed(已修复)**:开发人员看到指派给自己解决的 bug 后,进行缺陷修复。完成修复后,将缺陷状态改为 fixed,表示该缺陷已经修复,可以进行返测[^3]。 4. **Closed(关闭)**:测试人员对修复bug 进行返测(针对程序员修复缺陷进行测试),若返测成功,说明缺陷已真正解决,将状态改为 closed,此时该缺陷归档;如果返测不成功,把状态改为 reopen(重新打开),意味着缺陷仍未解决,需要开发人员再次处理[^3]。 ```python # 简单模拟缺陷状态流转 class Defect: def __init__(self): self.status = "new" def verify_by_manager(self, is_bug): if is_bug: self.status = "open" else: self.status = "rejected" def fix_by_developer(self): if self.status == "open": self.status = "fixed" def retest_by_tester(self, success): if self.status == "fixed": if success: self.status = "closed" else: self.status = "reopen" # 创建一个缺陷实例 defect = Defect() print(f"初始状态: {defect.status}") # 开发经理验证是 bug defect.verify_by_manager(True) print(f"开发经理验证后状态: {defect.status}") # 开发人员修复缺陷 defect.fix_by_developer() print(f"开发人员修复后状态: {defect.status}") # 测试人员返测成功 defect.retest_by_tester(True) print(f"测试人员返测后状态: {defect.status}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值