软件开发中的缺陷生命周期
在本课中,我们将学习缺陷的生命周期,帮助您了解测试人员在测试环境中必须处理的缺陷的各个阶段。
在缺陷生命周期中,我们还包含了最常被问到的面试问题。理解缺陷的生命周期需要了解缺陷的各个阶段。测试活动的主要目标是检查产品是否存在任何缺陷或错误。
在现实情况下,错误/失误/故障都称为bug/缺陷,因此可以说,测试的基本目标是确保产品不太容易出现缺陷(没有缺陷是不现实的情况)。
什么是缺陷?
简单来说,缺陷是应用程序中的错误或缺陷,它通过使预期行为与实际行为不匹配来阻止程序的正常流程。
当开发人员在应用程序的设计或开发过程中犯错,并且该问题被测试人员发现时,则称为缺陷。
测试人员的工作是彻底测试应用程序,以发现尽可能多的缺陷,以便高质量的产品能够交付给消费者。在继续讨论缺陷的流程和各个阶段之前,理解缺陷生命周期至关重要。
因此,让我们进一步深入了解缺陷生命周期。
到目前为止,我们已经讨论了什么是缺陷以及它与测试过程的关系。现在让我们来看一下缺陷的生命周期,并了解缺陷的过程以及缺陷的各个阶段。
什么是缺陷的生命周期?
在软件测试中,生命周期指的是缺陷或bug在其整个生命周期中经历的精确阶段集合。缺陷生命周期的目标是通过方便地协调和沟通缺陷的当前状态给多个被指派者,使缺陷修复过程更系统化和更高效。
缺陷的状态
缺陷或bug的状态是指缺陷或bug在缺陷生命周期中的当前状态。缺陷状态的目的是准确地表示缺陷或bug的当前状态或进度,以便更好地跟踪和理解缺陷生命周期。
从一个项目到另一个项目,缺陷所经历的状态数量各不相同。下面的生命周期图描述了所有可能的状态。
**新建 (New)** − 当一个新的缺陷最初被记录和公布时,它被称为“新建”。它被赋予“新建”状态。
**已分配 (Assigned)** − 测试人员提交缺陷后,测试主管接受并将其分配给编程团队。
**打开 (Open)** − 开发人员开始调查和修复缺陷。
**已修复 (Fixed)** − 开发人员在进行必要的代码修改并验证后,可以将问题标记为“已修复”。
**等待复测 (Pending retest)** − 缺陷修复后,开发人员向测试人员提供特定的代码以进行重新测试。发出“等待复测”状态是因为软件测试仍在等待测试人员。
**复测 (Retest)** − 在此阶段,测试人员重新测试代码以查看开发人员是否已修复缺陷,并将状态更改为“复测”。
**已验证 (Verified)** − 开发人员修复缺陷后,测试人员重新测试该问题。如果在程序中没有发现错误,则该问题已修复,状态将更改为“已验证”。
**重新打开 (Reopen)** − 如果开发人员修复后问题仍然存在,测试人员会将状态更新为“重新打开”。该缺陷将再次经历生命周期。
**关闭 (Closed)** − 当一个bug不再存在时,测试人员将其标记为“关闭”。
**重复 (Duplicate)** − 如果缺陷再次出现或缺陷与相同的bug想法相关,则状态更改为“重复”。
**拒绝 (Rejected)** − 如果开发人员认为问题不真实,则缺陷标记为“拒绝”。
**延期 (Deferred)** − 如果当前问题不是优先级最高的问题,并且预计将在将来的版本中解决,则将其赋予“延期”状态。
**不是bug (Not a bug)** − 如果bug对应用程序的操作没有影响,则bug的状态设置为“不是bug”。
缺陷的生命周期
测试人员发现了缺陷。
缺陷已被赋予“新建”状态。
缺陷被报告给项目经理,项目经理将对其进行调查。
项目经理确定缺陷是否有效。
由于缺陷无效,状态设置为“拒绝”。
因此,项目经理将其标记为拒绝。如果问题未被拒绝,则下一步是确定它是否在项目的范围内。假设我们有另一个功能,例如同一程序的电子邮件功能,并且您发现其中存在缺陷。但是,当此类缺陷被赋予推迟或延迟状态时,它并不属于当前版本。
然后,经理检查是否之前提到过类似的问题。如果答案是肯定的,则该缺陷被标记为重复。
如果答案是否定的,则该问题将分配给开发人员,开发人员开始处理代码。此时,缺陷被赋予进行中状态。
代码修复后。缺陷的状态尚未修复。
然后,测试人员将重新测试代码。如果测试用例成功,则缺陷被关闭。如果测试用例再次失败,则问题将重新打开并分配给开发人员。
考虑这样一种情况:在航班预订的第一个版本中发现传真订单中的一个缺陷,该缺陷已修复并被赋予关闭状态。相同的bug在第二次升级版本中再次出现。在这种情况下,一个已关闭的缺陷将被重新打开。
实施缺陷生命周期:指导原则
在开始使用缺陷生命周期之前,应该遵循一些基本原则。
详情如下:
在开始处理缺陷生命周期之前,整个团队了解缺陷的各个阶段(如上所述)至关重要。
为了减少未来的误解,应该仔细记录缺陷生命周期。
为了获得更好的结果,请确保每个被分配了与缺陷生命周期相关的任务的人都完全理解他们的责任。
每个更改缺陷状态的人都应该完全了解该状态,并提供关于该状态和设置该状态的理由的充分数据,以便所有处理该缺陷的人都能够轻松理解造成这种缺陷状态的原因。
为了在缺陷之间保持一致性,从而在缺陷生命周期过程中保持一致性,应谨慎使用缺陷跟踪工具。
错误、缺陷和故障的主要区别是什么?
错误 − 当开发人员在开发过程中发现应用程序的实际行为和预期行为之间的差异时,他们将其标记为错误。
缺陷 − 当测试人员在测试过程中发现应用程序的实际行为和预期行为之间的差异时,则发生缺陷。
故障 − 当客户或最终用户在生产阶段发现程序的实际行为和预期行为之间的差异时,则发生故障。
无效或重复的缺陷报告
当缺陷是由代码以外的因素(例如测试环境或误解)引起的时,应将报告关闭为无效缺陷。
保留一份重复报告,另一份则标记为重复并关闭。管理人员会接受某些错误报告。
整体缺陷管理流程由测试经理负责,缺陷管理工具跨职能团队负责处理报告。
与会人员包括测试经理、开发人员、项目经理、生产经理和其他相关人员。
缺陷管理委员会应评估每个缺陷的有效性,并决定是否应修复或推迟修复。做出此决定时,应考虑不修复任何问题的成本、风险和益处。
如果必须纠正缺陷,则必须确定其优先级。
缺陷或错误的补充详细信息
在软件开发生命周期的任何阶段都可能引入缺陷。
越早发现和纠正缺陷,总质量成本就越低。
在引入缺陷的同一阶段消除问题,可以降低质量成本。
静态测试识别缺陷而不是故障。由于不需要调试,因此成本保持在最低限度。
当缺陷在动态测试中产生故障时,问题的存在就会暴露出来。
编写高质量的缺陷报告:一些技巧!
能够编写高质量的缺陷报告是测试人员工具箱中最关键的技能之一。发现缺陷只是成功的一半;如果开发人员无法重现您发现的问题,他们将很难纠正这些问题。为了确保测试人员能够全面报告他们发现的缺陷,您的缺陷跟踪软件应包含一些必要的字段。此外,测试人员应提高其描述能力。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP