Software Testing Process
Definition
Software Testing is the process of executing a program with the intent of finding defects/errors and verifying that the software meets its specified requirements — the goal is not to prove the software is correct, but to find as many defects as possible.
Testing vs. Debugging
- Testing — the process of finding defects (identifying that something is wrong)
- Debugging — the process of locating and fixing the root cause of a found defect
Key Terminology
- Error/Mistake — a human action that produces an incorrect result (in requirements, design, or code)
- Fault/Defect/Bug — a flaw in the software (incorrect step, process, or data) caused by an error
- Failure — the observable, incorrect behavior of the software when a fault is executed
Error (human mistake) → Fault/Defect (in code) → Failure (observed incorrect behavior)
Testing Levels (Overview — each detailed in later topics)
- Unit Testing — testing individual modules/functions in isolation
- Integration Testing — testing interactions between combined modules
- System Testing — testing the complete, integrated system
- Acceptance Testing (Alpha/Beta) — testing by/for the customer before final release
The General Testing Process
- Test Planning — define scope, strategy, resources, schedule
- Test Case Design — design test cases (Boundary Value, Equivalence Class, etc.)
- Test Execution — run test cases against the software
- Defect Reporting — log and report any discovered defects
- Regression Testing — re-test after fixes to ensure no new issues introduced
Verification vs. Validation
| Verification | Validation |
|---|---|
| "Are we building the product right?" | "Are we building the right product?" |
| Checks conformance to design/spec | Checks it meets actual user needs |
| Static techniques (reviews, walkthroughs) | Dynamic technique (executing the software) |
Why Testing Is Critical
- Testing is estimated to consume 30-50% of total development cost
- Undetected defects become exponentially more expensive if they reach production (see cost escalation in Module 2)
Exam tip: Know the Error → Fault → Failure chain and the Verification vs. Validation distinction — both are classic opening theory questions for the Testing module.