Definition
Verification
“Are we building the product right?”
Evaluation of work-products to determine compliance with specified requirements.
- Reference: Specification.
- Goal: Correctness, consistency, completeness.
- Methods: Static analysis, unit testing, code review.
Validation
“Are we building the right product?”
Evaluation of the software to determine if it satisfies user needs and business goals.
- Reference: User Needs.
- Goal: Utility, fitness for purpose, user satisfaction.
- Methods: Acceptance testing, usability testing, A/B testing, reviews, prototyping.
Classification
Ambiguity
The distinction depends on the existence of explicit specifications.
Example: “Slow loading time” is a Verification failure if a performance spec exists (e.g. “Response < 500ms”), but a Validation failure if the spec was silent but users are unsatisfied.
Verification Failures
Failures to meet the specification or logical correctness.
- “A button does nothing when pressed.”
- Functional defect. The implementation contradicts the implied behaviour.
- “The ‘Upload File’ form provides no file selector.”
- Incompleteness. The feature fails to meet the functional requirement of “uploading”.
- “Stored files are deleted when the server restarts each week.”
- Defect. Persistence is a standard requirement; data loss is a violation of system invariants.
- “Telephone numbers are not validated correctly.”
- Correctness failure. The implemented logic does not match the formatting rules.
- “The website takes a very long time to load.”
- Non-functional failure. Violation of performance specifications (e.g. latency < 2s).
Validation Failures
Failures to meet user needs or constraints, despite potentially “correct” code.
- “The website only supports the latest versions of Firefox and Chrome.”
- Environmental constraint. Fails users on other browsers/hardware.
- “There is no app available for Android users.”
- Market fit. The product strategy ignores a segment of the user base.
- “The feature to change your username is very difficult to find.”
- Usability failure. The feature exists (verified) but blocks the user’s workflow.
- “The website is available only in English.”
- Accessibility/Demographic failure. Fails to meet the needs of non-English speakers.