Defect/Bug Life Cycle in Software Testing

Key Takeaways This guide explains the defect life cycle stages, helping readers understand bug tracking, communication flow, and efficient resolution from discovery to closure.

Defect/Bug Life Cycle

What is Defect/Bug Life Cycle?

Defect Life Cycle or Bug Life Cycle in software testing is the specific set of states that defect or bug goes through in its entire life. The purpose of Defect life cycle is to easily coordinate and communicate current status of defect which changes to various assignees and make the defect fixing process systematic and efficient.

Defect Status

Defect Status or Bug Status in defect life cycle is the present state from which the defect or a bug is currently undergoing. The goal of defect status is to precisely convey the current state or progress of a defect or bug in order to better track and understand the actual progress of the defect life cycle.

Defect States Workflow

The number of states that a defect goes through varies from project to project. Below lifecycle diagram, covers all possible states

  • New: When a new defect is logged and posted for the first time. It is assigned a status as NEW.
  • Assigned: Once the bug is posted by the tester, the lead of the tester approves the bug and assigns the bug to the developer team
  • Open: The developer starts analyzing and works on the defect fix
  • Fixed: When a developer makes a necessary code change and verifies the change, he or she can make bug status as “Fixed.”
  • Pending retest: Once the defect is fixed the developer gives a particular code for retesting the code to the tester. Since the software testing remains pending from the testers end, the status assigned is “pending retest.”
  • Retest: Tester does the retesting of the code at this stage to check whether the defect is fixed by the developer or not and changes the status to “Re-test.”

Defect States Workflow

  • Verified: The tester re-tests the bug after it got fixed by the developer. If there is no bug detected in the software, then the bug is fixed and the status assigned is “verified.”
  • Reopen: If the bug persists even after the developer has fixed the bug, the tester changes the status to “reopened”. Once again the bug goes through the life cycle.
  • Closed: If the bug is no longer exists then tester assigns the status “Closed.” 
  • Duplicate: If the defect is repeated twice or the defect corresponds to the same concept of the bug, the status is changed to “duplicate.”
  • Rejected: If the developer feels the defect is not a genuine defect then it changes the defect to “rejected.”
  • Deferred: If the present bug is not of a prime priority and if it is expected to get fixed in the next release, then status “Deferred” is assigned to such bugs
  • Not a bug: If it does not affect the functionality of the application then the status assigned to a bug is “Not a bug”.

Defect/Bug Life Cycle Explained

Defect Life Cycle or Bug Life Cycle -  Stuff You Must Know!

  1. Tester finds the defect
  2. Status assigned to defect- New
  3. A defect is forwarded to Project Manager for analyze
  4. Project Manager decides whether a defect is valid
  5. Here the defect is not valid- a status is given “Rejected.”
  6. So, project manager assigns a status rejected. If the defect is not rejected then the next step is to check whether it is in scope. Suppose we have another function- email functionality for the same application, and you find a problem with that. But it is not a part of the current release when such defects are assigned as a postponed or deferred status.
  7. Next, the manager verifies whether a similar defect was raised earlier. If yes defect is assigned a status duplicate.
  8. If no the defect is assigned to the developer who starts fixing the code. During this stage, the defect is assigned a status in- progress.
  9. Once the code is fixed. A defect is assigned a status fixed
  10. Next, the tester will re-test the code. In case, the Test Case passes the defect is closed. If the test cases fail again, the defect is re-opened and assigned to the developer.
  11. Consider a situation where during the 1st release of Flight Reservation a defect was found in Fax order that was fixed and assigned a status closed. During the second upgrade release the same defect again re-surfaced. In such cases, a closed defect will be re-opened.

That’s all to Bug Life Cycle

This training video describes the various stages in a bug aka defect life cycle and its importance with the help of an example

 

Click here if the video is not accessible

FAQs

When explaining the defect life cycle in an interview, clarity and structure matter. Start by mentioning that it refers to the journey of a defect from its discovery to closure. You can then break it down into stages:

  • New/Open – The defect is identified and logged.
  • Assigned – It gets allocated to a developer for fixing.
  • Fixed/Resolved – The developer applies a solution.
  • Retest/Verification – Testers validate the fix.
  • Closed – The defect is confirmed resolved, or Reopened if it persists.

The defect life cycle (also called bug life cycle) is the series of steps a defect takes during testing: identified, logged, assigned, fixed, retested, and closed. It ensures systematic tracking and improves software quality across teams. This systematic approach ensures accountability, transparency, and better quality software delivery. Think of it as a traffic signal for defects—everyone knows when to stop, go, or recheck.

Multiple tools are available to manage the defect life cycle, depending on the project’s needs. Some of the popular options are JIRA, Bugzilla, HP ALM, Redmine, and MantisBT. They let teams log, assign, and track defects. JIRA is the most widely used in Agile and interview discussions.

In JIRA, the defect life cycle is managed through customizable workflow statuses. By default, it mirrors standard defect tracking, but teams often tailor it. A typical JIRA defect cycle looks like this:

  • To Do / Open – Defect logged.
  • In Progress – Developer starts fixing.
  • Resolved / Done – Fix applied, waiting for tester validation.
  • Reopened – If the fix fails, the defect moves back to active status.
  • Closed – Verified by testers and marked complete.

The terms bug life cycle and defect life cycle are often used interchangeably, but some professionals make a subtle distinction:

  • Bug Life Cycle – Typically used in a technical context, referring to issues in code that cause malfunction.
  • Defect Life Cycle – Broader in scope, covering deviations from requirements, which may or may not be coding-related.

In practice:

  • Bug = A programming error.
  • Defect = Any gap between expected and actual results (could be design, requirement, or process-related).

That said, the cycles are the same—discovered → fixed → retested → closed.

These are the benefits of a defect life cycle:

  • Ensures Clarity: Defines each bug’s status for transparent tracking.
  • Improves Collaboration: Developers, testers, and managers stay aligned.
  • Boosts Efficiency: Streamlined workflow reduces wasted effort.
  • Prioritization Aid: Helps rank bugs by severity and impact.
  • Supports Accountability: Tracks ownership at every stage.
  • Data-Driven Insights: Lifecycle history fuels better decision-making.

Summary

Understanding the defect life cycle ensures structured bug management, smoother collaboration, and faster resolutions. By following each stage, teams can enhance software quality, reduce risks, and deliver reliable, user-friendly applications with confidence.