Testland
Browse all skills & agents

severity-vs-priority-reference

Pure-reference catalog for defect classification: severity (impact on the system / user) vs priority (urgency of fix) on independent axes - the canonical 5-point severity scale (Critical / High / Medium / Low / Trivial), the 5-point priority scale (Immediate / High / Medium / Low / Deferred), the 5x5 matrix with worked S1/P5 and S5/P1 examples, and IEEE 1044-2009 severity classes; plus the full defect lifecycle (ISTQB-canonical states new / open / assigned / fixed / verified / closed / reopened / deferred / rejected / duplicate, allowed and forbidden transitions, tracker vocabulary maps) and the defect-categorisation taxonomies (IEEE 1044 anomaly classification, ISTQB CTAL-TA root-cause categories, Orthogonal Defect Classification) in references. Use when triaging or classifying a defect, configuring a tracker's severity/priority/state fields, reviewing a bug report's classification, or running root-cause analysis.

Install with skills.sh (any agent)

npx skills add testland/qa --skill severity-vs-priority-reference
View source

severity-vs-priority-reference

Overview

Severity and priority are two independent axes, not synonyms. Every triaged defect must have both, and the combination drives scheduling, escalation, and SLA enforcement.

  • Severity measures how badly the defect breaks the system / user when triggered. It's an objective property of the defect.
  • Priority measures how urgently the fix must land. It's a scheduling decision, influenced by severity but also by business context (customer commitments, regulatory deadlines, release timing).

This skill is a pure reference consumed by defect-report review (which rejects reports that conflate the two), bug-tracker-workflow, and downstream triage tooling. Two companion references extend it: the defect lifecycle (states, allowed / forbidden transitions, tracker vocabulary) in references/lifecycle.md, and the categorisation taxonomies (IEEE 1044, ISTQB CTAL-TA root cause, ODC) in references/taxonomy.md.

When to use

  • Reviewing whether a bug report's severity + priority are both set and consistent with the defect description.
  • Configuring a tracker's severity / priority field options.
  • Coaching a tester / triager on the distinction.
  • Checking a state transition against the canonical lifecycle (see references/lifecycle.md).
  • Categorising defects for root-cause analysis or process metrics (see references/taxonomy.md).

How to use

  1. Read the defect and decide what function it breaks and how badly; pick a severity (S1-S5) from the severity scale anchors.
  2. Separately weigh how urgently the fix must land given business context; pick a priority (P1-P5) from the priority scale.
  3. Locate the pair in the 5x5 matrix; if the cell is "rare" or "unusual", record an explicit rationale for the combination.
  4. Confirm you did not collapse the axes (do not force P1 just because severity is S1) - the two values are independent.
  5. Set the tracker's severity and priority fields per the configuring-a-tracker table for your platform.
  6. On any later re-triage (state change), keep severity fixed and revisit priority only.
  7. Log every priority change with its rationale.

The two axes

Severity scale

Per IEEE 1044-2009 (cite by stable ID; "Standard Classification for Software Anomalies") and ISTQB CTFL syllabus:

SeverityDefinitionExample
Critical (S1)System unusable; data loss; security breach; total loss of function.Production database is corrupted on user signup.
High (S2)Major function broken; significant user impact; no easy workaround.Checkout fails 30 % of the time; no workaround.
Medium (S3)A function works incorrectly; usable workaround exists; impact bounded.Date picker shows wrong month abbreviations; users can type the date.
Low (S4)Cosmetic or minor inconvenience; functionality not impaired.Footer copyright year not updated.
Trivial (S5)Spelling, alignment, polish-level issues."Settngs" link misspelled in sidebar.

Per ISTQB Glossary "severity" entry (glossary.istqb.org (opens in new window)): "the degree of impact that a defect has on the development or operation of a component or system."

Priority scale

Per ISTQB Glossary "priority": "the level of (business) importance assigned to an item, e.g., a defect."

PriorityDefinitionExample
Immediate / Blocker (P1)Stop the release; halt downstream work until fixed.Production outage; security incident in progress.
High (P2)Fix in current sprint / before next release.Customer-reported high-severity bug.
Medium (P3)Fix when capacity permits in coming sprints.Medium-severity bug with workaround.
Low (P4)Backlog; fix opportunistically.Low-severity, no customer impact.
Deferred (P5)Won't fix in foreseeable horizon.Cosmetic in deprecated feature.

Why they must be separate axes

The "combined severity-priority" scale is a common anti-pattern. Each cell in the 5×5 matrix below represents a real combination:

P1 ImmediateP2 HighP3 MediumP4 LowP5 Deferred
S1 Criticaltypicalunusual but realrarerarerare
S2 Hightypicaltypicaltypicalrarerare
S3 Mediumunusualtypicaltypicaltypicalunusual
S4 Lowunusualunusualtypicaltypicaltypical
S5 Trivialunusual (PR demo!)rareunusualtypicaltypical

Worked examples that prove the distinction:

  • S1 / P5 (Critical / Deferred) - Real defect: a security vulnerability in a legacy system scheduled for deprecation next quarter. Severity is objectively Critical (the bug, if triggered, breaks the system) but priority is Deferred (the whole subsystem is being removed; patching it is wasteful). Action: track + monitor; if exploited before deprecation, re-prioritise.

  • S5 / P1 (Trivial / Immediate) - Real defect: a typo on the hero copy of the marketing site that says "Bweekly" instead of "Biweekly," and the CEO just shared the page on LinkedIn. Severity is objectively Trivial (no function broken) but priority is Immediate (PR / brand impact).

  • S2 / P3 (High / Medium) - Real defect: checkout intermittently fails for a specific bank's cards (3 % of transactions), workaround = use a different card. Severity is High (major function impaired), priority is Medium (workaround exists + no SLA breach yet).

  • S3 / P1 (Medium / Immediate) - Real defect: a regression surfaced 4 hours before a marketing email lands that mentions the feature. Severity is Medium (function works in 90 % of cases) but priority is Immediate (marketing dependency).

Worked example

A CSV export appends one trailing blank column for every user. The export still succeeds and every data value is correct.

  1. Severity: the function works and data is intact; the defect is a cosmetic formatting flaw -> S4 Low (functionality not impaired).
  2. Priority: a major enterprise customer's ingestion pipeline breaks on the extra column, and their renewal is next week -> P2 High (business commitment, near-term deadline).
  3. Matrix check: the pair is S4 / P2 - an "unusual" cell, so log the rationale (customer renewal dependency).
  4. Set Jira Severity = Low, Priority = High; do not bump severity to justify the urgency.

Result: the fix is scheduled in the current sprint despite Low severity, driven entirely by the High priority - a clean demonstration that the two axes move independently.

Mapping to lifecycle

Severity and priority don't change with state (typically). However:

  • Re-triage at state change: when a deferred defect resurfaces as a production failure, severity is unchanged but priority jumps.
  • Severity escalation rules: many trackers auto-bump priority if severity is S1/S2. The platform-workflow skills configure these.
  • SLA driven by priority: P1 = e.g., 4-hour response, P2 = 1 business day, P3 = 1 week. SLAs are tracker config, not severity-derived.

See references/lifecycle.md for the state transitions; this skill defines the orthogonal severity / priority fields.

Common confusions

ConfusionReality
"Severity = customer impact."Severity = system function impact. Customer impact informs priority. A bug that breaks an unused admin tool is High severity but Low priority.
"Priority always equals severity."False. The 5×5 matrix has 25 distinct cells, all observed in practice.
"Critical defects always get fixed immediately."False. A Critical defect in a deprecated subsystem may be Deferred.
"Cosmetic = Low / Trivial severity always Low priority."False. Marketing context (S5 / P1 example above) can make trivial severity an immediate priority.
"Severity is set by the reporter; priority by the PM."Convention varies. Best practice: reporter proposes severity; triager confirms severity + assigns priority.

Configuring a tracker

TrackerSeverity fieldPriority field
JiraCustom field (often Severity with select-list)Built-in Priority field
LinearCustom field (Severity), no first-classBuilt-in Priority field (Urgent / High / Medium / Low / No priority)
GitHub IssuesLabels (severity:critical etc.)Labels (priority:p1 etc.) + Projects status
Azure DevOpsBuilt-in Severity (1 - Critical / 2 - High / 3 - Medium / 4 - Low)Built-in Priority (1 / 2 / 3 / 4)
BugzillaBuilt-in Severity + PrioritySame

bug-tracker-workflow covers the platform-specific configuration for Jira, Linear, GitHub Issues, and Azure DevOps.

Anti-patterns

Anti-patternWhy it failsFix
Single combined fieldLoses information; everyone fights about whether to bump severity to escalate or vice versaTwo fields, explicit per defect
Default both fields to "Medium"Triagers don't engage with the distinctionRequire both fields explicitly on transition from New → Open
Auto-equate severity with priority"S1 must be P1" - disallows S1/P5 deferred legacy bugsAllow both axes independently
Severity is purely subjectiveVariability across reporters; metrics unreliableUse the IEEE 1044 examples + team-calibrated rubric
Priority changes weekly without reasonMetrics chaos; no accountabilityLog priority changes with rationale
Critical defects always escalated to release managerFloods the escalation channelUse severity and priority for escalation rules

Limitations

  • Subjectivity remains. Severity has objective anchors (S1 = data loss, S5 = cosmetic) but boundary cases (S2 vs S3 with a workaround) require judgment. Reviewer disagreement is normal.
  • Priority is a moving target. Business context shifts weekly; a P3 today may be P1 next sprint after a customer escalation.
  • Severity classes vary by tracker. Some use 4-point scales (Bugzilla), some 5 (Azure DevOps), some define their own. The team must pick one and document it.
  • No automation can fully classify severity. AI classifiers can suggest, but the final call needs a human in the loop.

References

Defect lifecycle states and transitions

View source (opens in new window)

Defect lifecycle states and transitions

Reference companion to severity-vs-priority-reference. Catalogs the ISTQB-canonical defect lifecycle and maps it to Jira, Linear, and GitHub Issues workflows. Consumed by bug-tracker-workflow for state-transition logic.

How to use

  1. Read the defect's current tracker state and map it to a canonical state via tracker-vocabulary-map.md (opens in new window).
  2. Find that canonical state in the allowed-transitions table.
  3. Check the proposed next state is in the allowed set; if it matches a forbidden transition (New -> Closed, Fixed -> Closed without Verified), flag it.
  4. Apply the guardrails (triage SLA, verification gate, reopen audit, duplicate / deferred linking) before recording the move.
  5. Confirm ISTQB term usage is correct (fault vs failure) in the report wording.
  6. Record the transition; for Duplicate / Deferred / Rejected attach the required link or reason.
  7. For metrics, count Reopened separately from New inflow.

ISTQB terms - error, fault, defect, failure, anomaly

Per the ISTQB Glossary (glossary.istqb.org (opens in new window)):

TermDefinition
ErrorA human action that produces an incorrect result.
Fault (synonyms: defect, bug)A manifestation of an error in software.
DefectAn imperfection or deficiency in a work product where it does not meet its requirements or specifications. Synonyms: bug, fault, problem.
FailureAn event in which a component or system does not perform a required function within specified limits. Failure is what users experience; fault is what produced it.
AnomalyAny condition that deviates from expectation. Broader than defect - could be a usability issue, a documentation gap, or a defect.

These terms are surprisingly often misused: developers say "the bug failed in production" when they mean "the failure, caused by the fault, occurred in production." The lifecycle below tracks defects (faults), not failures (events).

Canonical lifecycle states

The standard set per IEEE 1044-2009 "Standard Classification for Software Anomalies" and ISO/IEC/IEEE 29119-3:2021 "Test documentation":

StateMeaningTypical owner
NewJust reported. Not yet triaged.Reporter
Open (or Acknowledged)Triaged; confirmed as a real defect.Triage lead
AssignedA developer / team owns it.Engineering manager
In ProgressActive investigation / fix.Assigned developer
Fixed (or Resolved)Code change merged; awaiting verification.Assigned developer
Verified (or Tested)A tester confirmed the fix.QA
ClosedDefect lifecycle complete.Release manager / QA
ReopenedVerification failed; back to assigned.QA / Reporter
DeferredReal defect, fix postponed (next release / never).Product manager
Rejected (or Not a Bug)Triage concluded this isn't a defect (misuse, by design, dup).Triage lead
DuplicateAlready tracked as another defect. Link to canonical.Triage lead

Cite: ISO/IEC/IEEE 29119-3:2021 §6 "Test documentation - Anomaly report" - section enumerates the recommended fields and lifecycle states. Cite by stable ID; full text behind iso.org paywall.

State transition diagram

                +-----+
                | New |
                +-----+
                   |
       triage      |  (or reject / dup)
                   v
   +-----------+       +-----------+
   |   Open    |------>| Rejected  |
   +-----------+       +-----------+
        |                     ^
        |                     |
   assign                     |
        v                     |
   +-----------+              |
   | Assigned  |              |
   +-----------+              |
        |                     |
        v                     |
   +-----------+   defer +-----------+
   |In Progress|-------->| Deferred  |
   +-----------+         +-----------+
        |
        v
   +-----------+
   |   Fixed   |
   +-----------+
        |
   verify
        |
        +------- fail ----+
        |                 |
        v                 v
   +-----------+   +-----------+
   | Verified  |   | Reopened  |
   +-----------+   +-----------+
        |                 |
        v          assigned (back to In Progress)
   +-----------+
   |  Closed   |
   +-----------+

Allowed transitions (defensible):

FromAllowed →
NewOpen, Rejected, Duplicate
OpenAssigned, Deferred, Rejected
AssignedIn Progress, Deferred, Reopened
In ProgressFixed, Deferred
FixedVerified, Reopened
VerifiedClosed, Reopened (rare - late finding)
ReopenedAssigned, In Progress
DeferredOpen, Closed (wontfix)

Forbidden transitions (smells):

  • New → Closed (skips triage + verification - only legitimate for spam / duplicate where triager catches it immediately)
  • Assigned → Closed (no fix, no verification - what was closed?)
  • Fixed → Closed without Verified (no verification - possibly the fix never worked)
  • Closed → anything except Reopened (reopening is the only way back)

Tracker-vocabulary map

The canonical lifecycle maps to platform-specific terminology across Jira, Linear, and GitHub Issues, with per-platform notes on how configurable each tracker's states are. See the full cross-platform table in tracker-vocabulary-map.md (opens in new window).

Recommended state-transition guardrails

Enforced by bug-tracker-workflow automation:

GuardrailRule
Triage SLANew → Open or Rejected within 1 business day
Verification gateFixed → Closed must pass via Verified
Reopen auditReopened transitions are tracked; >3 reopens on the same defect signals fix-quality issues
Deferred reviewDeferred items reviewed at sprint planning; auto-expire to Closed (wontfix) after N sprints
Duplicate linkingDuplicate transitions require duplicate_of: link to canonical

Worked example

A Jira ticket sits in In Review and a developer wants to drag it straight to Done.

  1. Map the tracker state: In Review -> canonical Fixed (per tracker-vocabulary-map.md (opens in new window)); Done -> canonical Closed.
  2. The requested move is therefore Fixed -> Closed.
  3. Check the allowed-transitions table: Fixed allows only Verified or Reopened. Fixed -> Closed is a forbidden transition ("Fixed -> Closed without Verified").
  4. Apply the verification gate guardrail: a tester must confirm the fix first, moving it to Verified.

Result: block the drag to Done, route the ticket to a QA verification step, and only allow Verified -> Closed once the fix is confirmed.

Anti-patterns

Anti-patternWhy it failsFix
"Closed" used as "Done" without verificationDefect re-emerges in productionRequire Verified → Closed transition
All defects start in "Assigned" with no triageTriage data lost; metrics unreliableNew → Open → Assigned (triage step is informative)
Reopened defects re-counted as new in metricsInflates inflow / understates fix qualityDistinguish New vs Reopened in dashboards
Deferred = forgottenDeferred items accumulate; technical debtDeferred review at every sprint planning
Multiple "Open" subtypes ("In Triage", "Triaged", "Confirmed")Workflow becomes opaque; reporters don't know which state means whatCollapse to fewer states; use fields for nuance
Direct New → Closed by triageLost signal - was it spam? duplicate? rejected?Always transition through a meaningful state
Different teams use different workflows in the same trackerCross-team metrics impossibleStandardise to the canonical lifecycle above

Limitations

  • Workflow customisation is the norm. Real-world Jira / Linear configurations often add custom states (UX Review, Legal Review, Customer Confirmation). The canonical lifecycle is the floor, not the ceiling.
  • State enumeration vs. label-based. GitHub Issues' Open / Closed binary is impoverished; teams supplement with labels and Projects status columns. This reference treats the effective lifecycle (state + label + assignee) as a single concept.
  • The terms "bug" and "defect" remain interchangeable in practice. ISTQB makes the distinction sharp; most trackers don't. Adopt the canonical vocabulary or accept the colloquial use - but don't mix midstream.

References

  • ISTQB Glossary - glossary.istqb.org (opens in new window). Canonical definitions of error / fault / defect / failure / anomaly.
  • IEEE 1044-2009 "Standard Classification for Software Anomalies" - cite by stable ID; defines defect lifecycle.
  • ISO/IEC/IEEE 29119-3:2021 "Software and systems engineering - Software testing - Part 3: Test documentation" §6 - defines anomaly-report fields and lifecycle.
  • Atlassian "Configure issue workflows" - Jira default workflows.
  • Linear documentation "Workflow states" - fixed enum + per-team subdivision.
  • GitHub Issues docs - Open / Closed + labels + Projects.

Defect categorisation taxonomies

View source (opens in new window)

Defect categorisation taxonomies

Reference companion to severity-vs-priority-reference. Catalogs the three load-bearing defect taxonomies:

  1. IEEE 1044-2009 - the formal anomaly-classification standard (canonical for regulated / safety-critical industries).
  2. ISTQB CTAL-TA root-cause - the test analyst taxonomy used for retrospective root-cause analysis.
  3. Orthogonal Defect Classification (ODC) - IBM Research's eight-attribute framework for in-process defect classification.

Use to categorise defects consistently across a team, drive root-cause analysis, and inform process-improvement decisions ("where in the SDLC do we leak the most defects?"). The from-CI-failure workflow in bug-report-template (qa-bug-repro) populates these classification fields; its review checklist rejects unclassified defects.

IEEE 1044-2009 classification

IEEE 1044-2009 "Standard Classification for Software Anomalies" (cite by stable ID; statutory text behind ieee.org paywall) defines four classification dimensions per defect:

1. Anomaly class

What the anomaly broadly is.

ClassDescription
DefectAn imperfection in a work product.
Test failureAn anomaly observed during testing.
Customer failureAn anomaly observed by a customer.
Process anomalyProcess not followed correctly.
Document anomalyDocumentation defect.
Configuration anomalyConfiguration / environment issue.

2. Anomaly type

Where in the lifecycle the defect originated.

TypeExample
RequirementsMissing requirement; ambiguous requirement; conflicting requirements.
DesignArchitectural flaw; incorrect algorithm choice.
Code (implementation)Off-by-one; null-pointer; incorrect logic.
InterfaceWrong API contract; type mismatch between modules.
DataIncorrect test data; production data corruption.
ToolsCI tool failure; environment misconfiguration.
Test specificationWrong expected result in the test case.
User documentationHelp text describes wrong behaviour.

3. Anomaly severity

Per the severity scale in the main severity-vs-priority-reference SKILL.

4. Cause classification

Root cause categories: timing, race condition, memory leak, boundary condition, calculation error, control flow, etc.

ISTQB CTAL-TA root-cause taxonomy

The ISTQB Advanced Test Analyst syllabus simplifies to six high-frequency categories used in retrospective root-cause analysis:

Root causeDefinitionExample
RequirementsMissing, wrong, or ambiguous requirement."We never specified what happens when the cart is empty at checkout."
DesignDesign choice that produces the defect."Architecture coupled UI to DB schema; schema change broke UI."
ImplementationCorrect design, wrong code."Off-by-one in pagination logic."
Interface / integrationModules disagree on contract."Auth service returns null for missing claim; UI expects empty string."
Test data / environmentTest passed against wrong fixture."Staging DB had stale schema; test reported false positive."
Build / configurationRight code, wrong configuration."Feature flag default flipped in prod; test environment was correct."

Per ISTQB Glossary (glossary.istqb.org (opens in new window)) entries "root cause" and "root cause analysis." The categories above appear in CTAL-TA syllabus §6 on defect management.

Orthogonal Defect Classification (ODC)

IBM Research's ODC framework (Chillarege et al. 1992) classifies each defect on eight orthogonal attributes so that the classification is reproducible across analysts and the resulting distribution is informative.

Opener attributes (recorded when defect is found)

AttributeValues
ActivityWhere defect was found: Design Review, Code Inspection, Unit Test, Function Test, System Test, Acceptance Test.
TriggerWhat made the defect surface: Design Conformance, Logic / Flow, Backward Compatibility, Concurrency, Boundary, Workload / Stress, Recovery, Test Coverage, Test Variation, Test Sequencing, Test Interaction.
ImpactHow the customer experiences it: Installability, Integrity / Security, Performance, Maintenance, Documentation, Usability, Reliability, Capability, Accessibility, Standards, Migration.

Closer attributes (recorded when defect is closed)

AttributeValues
TargetWhat was modified: Design, Code, Build / Package, Information Development (docs).
Defect TypeWhat kind of change: Function / Algorithm, Assignment / Initialization, Interface, Checking, Timing / Serialization, Build / Package / Merge, Documentation.
QualifierWhy the defect existed: Missing, Incorrect, Extraneous.
SourceWhere the defective code came from: In-house, Library / Reused, Outsourced, Ported.
AgeWhen introduced: New, Old, Rewritten, Refixed.

ODC's strength: the distribution of values per attribute indicates where in the process the defect process leaks. A high "Function / Algorithm - Missing - Requirements activity" cluster says the requirements review process is broken.

Per IBM Research's published ODC materials and Chillarege's canonical paper "Orthogonal Defect Classification - A Concept for In-Process Measurements" (IEEE Trans. Software Engineering 1992).

Same defect under three taxonomies - worked example

Defect: Checkout silently drops the discount when the user applies two stackable promo codes in reverse order. Reproducible.

TaxonomyClassification
IEEE 1044-2009Class: Defect. Type: Code (implementation). Severity: High (S2). Cause: Control flow (incorrect ordering in promo-stacking loop).
ISTQB CTAL-TAImplementation (correct design - stackable promos are supported - but the loop control-flow has the order-sensitivity bug).
ODCActivity: Function Test. Trigger: Test Sequencing. Impact: Capability (feature doesn't work). Target: Code. Defect Type: Function / Algorithm. Qualifier: Incorrect. Source: In-house. Age: New.

The three give different lenses: IEEE points at "control flow"; CTAL-TA points at "implementation"; ODC says "the function-test activity caught what code inspection missed, and the bug is a sequencing-triggered algorithm issue."

Process metrics enabled by classification

Once defects are classified, useful metrics emerge:

  • Defect leakage by lifecycle phase: count defects where IEEE Type = "Requirements" found in System Test or later. High = upstream review is weak.
  • Defect injection vs detection rate: ODC "Activity" vs "Trigger" cross-tab. Many "Function Test" activities catching "Boundary" triggers = unit-test boundary coverage is weak.
  • Root-cause distribution over releases: CTAL-TA root causes per release. Trending up on "Interface" = integration contracts need attention.

Anti-patterns

Anti-patternWhy it failsFix
Free-text "root cause" fieldNo aggregation possibleUse a controlled vocabulary - pick one of the three taxonomies + populate enums
Single-axis classification ("severity only")Loses root-cause signal entirelyAdd at least an IEEE 1044 Type field
Classifying after closure onlyDetection-time data lost (ODC Opener attributes)Classify at triage; refine at closure
ODC without trainingInter-analyst disagreement explodes; metrics noisyCalibrate via training set (10 defects classified by 2 analysts; reconcile)
Custom taxonomy invented per teamCross-team metrics impossibleUse IEEE 1044 or ODC as the floor
Classifying duplicates separatelyInflates counts; same root cause counted thriceResolve duplicates first; classify the canonical
Treating "Implementation" as the defaultHides design / requirements leakageRequire explicit classification; default = "unclassified" until reviewer assigns

Limitations

  • Classification is human work. ML classifiers exist but require calibrated training data; inter-rater agreement on ODC's eight axes is moderate.
  • Taxonomies are anchored in a snapshot of practice. IEEE 1044 dates from 2009 (updated periodically); ODC from 1992; ISTQB syllabus evolves. The categories are conventional, not universal.
  • Costs vs benefits. Full ODC adds ~5 - 10 minutes per defect at closure. Adopt the minimum (IEEE Type + ISTQB root cause) unless safety-critical / regulated need full ODC.
  • Doesn't replace 5-whys. Taxonomies categorise; root-cause analysis explains. Use both.

References

  • IEEE 1044-2009 "Standard Classification for Software Anomalies" - cite by stable ID. Primary taxonomy.
  • ISTQB Advanced Test Analyst (CTAL-TA) syllabus §6 - root-cause taxonomy. Glossary entries at glossary.istqb.org (opens in new window).
  • Orthogonal Defect Classification - Chillarege et al. (1992) "Orthogonal Defect Classification - A Concept for In-Process Measurements," IEEE Transactions on Software Engineering 18(11). Cite by stable DOI when available.
  • IBM Research ODC FAQ - chillarege.com/odc resources.

Tracker-vocabulary map

View source (opens in new window)

Tracker-vocabulary map

The canonical ISTQB / IEEE lifecycle maps to platform-specific terminology across Jira, Linear, and GitHub Issues.

ISTQB / IEEEJira (default workflow)Linear (default workflow)GitHub Issues (default + Projects)
NewTo DoBacklogOpen + label triage
OpenIn Triage (custom)TodoOpen + label confirmed
Assigned(Assignee set)In Progress + assigneeOpen + assignee
In ProgressIn ProgressIn ProgressOpen + linked PR draft
FixedIn ReviewIn ReviewOpen + linked PR ready
VerifiedDone (pre-release)DoneClosed (PR merged) - but often kept Open until verified
ClosedDoneDoneClosed
ReopenedReopenedReopened (custom)Reopened
DeferredWon't Do (deferred subtype)Cancelled (with reason)Closed not-planned
RejectedWon't Do / Cannot ReproduceCancelled with reasonClosed not-planned + label not-a-bug
DuplicateResolved as Duplicate (link to canonical)Cancelled with Duplicate of: linkClosed + comment Duplicate of #N

Per the platform docs (Atlassian "Issue workflow", Linear "Workflow states", GitHub "Issue templates"):

  • Jira workflow is fully configurable - the table reflects the default Software project template.
  • Linear workflow states are fixed enums (Backlog, Todo, In Progress, In Review, Done, Cancelled) but each can be subdivided per team.
  • GitHub Issues has only Open / Closed as states; richer lifecycle requires Projects (status column) + labels.

Related skills

bug-tracker-workflow

Repairs defect bookkeeping that reports the wrong numbers - a weekly summary showing zero in the top severity band, a 'new defects this week' figure counting items already fixed, duplicates that were never merged, or one script moving issues across several boards whose workflows disagree. Files, transitions, dedupes, and searches bugs through one tracker-agnostic workflow across Jira, Linear, GitHub Issues, and Azure DevOps: authenticate, dedupe-search before creating, classify severity and priority, transition lifecycle states, and wire idempotent CI-driven filing from test failures. Jira Cloud REST API v3 is worked in full in the body (ADF descriptions, runtime transition lookup, JQL triage and duplicate queries, dry-run bulk transitions). Use when tracker data, defect metrics, or cross-board transitions are wrong or need automating.

confirmation-testing-workflow

Procedure for proving that a claimed defect fix actually reached the build under test and actually works. Covers the merge-base ancestry check that proves the running build contains the fix commit rather than trusting a version label, the priority order for choosing which reproduction to re-run, and the VERIFIED / NOT FIXED / BLOCKED verdict table whose governing rule is that any ambiguous, flaky, or unreproducible result resolves to BLOCKED and is never guessed. Scoped to ISTQB confirmation testing (does this specific fix work?), not regression testing (did the fix break something else?), and not triage or severity assignment. Use when a developer has marked a defect Fixed and someone must decide whether it moves to Verified or back to Reopened.