1. Verification
Definition:
The process of checking whether the software is being built correctly as per specifications, without actually running the code.
It’s about reviewing documents, design, and plans to ensure correctness before coding or execution.
Purpose:
-
To make sure the product is designed according to requirements.
-
To catch mistakes early in the development cycle.
Activities include:
-
Requirement Reviews
-
Design Reviews
-
Code Reviews / Walkthroughs
-
Static Analysis
Example:
If the requirement says:
“The system should accept a password of at least 8 characters”
Verification would mean:
-
Reviewing the design document to see if password length is mentioned as ≥ 8.
-
Checking the code logic without running it to confirm it enforces this rule.
2. Validation
Definition:
The process of checking whether the built software actually meets the user’s needs and expectations by running and testing the code.
Purpose:
-
To ensure the product works as intended in the real environment.
-
To confirm that the end product solves the problem for the user.
Activities include:
-
Functional Testing
-
System Testing
-
User Acceptance Testing (UAT)
-
Regression Testing
Example:
Using the same password requirement:
-
Actually entering a 7-character password and checking if the system rejects it.
-
Entering an 8-character password and confirming it is accepted.
Quick Comparison Table
| Aspect | Verification |
Validation |
|---|---|---|
| Purpose | Are we building the product right? | Are we building the right product? |
| Type | Static process (no code execution) | Dynamic process (code execution) |
| Focus | Specifications, design, and documentation | Actual product behavior |
| Performed by | Developers, QA Analysts | QA Testers, End Users |
| Examples | Reviews, walkthroughs, inspections | Functional testing, UAT |