Verification vs Validation
If I ask you to verify something on a project for me. What would your instincts be?
And if I asked you to verify that same item. Would you think I was talking about the same thing, or asking a different request?
Don’t worry if you’re a little confused at the moment. These terms often get misunderstood when it comes to software testing but they mean two separate and very different procedures that serve
Let’s take the example of a guide book which is being developed for a local nature reserve.
The guidebook lists many walks that someone can take throughout the reserve and information is given on the various facts and sites they would see while on their journey. When a user chooses one of these walks to take, they are guided around by the means of pictures of landmarks and general directions that they should be taking.
For example. Head west until you reach the large oak tree then head north etc.
What would the user need to be doing here to test this?
Let’s have a look at another example of a cookbook application for a smartphone.
The cookbook has several tasty recipes with delicious-looking pictures and desirable descriptions. Once the application has been downloaded onto the user smartphone and a recipe has been chosen. The app provides the user with a list of required ingredients and necessary steps to take that will recreate the dish as described.
What procedure do you think the user would need to employ here?
Verification
Let us start by looking at verification.
The process of evaluating a system or component to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase.
IEEE-STD-610
Essentially what this means is that making sure that the product being developed is the same product that was described in the initial requirements and specifications stage.
Going back to our two examples above, the first one would benefit the most from the process of verification.
- Are the directions given correct?
- Are the landmarks visible?
- Are there any missing steps in the guidebook?
Verification can identify any of these potential issues during the development phase of the application and many others that affect the design of the application as it moves closer to be being finished and released to the end-user.
Verification processes can answer the question “Is the software that is being developed right?”.
Verification is a static method of software testing in which documentation is reviewed and tested before the main testing activities.
Validation
First of all, let us look at the definition.
The process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specified requirements.
IEEE-STD-610
This process differs from the verification process in that the actual software is being tested once it has been developed.
This process aims to compare the final piece of developed software with the needs of the user to answer the question, “Is what is being built, right?.
This would be best suited for the second example above. If the user followed the recipes instructions but they failed to lead him to his tasty goal. The app wouldn’t be serving its purpose.
Conclusion
We have seen the differences in these two processes of software testing and discovered that verification is a static method of testing in which the user requirements are compared with the various stages of the software development process to make sure what is being developed is described in the documentation.
Whereas validation is comparing the end product against the user needs and makes sure that the right solution for them will come out the other end.
It is completely possible for a piece of software to pass verification processes but fails when the final product is validated due to it not meeting the user’s needs. Wasting weeks of development time because the user requirements were not correctly identified.