Q4 of 38 · Manual & exploratory

What is the difference between a defect, a bug, an error, and a failure?

Manual & exploratoryJuniorfundamentalsterminologydefects

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.

// WHAT INTERVIEWERS LOOK FOR

Knowing the chain (error → defect → failure) and being able to give a concrete example. Bonus for naming ISTQB/IEEE as the formal source.

// COMMON PITFALL

Treating all four as exact synonyms — interviewers worry you can't reason precisely about quality metrics or post-incident reviews.