5 exercises on the standard vocabulary for categorising bugs by type, severity, and priority.
Key classification terms
blocker / critical / major / minor / trivial → severity levels
severity (technical impact) vs priority (business urgency) — not the same
regression bug → previously working code broken by a change
latent defect → bug present but not yet triggered
heisenbug → disappears when observed; off-by-one error → boundary mistake
0 / 5 completed
1 / 5
A team lead writes in a bug report: "This is a ___ — the app crashes immediately on launch for all users. Everything else is blocked until this is fixed."
Which classification term is correct?
"Blocker" — the classification for issues that stop all work:
A blocker (also called a blocking issue) is a bug or task that prevents the team from making any further progress — it "blocks" the sprint, the release, or another task. All work halts until a blocker is resolved.
Severity classifications (highest to lowest):
Blocker / P0 / SEV-1 → stops everything; system is down or feature is completely broken
Critical / P1 → severe impact, major functionality broken, no workaround
Major / P2 → significant feature broken, workaround exists but is difficult
Minor / P3 → small issue, workaround easy or cosmetic impact only
Trivial / P4 → cosmetic, typo, or very low impact
Severity vs Priority: Severity = how badly the bug affects the software (technical impact). Priority = how urgently the team should fix it (business decision). A bug can be high severity but low priority (e.g., a crash in an almost-unused admin screen).
2 / 5
A QA engineer files a ticket: "After the v2.3.0 release, the checkout flow that was working perfectly in v2.2.9 is now broken. This is a ___."
Which term is correct?
"Regression bug" — a bug introduced by a change that broke previously working functionality:
A regression is when code that was working correctly stops working after a change (a new feature, refactor, dependency update, or configuration change). The key signal is "it worked before." Regression bugs are particularly serious because they erode trust in the release process.
Bug type vocabulary:
regression bug / regression → previously working code is broken by a new change
latent defect → a bug that exists in the code but hasn't been triggered yet — it may have been there for months
heisenbug → a bug that disappears or changes behaviour when you try to observe or debug it (named after Heisenberg's uncertainty principle)
off-by-one error (OBOE) → a logic error where a loop iterates one too many or one too few times; common in array indexing
Regression prevention: Teams prevent regressions with regression test suites — automated tests that verify previously working features still work after every change.
3 / 5
In a sprint planning meeting, a developer says: "This bug has very high ___ — it causes data corruption — but low ___ because only 0.1% of users are affected by this edge case."
Which pair of terms fills both blanks correctly?
Severity vs Priority — a critical distinction in bug classification:
This is one of the most important distinctions in QA vocabulary:
Severity = the technical impact of the bug on the software itself. Data corruption, security vulnerabilities, and crashes are high severity — they cause serious technical harm.
Priority = the business urgency of fixing the bug. A high-severity bug affecting 0.1% of users may be lower priority than a low-severity bug (a confusing label) affecting 90% of users and causing support tickets.
Example matrix:
High severity, high priority → payment processing is down; fix immediately
High severity, low priority → data corruption in a deprecated feature no one uses
Low severity, high priority → a typo in a marketing headline that has gone viral
Low severity, low priority → a cosmetic misalignment in an admin panel
Key collocations: "assess severity", "assign priority", "triage the bug" (both together), "reprioritise the backlog".
4 / 5
A backend developer says: "I think this is a ___ — it only appears in the debugger and disappears as soon as I add a console.log to investigate it. I can never catch it in the act."
Which bug type term is correct?
"Heisenbug" — a bug that changes behaviour when observed:
A heisenbug is a named bug category in software engineering — a bug that disappears or changes its behaviour when you attempt to observe, debug, or reproduce it. The name comes from Werner Heisenberg's uncertainty principle in quantum physics (observing a particle changes it).
Common heisenbug causes:
Race conditions → the debugger slows execution, changing timing and making the race disappear
Optimisation differences → debug builds have less optimisation, so the bug only appears in release builds
Timing-sensitive code → the extra overhead of debug tools changes the timing enough to mask the bug
Other named bug types:
Bohrbug → the opposite of a heisenbug: solid, reproducible, well-defined (named after Niels Bohr's solid atomic model)
Mandelbug → a bug so complex its cause is essentially chaotic/fractal
Schroedinbug → code that works until someone reads it and realises it shouldn't
5 / 5
A code reviewer comments: "There's an ___ here — your loop goes from 0 to array.length inclusive, so it tries to access array[10] when the last valid index is 9."
Which term is correct?
"Off-by-one error (OBOE)" — a classic and named bug category:
An off-by-one error occurs when a loop, index, or boundary condition is off by exactly one. It is one of the most common bugs in programming and has its own acronym (OBOE).
Classic off-by-one scenarios:
Array indexing → accessing arr[arr.length] instead of arr[arr.length - 1]
Loop bounds → for (i = 0; i <= n; i++) instead of i < n
String slicing → getting the wrong substring because the end index is exclusive in some languages and inclusive in others
Pagination → page 1 starts at offset 0 or offset 1? The classic off-by-one confusion
How to say it:
"There's an off-by-one error in your loop"
"This looks like an OBOE — your boundary condition is wrong by one"
"You have a fencepost error" (alternative name — from the fencepost analogy: 10 fences need 11 posts)