A bug is an informal word for a defect; a defect is the formal term for any flaw where the software does not meet its requirement. An issue is the umbrella word that covers defects, feature requests, tasks and questions. In practice they describe the same thing at different levels of ceremony — and mixing them inside one team is what creates confusion. The differences matter less in conversation and more in three places: what you measure, what you promise in a contract, and what you ask a reporter to fill in. This page gives you a defensible split you can put in a glossary and stop arguing about.
The Short Answer
| Term | Scope | Where you see it |
|---|---|---|
| Bug | Informal, everyday word for a defect. Usually something that used to work, or clearly should work | Standups, chat, "there's a bug on checkout" |
| Defect | Formal term: any deviation between actual and expected behaviour, whether or not it ever worked | QA reports, audits, contracts, metrics |
| Issue | Umbrella term: anything that needs a decision — defect, feature request, task, question | Trackers, ticket IDs, release notes |
| Error | A human action that produces an incorrect result | Root-cause analysis, post-mortems |
| Fault | The incorrect instruction or data inside the software that causes the failure | Engineering discussion, standards |
| Failure | The observable event: the system does not do what it must | Incident reviews, monitoring |
The Chain: Error, Fault, Failure
The classic model, still used in standards and useful in post-mortems:Why "Issue" Is the Better Word for Your Tracker
A tracker holds more than defects. Rename your object to issue — or keep "bug" as the everyday word — and you get one place for:- defects (behaviour is wrong),
- feature requests (behaviour is missing on purpose),
- tasks (work with no behaviour attached),
- questions (no code change expected).
Where the Distinction Earns Money
Three situations make the vocabulary worth getting right: 1. Contracts and SLAs. A support agreement that promises "critical defects fixed in 24 hours" needs a written definition of defect and critical. Without one, every discussion is a negotiation. "Bug" in a contract is usually too vague to enforce. 2. Metrics. Defect density, escape rate and reopen rate only mean something if the population is stable. If half your "bugs" are feature requests, none of the numbers hold. 3. Audit and compliance. Regulated products usually need a traceable defect record with severity, verification and closure evidence. That is a formal artefact — the word defect signals the formality.Bug vs Feature Request
The dividing line that causes the most arguments:| It is a defect if... | It is a feature request if... |
|---|---|
| The behaviour contradicts a written requirement or the documented design | No requirement exists, and the behaviour was never promised |
| Users cannot complete a task they could complete before | Users can complete the task, just not the way they would prefer |
| The system state becomes inconsistent or data is lost | The system is consistent; the output is simply not what someone wanted |
| It affects accessibility, security or data integrity | It is a preference about layout, wording or flow |
Bug vs Error (the Message Kind)
An error message on screen is not a defect by itself. A validation message that says "email format is invalid" is correct behaviour. The defect is the case where the message is wrong, missing, or shown when it should not be — and the error in "Console error" refers to an exception logged by the runtime, which may or may not be a defect (many logged errors are expected and handled). This is exactly why a report should attach the Console output rather than a screenshot of it: whoever triages needs the text, the stack and the frequency, not a picture of it.Pick One Vocabulary and Write It Down
The recommendation most teams can live with:- Issue is the object in your tracker. Every type lives there.
- Defect is the issue type for wrong behaviour, and the word you use in metrics, contracts and reports.
- Bug stays as the spoken word. Ban it from dashboards.
- Error / fault / failure are used only in root-cause analysis, in that order.
What This Means for the Report Itself
Whatever you call it, the fields a triager needs are identical:- the exact page or endpoint,
- what was done, and what was expected versus what happened,
- the evidence: screenshot, Console errors, failed requests,
- the environment: browser, OS, viewport, timestamp.