Verification and Validation are quality assurance activities used to evaluate software throughout its development. Together, they help ensure that the software follows defined requirements and meets its intended purpose.
- Verification evaluates development artifacts against specified requirements.
- Validation evaluates the working software against user needs and expected behavior.
- Both help identify quality issues at different stages of development.

Verification
Verification is the process of evaluating work products to ensure they meet specified requirements. It checks whether the software is being developed correctly according to design and standards.
- Focuses on process and documentation
- Done without executing the code (static testing)
- Includes reviews, inspections, and walkthroughs
Example: Reviewing requirement and design documents of a banking app to ensure all features are correctly planned before development.
Validation
Validation is the process of evaluating the final product to ensure it meets user needs and expectations. It checks whether the right product has been built.
- Focuses on final product behavior
- Done by executing the code (dynamic testing)
- Includes system testing, user acceptance testing
Example: Testing a banking app to verify if users can successfully log in, transfer money, and view transactions.
Verification vs Validation
| Feature | Verification | Validation |
|---|---|---|
| Definition | Evaluates work products to determine whether specified requirements have been fulfilled | Evaluates software to determine whether it satisfies user needs and intended use |
| Key Question | Are we building the product right? | Are we building the right product? |
| Focus | Requirements, design, code, documentation, and other work products | Software behavior, user needs, and intended use |
| Execution | May or may not require execution of software, depending on the verification activity | Typically involves executing the software |
| Common Activities | Reviews, inspections, walkthroughs, and analysis | Functional testing, system testing, and acceptance testing |
| Objective | Identify inconsistencies and defects by checking conformance to specified requirements | Confirm that the software behaves as expected in its intended environment |
| Participants | Developers, reviewers, QA engineers, and other technical stakeholders | Testers, QA teams, users, and relevant stakeholders |
| Timing | Performed throughout the development lifecycle | Performed whenever relevant executable components or systems are available |
| Example | Reviewing banking application requirements and design | Executing the banking application to verify that money transfer works as expected |