Every software team uses the words “error,” “defect,” and “bug,” often interchangeably. But there’s real power in knowing exactly what each term means—and when it applies
1. Mistakes by Phase
| Phase | What You Find | What It’s Called |
|---|---|---|
| Requirements & Design | A mistake in the design or plan that doesn’t meet what stakeholders want. | Defect |
| Coding | A coding or logic mistake in source code | Error |
| Testing & Execution | An observable malfunction occurring during software execution or testing. | Bug 🐞 |
1.1 Defect
A defect is any flaw or mismatch in your requirements
or design artifacts. It exists before any code runs.
Example: You document “Users must enter a 4-digit PIN,” but
stakeholders actually needed 6 digits. That spec mismatch is a defect.
1.2 Error
An error is a mistake made while coding—a typo, wrong
operator, missing null check, etc.
Example: In Java you write if (userInput = null) instead of if
(userInput == null). That is a compile-time error by the developer.
1.3 Bug
A bug is the visible failure you see when running or
testing the application—what your testers log.
Example: Clicking “Submit” on a form does nothing. The UI
doesn’t respond. That runtime symptom is a bug.
2. A Real-World Example: Online Checkout
Imagine you’re building an e-commerce checkout:
- Requirements
Phase (Defect)
- You
write: “Order quantity must be ≤ 0.”
- Stakeholder
actually wants “Order quantity must be > 0.”
- Result: a defect in your requirements document.
- Design
Phase (Defect)
- Your
UML diagram routes payment data through the reporting class instead of
the payment gateway class.
- That
misplacement is a design defect.
- Coding
Phase (Error)
- In
your PaymentProcessor class you type:
- if (amount = 0) { // assignment instead of comparison
- throw new InvalidAmountException();
- }
- Java
will flag a compile error, but if you fixed the syntax and logic still
flips 0 vs. non-zero, that’s an error you introduced.
- Testing
Phase (Bug)
- When
QA runs the “Buy Now” test, the payment screen never appears.
- They
log: “Checkout button does nothing.” That’s the bug.
3. Why “All Bugs Are Defects, But Not All Defects Are Bugs”
- Defects
live in artifacts (requirements, design, code).
- A bug
is a defect that actually manifests as a failure at runtime or
during a test case.
- You
can have plenty of defects in a spec or design that never surface as bugs
(e.g., a typo in a rarely used help page).
In set-theory terms:
Defects ⊇ Bugs
Every bug traces back to a defect, but many defects never
become bugs.
4. Next Steps & Best Practices
- Shift-Left
Testing: Catch defects earlier via peer reviews and automated
spec checks.
- Root
Cause Analysis: Link every bug back to its originating defect (and human
error).
- Metrics:
Track defect density and bug escape rate to measure quality.
- Tools:
Use JIRA or Azure DevOps to tag issues as “Defect (Design)” vs. “Bug
(Test).”
Comments
Post a Comment