Q4 of 38 · Manual & exploratory
What is the difference between a defect, a bug, an error, and a failure?
Short answer
Short answer: An error is a human mistake. A defect (or bug) is the result of that mistake living in the code. A failure is what users see when the defect is exercised. Same problem at three observable points.
Detail
Trace the chain. A developer types > instead of >= — that's an error, a human action. The error lands in the code as a faulty conditional, which is the defect or bug (most teams treat the two as synonyms; some reserve "bug" for code-level issues and "defect" for any deviation from spec). When a user enters a boundary value and the system misbehaves, that externally visible deviation is the failure.
The distinction matters for two reasons. First, metrics: counting failures (escaped to production) versus defects (caught before release) tells you very different things about your process. Second, language with stakeholders: "the user reported a failure" is a fact; "there's a bug" is a hypothesis until you've reproduced it. Mixing them up confuses incident reviews.
ISTQB and IEEE 610 formalise these terms. Most working teams treat error/defect/bug as synonyms day-to-day and only get strict in incident reports or audits. Knowing the canonical chain shows you can reason precisely when the situation calls for it.