Defect Lifecycle
The defect lifecycle is the sequence of states a defect passes through from the moment someone notices a problem to the moment the team is finished with it: reported, triaged, assigned, fixed, retested and closed — or ended another way, as a duplicate, a rejected report or a deliberate decision not to fix. With a lifecycle you can say at any moment what is open, who owns it and how long it has waited.
This pillar defines the terms, draws the lifecycle as a state diagram, lists every transition with its owner and exit condition, explains the endings that are not "fixed", and follows one fictional defect from discovery to closure. Two narrower guides sit under it: how to write a bug report (the content of the report and the difference between severity and priority) and defect triage (the meeting and decisions that move a new defect forward, including root cause analysis).
Error, defect, failure: getting the terms right
The ISTQB glossary and Foundation syllabus describe a causal chain. A person makes an error (also called a mistake): misreads a requirement, forgets a boundary, types the wrong operator. The error produces a defect (also called a fault or a bug) in a work product — a requirement, a design, the code, a test script or a configuration. When the defective part is executed under the right conditions it may cause a failure: the system does not do what it should, and someone or something observes it. Not every defect causes a failure — a defect in code that never runs stays latent — and the syllabus notes that failures can also be caused by environmental conditions.
Two more words cause confusion. Anomaly is the neutral term: an observed deviation from expectation, before anyone has decided whether it is a defect, a misunderstanding, a test error or a change request. IEEE 1044, the Standard Classification for Software Anomalies (listed by IEEE as inactive-reserved), uses anomaly as its umbrella term and defines attributes for classifying anomalies. Incident is overloaded: ISO/IEC/IEEE 29119-3 calls a defect report an incident report (the ISTQB Foundation syllabus points this out), while in operations an incident is an unplanned interruption or degradation of a live service, whatever its cause.
- Error (mistake) — a human action that produces an incorrect result.
- Defect (fault, bug) — an imperfection in a work product; it can be found by a review without running anything.
- Failure — an observed deviation of the running system from its expected behaviour.
- Root cause — the underlying reason the error was made or the defect was not prevented; the target of root cause analysis.
- Anomaly — any observed deviation from expectation, not yet classified.
Where defects are found: reviews, testing and production
Defects enter at every stage of the software development lifecycle and are found at different points in it. A requirement that contradicts another is a defect found by review before any code exists. A wrong calculation is found by a unit, API or system test during the software testing life cycle. A defect that slips through every check is found in production, usually as a failure reported by a user or raised by monitoring. The SDLC and STLC guide and the software testing life cycle guide describe those stages; this page describes what happens to a defect once it is found.
The lifecycle has the same shape in all three cases, but the entry point and cost differ. A defect enters the process through a report; how to write one a developer can act on, and how severity differs from priority, is the subject of the bug report guide. Triage then turns the report into a decision, which the defect triage guide covers in depth. Recording where each defect was found — review, test level or production — is what later lets you measure how many defects escaped each stage.
- Review findings — recorded in the review log or as review comments; closed when the author has corrected the work product and the reviewer has checked the correction.
- Test-phase defects — full lifecycle in the tracker, with confirmation testing and regression testing before closure.
- Production defects — linked to the operational incident, triaged immediately when a live service is affected, and verified in production after the fix is deployed.
The lifecycle states as a diagram
Tracker workflows differ, but almost all of them implement the same underlying states. The diagram uses generic names; a later section maps them to real tools. Solid arrows trace the main path from New to Closed; dashed arrows are the branches: they end a defect without a code change, park it for later, or send it back when a fix does not hold.
| # | From | To | Event or condition |
|---|---|---|---|
| 1 | NewStart | Open / Assigned | Triage: accepted — severity, priority, owner and target release set |
| 2 | NewStart | Needs info | Facts missing: the exact missing item is written downalternative path |
| 3 | Needs info | NewStart | Facts supplied: back to triage, not straight to a developeralternative path |
| 4 | NewStart | Resolved (not fixed) | Triage: no fix needed — duplicate, rejected, cannot reproduce, won’t fix or by designalternative path |
| 5 | Open / Assigned | Deferred | Postpone: a written reason and a target release or review datealternative path |
| 6 | Deferred | Open / Assigned | Re-planned: the review date or target release has arrivedalternative path |
| 7 | Open / Assigned | In Progress | Developer starts work |
| 8 | In Progress | Needs info | Developer cannot reproducealternative path |
| 9 | In Progress | Resolved: fixed | Fix merged, build number stated |
| 10 | Resolved: fixed | Verified | Confirmation test passes in the stated build; regression checks green |
| 11 | Resolved: fixed | Reopened | Retest fails: the original failure still occursalternative path |
| 12 | Reopened | Open / Assigned | Back to the owner of the fix, with the retest evidencealternative path |
| 13 | Verified | ClosedEnd | Fix shipped in the target release (or closed on verification, if agreed) |
| 14 | ClosedEnd | Reopened | Same failure seen again in a build with the fix (through triage)alternative path |
| 15 | Resolved (not fixed) | ClosedEnd | Reporter or QA accepts the resolution; if not, back to triagealternative path |
Every defect enters at New: a failure observed, or a defect found in a review. State names are generic; trackers rename them.
- New — recorded, not yet reviewed. Some trackers call it Unconfirmed, Submitted or Untriaged.
- Needs info — waiting for a specific fact from the reporter; the age clock keeps running.
- Open / Assigned — accepted as valid, with severity, priority, an owner and a target release.
- In Progress — the owner is actively investigating or fixing it.
- Resolved — the owner considers the work done, either fixed or with another resolution.
- Reopened — the resolution did not hold; the defect returns to its owner.
- Verified — a tester has confirmed the fix in the stated build.
- Closed — no further work; the record stays for history and metrics.
- Deferred — valid, but consciously postponed to a later release; it still counts as a known open defect.
Text version
failure observed, or defect found in a review
|
v
[ New ] ----- facts missing -----> [ Needs info ]
| <------ facts supplied ------------+
|
+------- triage: no fix needed ------> [ Resolved ] duplicate | rejected (not a bug)
| | cannot reproduce | won't fix | by design
| triage: accepted |
v | reporter / QA agrees (if not: back to triage)
[ Open / Assigned ] <----- re-planned -----+ |
| | | |
| +------ postpone ----> [ Deferred ] |
| developer starts |
v |
[ In Progress ] |
+-- cannot reproduce --> back to [ Needs info ] |
| fix merged, build number stated |
v |
[ Resolved: fixed ] -- retest fails --> [ Reopened ] --> back to [ Open / Assigned ]
| |
| confirmation test passes, regression green |
v v
[ Verified ] ------- fix shipped ------------> [ Closed ]
|
same failure seen again -----+--> [ Reopened ]Transitions: who moves a defect and what must be true
A state is only useful if everyone knows who may move a defect out of it and what must be true first. Put these rules into the tracker workflow where it supports conditions and required fields, and into the team's working agreement where it does not.
- New → Open / Assigned — triage group (test lead, product owner, development lead) — reproduced or credibly evidenced, not a duplicate, severity and priority set, a named owner and a target release.
- New → Needs info — triage or developer — the exact missing item is written down (build number, account, request id), not just "more info please".
- Needs info → New — the reporter, or whoever was asked — the requested fact is added to the report; the defect goes back to triage rather than straight to a developer.
- New → Resolved as duplicate, rejected, cannot reproduce, won't fix or by design — triage group — reason recorded, duplicates linked to the original, reporter notified.
- Open → Deferred — product owner — a written reason and a target release or review date; the risk is accepted by someone with the authority to accept it.
- Deferred → Open / Assigned — product owner — the review date or target release has arrived and the defect is re-planned with an owner and a release; a deferral that is extended gets a new written reason.
- Open → In Progress — assigned developer — work has started; a developer who cannot reproduce returns it to Needs info instead of leaving it idle.
- In Progress → Resolved: fixed — developer — the fix is merged, the build that contains it is stated, and a test that covers the failure is added where feasible.
- Resolved: fixed → Verified — tester, preferably the reporter — the confirmation test passes in the stated build with the original steps and data, and the agreed regression checks around the change are green.
- Resolved: fixed → Reopened — tester — the original failure still occurs in the stated build; evidence attached. A different failure found during retest is a new defect.
- Reopened → Open / Assigned — test lead or triage group — the defect goes back to the owner of the fix with the retest evidence attached, and from there to In Progress as before.
- Verified → Closed — tester or release manager — the fix has shipped in the target release, or the team closes on verification if that is the agreed rule.
- Closed → Reopened — anyone, through triage — the same failure is seen again in a build that contains the fix. A different symptom gets a new, linked defect.
- Resolved (not fixed) → Closed — reporter or QA — accepts the resolution; if they disagree, the defect goes back to triage rather than into a comment argument.
Endings other than fixed
Many defect records end without a code change. The ISTQB Foundation syllabus notes that a reported anomaly may turn out not to be a defect at all — a false positive or a change request, for example. Every non-fix ending needs a reason that a reader can check months later.
- Duplicate — the same underlying defect is already recorded. Link to the original, move any better evidence across, and resolve the newer record. The same symptom does not always mean the same cause; if unsure, keep both linked until the fix proves it.
- Rejected / invalid / not a bug — the behaviour matches the requirement, or the report came from a test error such as wrong data or the wrong environment. Quote the requirement. If the requirement itself is wrong, that is a requirements defect or a change request, not a rejection.
- Cannot reproduce / works for me — nobody can make the failure happen again with the information available. Record what was tried (builds, devices, data) and keep the logs and request ids: intermittent defects often return, and the first report is the evidence.
- Won't fix — a real defect the team has decided not to fix, typically because the cost exceeds the impact or the feature is being retired. It is a business decision owned by the product owner and recorded with its reason.
- Deferred — a real defect postponed to a later release. Unlike won't fix it stays open and belongs in the known-issues list that ships with the release notes.
- By design / as designed — the behaviour is intended. When the design surprises users, consider whether that surprise is itself a usability defect worth its own record.
How trackers name it: Bugzilla, Jira and issue trackers
Bugzilla's documentation describes its bug workflow as customisable and shows a default one. In the default, the statuses are UNCONFIRMED, CONFIRMED, IN_PROGRESS, RESOLVED and VERIFIED, and a resolved bug carries one of the resolutions FIXED, INVALID, WONTFIX, DUPLICATE or WORKSFORME. Bugzilla's field help describes VERIFIED as the point where QA has looked at the bug and its resolution and agrees with it, and as the final status. Worth copying: the resolution is a separate field from the status, and "cannot reproduce" is a formal ending, not a comment.
Jira takes the configurable route: each workflow defines its own statuses and transitions, and administrators choose which resolutions are available, so two projects in one company can use different names and paths for the same lifecycle. Lightweight issue trackers keep little more than open and closed, and teams express the rest with labels (needs-info, duplicate, wontfix) and linked pull or merge requests. Whatever the tool, keep a one-page mapping from your tracker's names to the generic lifecycle so that metrics mean the same thing across projects.
Generic state Bugzilla default Example Jira project (configured)
----------------- ----------------------------- ---------------------------------
New UNCONFIRMED Open + label "untriaged"
Open / Assigned CONFIRMED + assignee To Do + assignee
In Progress IN_PROGRESS In Progress
Resolved: fixed RESOLVED / FIXED Ready for QA, resolution Fixed
Resolved: other RESOLVED / INVALID, WONTFIX, Done, resolution Duplicate,
DUPLICATE, WORKSFORME Won't Do, Cannot Reproduce
Verified VERIFIED (final status) Verified
Closed (no separate state) ClosedConfirmation testing, regression testing and reopening
Two different tests follow a fix, and the ISTQB syllabus names them separately. Confirmation testing, often called retesting, re-runs the steps that failed, in the build that contains the fix, to confirm the defect is gone. Regression testing checks that the change has not broken anything else: the neighbouring features, the other callers of the changed code, the other platforms and locales. A defect is verified when the first passes; a release is safe only when the second does too.
Confirmation testing should start with the original data and environment, then vary one thing at a time — another browser, another role, the neighbouring boundary — because a fix often covers only the exact reported case. Regression scope comes from the change: which modules the diff touched and what depends on them. The smoke, sanity and regression testing guide covers how to size those suites.
- Retest in the build named in the resolution, never in "latest". If that build is not deployed, the defect is not ready for retest.
- Reopen only for the same failure. A new symptom gets a new defect linked to the first; otherwise both histories become unreadable.
- Count reopens. A defect reopened twice says something about the fix process — no test added, no review, an unclear expected result — not only about that defect.
- Turn the confirmation steps into an automated test at the lowest level that can express them, so the defect cannot return silently.
Worked example: one defect from discovery to closure
The following is a fictional defect in a fictional retail app, with realistic data. Prices are in Saudi riyals with 15% VAT, and the product rule in this example is that VAT is charged on the price after the discount.
- Triage raised the severity from Major to Critical because the team's scale puts wrong payment amounts in Critical — severity follows the scale, not the reporter's first guess.
- The reopen was legitimate: the same underlying defect showing on a second screen. A different symptom would have been a new, linked record.
- Verification used the stated build and varied the coupon type and the platform instead of repeating only the original steps.
- The record carries what metrics need later: when and where it was found, age, reopen count and root cause origin.
DEF-2417 Android checkout charges 190.00 SAR instead of 184.00 with a fixed-amount coupon
Found in: system testing, release 5.3.0 Reporter: layla.h@example.com
Environment: Android app 5.3.0 (build 530-rc2), Android 14 emulator, staging, API v2
2026-09-14 09:40 NEW Cart 200.00 SAR, coupon SAVE40 (-40.00). Expected (200 - 40) x 1.15 = 184.00.
Actual: charged 190.00 (VAT 30.00 computed on 200.00, then -40.00).
Web checkout, same account: correct. Request and response attached.
Reported severity: Major.
2026-09-14 14:00 OPEN Triage: reproduced 3/3 by a second tester; no duplicate ("VAT", "coupon").
Severity raised to Critical (customer charged a wrong amount).
Priority Highest (release 5.3.0 due 2026-09-21).
Owner: omar.k (payments API). Target: 5.3.0.
2026-09-15 10:15 IN PROGRESS API v2 POST /orders/price applies the coupon after VAT; v1 was changed
in 5.1 when the rule changed, v2 was not.
2026-09-15 17:30 RESOLVED Fixed in build 530-rc3. API tests added for fixed and % coupons.
2026-09-16 11:05 REOPENED Retest on rc3: amount charged is 184.00, but the order summary before
payment still shows 190.00 (GET /orders/summary, v2). Same defect.
2026-09-16 11:20 OPEN Back to omar.k with the retest evidence. Target unchanged: 5.3.0.
2026-09-16 13:40 IN PROGRESS GET /orders/summary (v2) still calls the old pricing function.
2026-09-16 18:20 RESOLVED Fixed in build 530-rc4: summary uses the corrected pricing function.
2026-09-17 12:40 VERIFIED Confirmation on rc4: 184.00 on both screens; also 20% coupon, web and
Android. Regression: checkout and pricing pack 38/38 passed.
2026-09-21 16:00 CLOSED Shipped in 5.3.0.
Age at verification: 3 d 3 h Reopen count: 1 Found in: system test
Root cause origin: requirements (rule change scoped to web only); contributing: code, testTry it: HTTP Request Inspector Try it: API Response Analyzer Try it: AI Bug Description Generator
Defect aging, defect metrics and summary reports
Defect age is the time a defect has been open: from creation to now for open defects, or to resolution or closure for finished ones — pick one definition and keep it. Time in each state is more useful than total age, because it shows where defects wait: days in New mean triage is not happening; days in Resolved mean the retest queue is the bottleneck; days in Needs info mean reports are missing facts.
A handful of defect metrics support real decisions: open defects by severity and age (release readiness), arrivals versus closures over time (is the backlog converging?), reopen rate (fix quality), rejected and duplicate rate (report quality and tracker search), and the share of defects found in each stage compared with production — the idea behind defect detection percentage in the ISTQB glossary. The test metrics guide covers the definitions, formulas and how metrics get gamed.
A defect summary report presents this to people who do not live in the tracker, usually as part of a test progress or test completion report. It gives counts and trends, and names the specific open defects that affect the release decision, each with severity, priority, owner and plan.
- Set age thresholds per severity — for example, a Critical defect untriaged after one working day, or a Major defect in Resolved for more than three days — and review breaches every week.
- Report deferred defects explicitly; a deferred defect is a known risk in the release, not a closed one.
Defect summary - release 5.3.0 - week ending 2026-09-18
Open by severity: Blocker 0 | Critical 1 | Major 6 | Minor 14 | Trivial 9 (total 30)
Arrivals / closures: 23 / 31 this week (backlog down 8)
Age of open defects: under 7 d: 18 | 7-30 d: 9 | over 30 d: 3 (all Minor, deferred to 5.4)
Reopen rate: 3 of 58 fixes in the last 4 weeks (5%)
Found in: reviews 11 | system test 37 | UAT 6 | production 2
Release-relevant: DEF-2451 Critical / Highest / omar.k - fix in rc5, retest 2026-09-19
Deferred, risk accepted by product owner on 2026-09-17: DEF-2290, DEF-2304Running the lifecycle well: a checklist
AI assistance fits the text-heavy steps of the lifecycle: turning rough notes into a structured report, proposing a searchable title, suggesting severity and priority with a justification, and explaining a stack trace. Treat the output as a draft: the tester confirms it, and triage owns the final severity and priority.
- One tracker and one documented workflow per product, with a mapping to the generic states.
- Every state has an owner and an exit condition; required fields enforce the important ones.
- A fixed triage cadence, and the untriaged queue kept close to empty.
- A mandatory reason for every non-fix resolution, with duplicates linked.
- Every fix states its build; every retest happens in that build; regression scope comes from the diff.
- Record where each defect was found and its root cause origin, so escapes can be measured.
- Review aging, reopen rate and the deferred list every week during a release.
Try it: AI Bug Title Generator Try it: AI Bug Description Generator Try it: AI Bug Severity Suggestion Try it: AI Bug Priority Suggestion Try it: AI Error Message Analyzer
Frequently asked questions
What are the stages of the defect lifecycle?
A typical lifecycle is New, Open or Assigned, In Progress, Resolved, Verified and Closed, with side states for Needs info, Deferred and Reopened, and non-fix resolutions such as duplicate, rejected, cannot reproduce, won't fix and by design. Tools name them differently, but the underlying states are the same.
What is the difference between an error, a defect and a failure?
An error is the human mistake, the defect is the resulting flaw in a work product such as code or a requirement, and the failure is the wrong behaviour observed when the defective part runs. A defect can exist without ever causing a failure.
What is the difference between retesting and regression testing?
Retesting, or confirmation testing, re-runs the failed steps to confirm the specific defect is fixed. Regression testing checks that the change did not break anything else. A fix needs both before release.
When should I reopen a defect instead of filing a new one?
Reopen when the same failure still occurs, or occurs again, in a build that contains the fix. If the retest reveals a different symptom, file a new defect and link it to the original.
What is the difference between deferred and won't fix?
A deferred defect is valid and will be fixed in a later release, so it stays open and appears in the known-issues list. Won't fix means the team has decided not to fix it at all, and the record is resolved with that reason.
How do you measure defect aging?
Measure the time from creation to now for open defects, or to resolution for finished ones, and break it down by state. Time spent in New, Needs info and Resolved shows whether triage, reporting or retesting is the bottleneck.
Who closes a defect?
Usually the tester who verified the fix, or the release manager once the fix has shipped. For non-fix resolutions the reporter or QA closes it after accepting the reason; disagreements go back to triage.
References
- ISTQB Certified Tester Foundation Level (CTFL) v4.0The foundation syllabus of software testing: test levels and types, test design techniques, test management and tools.
- ISTQB GlossaryThe standard definitions of testing terms — test case, regression testing, severity, priority, boundary value analysis and the rest.
- IEEE 1044-2009 — IEEE Standard Classification for Software AnomaliesA standard vocabulary and attributes for classifying software anomalies — defects, failures and their impact (listed by IEEE as inactive-reserved).
- Editing a Bug (section "Life Cycle of a Bug") — Bugzilla DocumentationA widely used tracker's default bug workflow — statuses, resolutions (fixed, invalid, won't fix, duplicate, works for me) and transitions — as a concrete lifecycle example.
- ISO/IEC/IEEE 29119-3:2021 — Software and systems engineering — Software testing — Part 3: Test documentationTemplates and content for test documentation — test policy, strategy, plan, status and completion reports, incident reports.
- Certified Tester Advanced Level Test Management (CTAL-TM) v3.0ISTQB's advanced syllabus on managing testing: test planning and estimation, risk-based testing, monitoring, metrics and reporting.
Practice exercise
Audit five defect records against the lifecycle rules
You test the Shop licence renewal feature of a fictional municipal e-services portal. Release 2.8 ships on 29 September 2026 and the go/no-go meeting is tomorrow. It is the morning of 27 September, and the test lead suspects that some defects have been moved through the tracker in ways that break the team's lifecycle, so she asks you to audit five records before the meeting. The export below uses the guide's generic state names; each line gives the time, the state the defect entered and who moved it.
Check every move against the guide's transition rules: was this person allowed to make it, and was the exit condition true at that moment? Some moves are correct, so flag only the ones that break a rule and say what should have happened instead. Then time one record state by state and correct the draft release note at the end of the export. Pen and paper are enough; a date difference calculator saves time in step 4, and a state transition generator can hold the lifecycle as a table of valid transitions to check each move against.
Municipal e-services portal (fictional) - Shop licence renewal - release 2.8
Tracker export 2026-09-27 09:00. Go/no-go meeting 2026-09-28, release ships 2026-09-29.
Triage group (test lead rania.q, product owner nadia.f, dev lead): Sun-Thu at 15:30.
Team rule: a Verified defect is closed when its fix ships.
Found in system testing by sara.m unless stated otherwise.
LIC-401 Late-renewal fee shows 0.00 SAR the day after the licence expired
2026-09-14 10:05 NEW sara.m: licence expired 2026-09-13, renewal on 2026-09-14.
Rule LR-7: late fee 100.00 SAR from the first day after
expiry. Shown: 0.00. Steps and request id attached.
2026-09-14 15:30 OPEN Triage: reproduced, no duplicate. Major / High.
Owner khalid.r, target 2.8.
2026-09-15 09:10 IN PROGRESS khalid.r
2026-09-15 16:40 RESOLVED khalid.r: fixed in build 2.8.0-rc3 (off-by-one in the
expiry date check). Unit test added.
2026-09-16 08:50 REOPENED sara.m: retest on staging (build 2.8.0-rc2): still 0.00.
2026-09-16 09:40 RESOLVED rania.q: reopen withdrawn, staging still runs rc2.
2026-09-17 11:00 VERIFIED sara.m: rc3 on staging: 100.00 the day after expiry,
0.00 on the expiry day. Renewal and payment pack 24/24.
LIC-402 Arabic shop name missing from the renewed licence PDF
2026-09-15 11:20 NEW sara.m: empty boxes instead of the Arabic shop name;
English name correct. PDF and account attached.
2026-09-15 15:30 OPEN Triage: reproduced, no duplicate. Major / High
(official document). Owner lina.s, target 2.8.
2026-09-16 10:00 IN PROGRESS lina.s
2026-09-17 17:10 RESOLVED lina.s: fixed in build 2.8.0-rc4 (Arabic font embedded).
Automated check added for the Arabic name in the PDF.
2026-09-20 12:30 REOPENED sara.m: retest on rc4: Arabic name now correct, but the
PDF shows the new expiry date as 2026-09-13 (the old
date) instead of 2027-09-13.
LIC-403 Renewal form accepts an 8-digit mobile number
2026-09-16 09:45 NEW sara.m: mobile 05123456 accepted. Requirement RN-4:
a Saudi mobile number is 05 followed by 8 digits.
2026-09-16 15:30 OPEN Triage: reproduced, no duplicate. Minor / Medium.
Owner khalid.r, target 2.8.
2026-09-21 14:00 RESOLVED khalid.r: won't fix, the SMS gateway rejects bad
numbers anyway.
2026-09-22 10:15 CLOSED sara.m: closed, developer says won't fix.
LIC-404 Screen reader announces the Pay button only as "button"
2026-09-17 13:00 NEW sara.m: on the payment step NVDA reads "button" with
no name; the button shows only an icon.
2026-09-17 15:30 OPEN Triage: reproduced, no duplicate. Major / Medium.
Owner lina.s, target 2.8.
2026-09-22 16:00 DEFERRED lina.s: no time in this release.
2026-09-24 18:00 CLOSED Release manager: board clean-up before go/no-go.
LIC-405 Payment taken but licence not renewed ("Session expired" after paying)
Found in: UAT. Reporter: ahmed.t (licensing department)
2026-09-20 09:20 NEW ahmed.t: paid 600.00 SAR, the page showed "Session
expired" and the licence still has the old expiry date.
2026-09-20 11:00 NEEDS INFO khalid.r: need more info.
2026-09-22 10:30 IN PROGRESS ahmed.t added build 2.8.0-rc4, account TEST-SHOP-07,
payment time 2026-09-20 09:05, receipt RC-55190.
khalid.r started work.
2026-09-24 12:00 RESOLVED khalid.r: duplicate.
Draft release note for 2.8 (test lead, to send after go/no-go):
Known issues: none.
Defects reopened after retest in this release: 2 (LIC-401, LIC-402).- Write the path of states each record has taken so far, using the guide's generic names (New, Needs info, Open / Assigned, In Progress, Resolved, Reopened, Verified, Closed, Deferred).
- For every move, note who made it and what was true at that moment. List each move that breaks a transition rule, and write what should have happened instead.
- Write the correct next action for each record today, and who owns it.
- For LIC-401, compute the time spent in each state and the age at verification, in calendar time as in the guide's worked example. Say where the defect waited longest and what that tells the team.
- Correct the two lines of the draft release note.
Show the model answer
Nine moves break a rule: one in LIC-401, one in LIC-402, two in LIC-403, two in LIC-404 and three in LIC-405. Everything else follows the guide, and recognising the correct moves is part of the exercise.
LIC-401. Path: New → Open / Assigned → In Progress → Resolved: fixed → Reopened → Resolved: fixed → Verified. Broken rule (1): the reopen on 16 September. A fixed defect is retested in the build named in the resolution, which was rc3; staging still ran rc2, which does not contain the fix. The defect was not ready for retest: the tester should have checked which build was deployed and waited for rc3, or asked when it would be deployed. The test lead's move back to Resolved is not a transition in the guide's diagram, but undoing a reopen that should not have happened is the right correction, and her note records why; leave this reopen out of the reopen count, because it says nothing about the quality of the fix. The rest of the record is a model: triage reproduced the failure, checked for duplicates and set severity, priority, owner and target; the fix states its build and adds a test; verification used the stated build, checked both sides of the boundary (the expiry day and the day after) and ran the regression pack. Next action: none until the release. Under the team rule, sara.m or the release manager closes it when 2.8 ships on 29 September.
LIC-402. Path: New → Open / Assigned → In Progress → Resolved: fixed → Reopened. Broken rule (2): the reopen. The confirmation test passed, because the Arabic name is correct in rc4; the wrong expiry date is a different failure in a different field. Reopen only for the same failure; a different symptom gets a new defect linked to the first. Next actions: sara.m files a new defect (say LIC-406, "Renewed licence PDF shows the old expiry date 2026-09-13 instead of 2027-09-13") with its own steps and evidence, linked to LIC-402, and it goes to today's triage. The test lead returns LIC-402 to Resolved: fixed, and sara.m moves it to Verified once the agreed regression checks around the change are green, for example the other generated PDFs (the receipt, and licences with an English-only name and with a long Arabic name). Also check whether the date failure occurs in rc3: if it does not, a change made between rc3 and rc4, such as the font fix, introduced it, which matters to triage and to root cause analysis.
LIC-403. Path: New → Open / Assigned → Resolved: won't fix → Closed. Broken rules (3) and (4). (3) Won't fix is a business decision owned by the product owner and recorded with its reason; here the developer took it alone, outside triage. (4) The reporter then closed the record because "the developer says won't fix". Closing a non-fix resolution means the reporter or QA accepts its reason, but there was no valid decision to accept, and the developer's reason does not hold: if the SMS gateway rejects bad numbers, the shop owner never receives the SMS messages the portal sends to that number. That describes impact, not a reason to skip the fix. When the reporter disagrees, the defect goes back to triage rather than into a comment argument. Next action: the test lead puts LIC-403 on today's triage agenda; nadia.f decides to fix it in 2.8, to defer it with a written reason and a target, or to confirm won't fix with a recorded reason, and the reporter is told the outcome.
LIC-404. Path: New → Open / Assigned → Deferred → Closed. Broken rules (5) and (6). Deferral is the product owner's decision, with a written reason and a target release or review date, and the risk must be accepted by someone with the authority to accept it; the developer's "no time in this release" is none of these. Closing it at the board clean-up broke the second rule: a deferred defect is still a known open defect and belongs in the known-issues list, and Deferred leads back to Open / Assigned, never to Closed. The closure hides a real risk, because screen reader users cannot tell which button pays, and it makes the open-defect count look better than it is. Next action: the test lead takes it to today's triage to undo the closure; nadia.f either keeps target 2.8 or defers it to 2.9 (or to a review date) with a written reason, and in that case it goes into the 2.8 known issues.
LIC-405. Path: New → Needs info → In Progress → Resolved: duplicate. Broken rules (7), (8) and (9). (7) "Need more info" names nothing; the request should list the exact missing items: build, test account, payment time, and receipt or request id. The vague request cost almost two days in Needs info (20 September 11:00 to 22 September 10:30). (8) Once the facts were supplied, the defect should have gone back to New for triage, not straight to a developer, so it was never triaged: no severity, priority or target for a failure in which the customer pays and does not get the service. On a scale like the one in the guide's example, where a wrong payment amount is Critical, this belongs at least as high, and it is release-relevant. (9) Duplicates are resolved by the triage group, with the original linked, better evidence moved across and the reporter notified; this record names no original at all. The same symptom does not always mean the same cause, so if in doubt keep both records linked until the fix proves it. Next action: the test lead brings LIC-405 to today's triage; the triage group sets severity and priority, links the original record or, if there is none, assigns it as a new defect with an owner and a target release, and puts the outcome on the go/no-go agenda.
LIC-401 timing, in calendar time: New 5 h 25 min (14 September 10:05 to 15:30); Open / Assigned 17 h 40 min (to 15 September 09:10); In Progress 7 h 30 min (to 16:40); Resolved 16 h 10 min (to 16 September 08:50); Reopened 50 min (to 09:40); Resolved again 25 h 20 min (to 17 September 11:00). Age at verification: 3 d 0 h 55 min, that is 72 h 55 min, and the parts add up to the same total. The defect spent 41 h 30 min in Resolved, more than half of its age, against 7 h 30 min of development work. For at least the first 17 hours of that wait (15 September 16:40 to 16 September 09:40) the fix existed in rc3 while staging still ran rc2. The guide reads days in Resolved as a retest-queue bottleneck; here part of the cause is how fixed builds reach the test environment, so ask when rc3 was deployed and raise the deployment delay, not the developer's speed.
Release note. "Known issues: none" is wrong: LIC-404 is a known defect. If nadia.f defers it, the line becomes, for example: "Known issues: LIC-404, on the payment step screen readers announce the Pay button without a name; deferred to 2.9, risk accepted by the product owner." If she keeps it in 2.8, it must be fixed and verified before the release. Any other defect that today's triage defers, LIC-403 for example, joins the list in the same form. "Defects reopened after retest: 2" should be 0: LIC-401 was retested in a build without the fix, and the retest of LIC-402 found a different failure that is now its own defect. Counting them would make the reopen rate measure process mistakes instead of fix quality. Not for the release note but for the go/no-go meeting: LIC-405 (payment taken, licence not renewed) and the new LIC-406 are open and untriaged, and the release decision needs a triage outcome for both.
To check your own list: every move you flag should fail one of two questions. Was this person allowed to make it, and was the exit condition true at that moment? A move that passes both is correct even when its outcome is unwelcome: a won't fix decided by nadia.f at triage, with a recorded reason, would have been a valid ending for LIC-403.
Your progress on this topic
Not started
Mark the topic complete when you have studied it and done the exercise.
Sign in to track your progress
Mark topics complete, continue where you left off and unlock specialisation exams.
Part of the QA Roadmap
Before this topic
Next topics
Tools mentioned in this guide
Turn rough notes into a complete bug report: steps to reproduce, expected vs actual, environment, severity and attachments checklist.
Generate clear, searchable bug titles from a messy description with Mutqan AI.
Get a suggested severity (Blocker / Critical / Major / Minor / Trivial) with justification from Mutqan AI.
Get a suggested priority (P0–P3) considering business impact, affected users, deadlines and severity, from Mutqan AI.
Explain stack traces and error messages, identify likely root causes and next debugging steps with Mutqan AI.
See exactly what your client sends: method, headers, query, body, IP and TLS info.
Analyze an API response: structure, field types, nulls, duplicates, sizes and potential data-quality issues.
Generate regression scenarios from a change description and a list of affected and related modules.