Before starting with the differences, let’s get to the basics and understand what verification and validation mean in software testing. Verification is a relatively objective procedure of merely checking whether documents, codes, and designs are correct. In software testing, verification checks if the system is free from errors and well-engineered. On the other hand, validation is a more subjective process that checks if the software stands right to the customers’ expectations. One of the standard validation methods is dynamic testing.
Though most people use one word for another, they mean very much different. Let’s find out the major differences between validation and verification.
1. What it means
In verification, you evaluate the software during its development phase to check if their meet the specific requirements. It is an objective process, and the software is measured against a set checklist. Validation, which is a relatively subjective process, checks the software after the development process is complete. In this process, it is reviewed if the software meets requirements of the customers and their expectations as well. It makes validation a more extended and complicated process than verification.
Verification is a simple process, and those who check don’t require any coding to do so. On the other hand, validation requires executing code to test the software. In fact, one cannot complete validation without implementing a code.
3. Type of checking
Verification is a manual process and requires humans to check all the documents and files of the software. Validation is precisely the opposite and is entirely a computer-based process. It makes verification a static method and validation a dynamic one.
4. Common testing types
Come types of verification methods include desk-checking, walkthroughs, and reviews, while most used validation methods include gray box testing, black box functional testing, and white box structural testing.
In the verification process of desk checking, the tester acts like a computer and follows an algorithm that adheres to the logic that is applied for developing the software. Black box functional validation testing is a type of software testing technique using which you can check software without touching the internal code structure of the software, inner paths, and implementation details. The process is only concerned with what is the input and output of the software and isn’t concerned about its internal knowledge.
5. Basic purpose
The end goal of verification is straightforward. All the process checks are if the software meets its mentioned specification. Validation, on the other hand, is quite complex and checks if the software meets the user’s expectations and requirements.
6. Checking for errors
Both the verification and validation processes, depend on each other. The mistakes that can be found by verification cannot be found by validation and therefore while checking a software both the processes must be used. It gives the tester an all-round image of the reality and what it will take to reach the set goal.
7. What does the process help to achieve
Both processes are precise and have a fixed end goal. The aim of the verification process is that is everything is in place from software architecture and requirements specification to complete design, database design, and high level.
On the other hand, validation targets at the actual product and checks if that all modules are integrated and the software works effectively and just as wanted.
8. Who carries out the process?
The QA team is given the responsibility to conduct the verification process. They have to tally the software with the specifications that are mentioned in the SRS document. Since validation requires coding, a testing team carries out the process.
9. When does the process take place?
Verification is done during the development of the software while validation takes places after the software is developed. It means that verification takes place before validation and only if all requirements in the former process are meant, the latter process can be conducted.
10. Cost of errors
The process of verification is a low-level exercise, and the cost of repairing errors that are found is less. On the other hand, validation is a high-level exercise, and the cost of fixing errors identified during the process is very high.
Because validation is a high-level exercise, the results are more robust and valued as it ensures high quality of the product.
Let’s understand verification and validation using a real-life example so that you have a better idea of what the two terms mean and their functions.
You go to a restaurant and order chicken wings. How will you know that what you ordered is the way it should be? You typically ask yourself three questions:
1. Does it smell like chicken wings?
2. Is it appropriately fried so that the chicken is cooked?
3. Does it smell the way a typical chicken wing does?
What you did right now was asking yourself questions, which means you were verifying it. If you are satisfied, you will go ahead and eat it, and if you aren’t happy, you will inform the waiter about it and ask him to bring you a fresh batch.
The tasting part is the validation process. If you like the taste, you will consider coming to the place and also give good feedback and tip to the waiter. In case you don’t like the taste, you won’t come back to the process. Since validation is a subjective process, you might not like it, but the person with whom you’ve gone to eat might do so and the vice versa.
In conclusion, even though the two procedures are very different, they depend on one another. There are two takeaway points from this article:
1. Verification need not be carried out by a programmer, but validation must be carried out by one because it involves coding.
2. The process of verification might or might not include the product, but validation needs the product to carry on the procedure. Most of the times, verification is conducted on documents that present the final form of the software.