Verification and validation are two terms often confused with one another. While the difference between the two may seem minor, the two fulfill very separate purposes. Let’s have a look at them one by one and see where the differences and similarities lie.
Verification
As per Software testing standards IEEE-STD-610, verification is defined as “A test of a system to prove that it meets all of its specified requirements at a particular stage of its development.” In other words, verification is a process of checking the application that is being developed to see if it’s on par with the outlined specifications using relevant software testing tools. This process involves activities like walkthroughs, code reviews, testing, and inspections as per requirement.
Example
Basic functions are verified and tested during the development of a spreadsheet to check if they meet the predefined requirements. Accuracy of these basic mathematical functions is imperative to get the results of complex code and formulas right. The value of verification testing can be assessed once the development is complete, and the application functions as expected.
Verification testing saves a great deal of time and costs as it deals with the bugs at their initial stages rather than waiting for the final stages to test and search hundreds of code lines to find the same issue.
Validation
According to IEEE-STD-610, validation is defined as “An activity that ensures that an end product stakeholder’s true needs and expectations are met.” Unlike verification, the validation part comes after the given module is completed or even after completing the entire application. It focuses on ensuring that the stakeholders get the product they wanted. Validation solely focuses on the result and validates if it matches the expectations using software testing tools.
Example
A driver takes directions for a beach. His/her expected set of criteria may include that the beach should have sand, waves and ocean should be visible, etc. In this case, validation tests ensure that your current location meets the expected criteria. Similarly, if we take our previous example of spreadsheet development, validation will ensure that the finished products meet the customer’s requirements.
This is high-level testing, typically consisting of performance testing, user testing, regression testing, etc.
Summary
Putting it in simple words, verification is about “Am I building the product right?” whereas validation is about “Am I building the right product?”
So, what if you’re asked to verification on a certain project at the cost of holding off on the validation? Start with pulling the original project specifications and then proceed with code inspection, walkthrough, or a code review to ensure that the development is proceeding as planned. Then, once you’re done with application development, validate that the end product is as the customer requested.
Let’s look at the side-by-side quick comparison between the two.
| Verification | Validation | |
| Involves | Little or no code execution | Code execution |
| Activities | Walkthroughs, reviews, desk-checking, inspections etc. | White box testing, black box testing, non-functional testing, etc. |
| Type | Low-level | High-level |
| Method | A static method of checking files and documents | A dynamic process of testing the real product |
| Target | High-level and database design, complete design, specifications, etc. | Actual product |