一个缺陷的生命周期是怎么样的?

问题

一个缺陷的生命周期是怎么样的?

考察点

面试官想了解:

  • 是否了解缺陷测试

技术点

涉及的技术点:

  • 缺陷测试

回答

在回答缺陷的生命周期的时候,我们首先要知道对应的软件缺陷是什么?以及缺陷的处理流程是什么?

缺陷

那么什么是软件缺陷?其实,软件缺陷一般被我们叫做Bug。对应的软件缺陷,就是我们所测试的程序中存在的无法正常运行或功能有相关缺陷。

那为什么会关注软件缺陷呢?其实是因为Bug的存在导致被测产品在某种场景下不能满足用户的需求。

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

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

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

缺陷的生命周期

其实缺陷的处理过程和缺陷的生命周期是同一个含义。

生命周期就是它的一个整体的处理过程,即一个缺陷从创建到关闭的全过程。

一个缺陷可能会经历几种不同的处理流程,根据它的不同处理方式分为以下几种:

最短的第一种处理流程

  1. 当测试人员发现Bug后,提交相关的缺陷场景描述及现象,即 缺陷的状态为New

测试人员在创建缺陷之前首先应该保证,这个缺陷是没有被提过的,以免造成有重复的缺陷。

  1. 创建时会指定给开发,缺陷创建成功后,对应的开发确认缺陷,即 缺陷的状态为Open

开发接收到一个缺陷时,首先是根据测试人员的描述对缺陷进行分析及重现,如果发现不是缺陷或缺陷对应的场景无法复现,则需要将缺陷直接重新指派给测试人员,并注明原因。

  1. 当开发确认缺陷并解决完后,此时 缺陷的状态为Fixed,并当前缺陷被重新指派给测试人员。

  2. 测试发现缺陷的指派更改后,进行当前缺陷的回归测试,若通过,则关闭缺陷,即 缺陷的状态为Close

以上,为最短的一个流程缺陷的处理方式,即确认缺陷并及时解决。

第二种处理流程

  1. 当测试人员发现Bug后,提交相关的缺陷内容,即 缺陷的状态为New

  2. 创建时会指定给开发,缺陷创建成功后,对应的开发确认缺陷,即 缺陷的状态为Open

  3. 当开发确认缺陷并解决完后,此时 缺陷的状态为Fixed,并当前缺陷被重新指派给测试人员。

  4. 测试发现缺陷的指派更改后,进行当前缺陷的回归测试,测试未通过,重新添加对应描述并指派给开发继续解决,此时 缺陷的状态为ReOpen

以上,为缺陷的一个二次处理方式,即缺陷虽然确认但是解决后的二次验证未通过。

第三种处理流程

当缺陷关闭后,由于某些原因,导致该缺陷场景再次复现,则测试人员把已关闭的缺陷需要重新打开并再次指派给相关研发,此时 缺陷的状态为ReOpen

该处理流程为缺陷的重新打开。

第四种处理流程

当测试人员提交缺陷,对应的开发人员也确认缺陷。但是由于该缺陷的触发场景为某些外在的极端条件,或者该缺陷的更改需要对架构进行调整,以至于该缺陷的解决优先级比较低,则对于开发而言可以暂时对该缺陷不进行处理,先挂起状态,等下个大版本发版时修复即可。则此时 缺陷的状态为 推迟Postponed或 挂起Hang

第五种处理流程

当测试人员提交缺陷,对应的开发人员也确认缺陷,但是缺陷是由于对需求文档理解有偏差误解导致,那么研发人员可以将这些缺陷标为拒绝修复,则此时 缺陷的状态为拒绝修复

总结

以下为缺陷生命周期对应场景的流程示意图: