Verification and Validation in Testing
You are at the right place! This is not any vocabulary building free class but a very critical evaluation of a much sought-after debate around verification and validation in the software testing world. Why do we need to know the difference between Verification and Validation? Even though they sound just about the same, they carry different meanings depending on what you intend to do as a tester/developer in the software development and testing process. They both go hand in hand while solving a problem. However, there is a lot of confusion around the meaning of these two words concerning software testing. While there may be many definitions of these terms pertaining to various fields on the internet, here we will look at these terms in the testing space and analyze both of these terms in detail.
Verification vs. Validation
Software testing is a vast field. It involves various methods and processes proposed to solve different software testing issues. Verification and Validation are also a part of the same group in software testing. It is also known as a V-Model (Verification and Validation model) in the context of software development and testing.
What is Verification?
Software Engineering standard IEEE-STD-610defines verification as:
“A test of a system to prove that it meets all its specified requirements at a particular stage of its development.”
Let’s try and understand this definition. The application building process starts with the verification of a set of outlined specifications. So, verification ensures that all the specifications are taken care of before the development of the application starts.
In simple terms, Verification is all about testing whether your software product satisfies the conditions you specified in the initial stages of development. It includes all actions taken to build the desired software product, like going through the specification documents, ensuring it complies with the code logic, checking code reviews, doing narrow inspections, design analysis, walk-through, static testing, etc. Verification is more of an internal process accomplished when the product is still under development, unlike Validation, which is performed after the completion of the product. The verification process eliminates bugs at the beginning stages of development to ensure the reliability of the product. Verification analyses the complete design of the application in a predictive way. This analysis serves as the basis for the successful working of the Input/Output functions once the development is complete. It also analyses how accurate and qualified the product design is. Unit Testing and System testing are preferably performed to verify if the software code follows the unit specifications and if the modules connect as a complete system, respectively.
What is Validation?
Now let’s understand the definition of Validation through IEEE-STD-610:
“An activity that ensures that an end product stakeholder’s true needs and expectations are met.”
It means that the Validation process is performed once a part of the product or the entire application is built completely. Validation ensures that the necessary steps are taken to build the product as planned. Validation is generally carried out using regression testing, user testing, performance testing, etc. Validation-related issues occur when there is improper or lack of communication between the user and the problem solver (developer). This is the reason why developers must use validation to check if the product that is built covers the user needs, their acceptance of the product, and ensures the proper functioning of the whole system to fulfill these needs. Usually, various companies go through acceptance testing by demonstrating their software product to the end-user and get their feedback to check how well they accept the product.
Verification and validation are the two keywords used in software testing. Sometimes they are used interchangeably, but they are different from each other. Both the terms are a part of the V&V model (Verification and Validity) and they try to achieve two main tasks:
- Check the product from the developer’s point of view: It checks if the product complies with the requirement. It also shows what a developer thinks about the final product.
- Check the product from the consumer’s point of view: It checks if the product befits the customer’s use. It checks how a consumer looks at the final product.
The difference between verification and validation is mainly in terms of the role that the specifications play. The validation process is to verify if the software product captures the customer’s needs as intended or adheres to the pre-defined specifications, Verification ensures if the product is well-engineered to be able to responsibly meet the specifications or whether the product is built right or not. Validation scrutinizes the proposed system to check its ability to fulfill real-world needs.
The debate around verification vs. validation is ever prevailing. So, let’s have a closer look at the difference between Verification and Validation with the help of a comparison chart:
Key Points of Difference | VERIFICATION | VALIDATION |
---|---|---|
Question it answers | Was I able to build the right product? | Was I able to build what was needed and in the right way? |
Definition | It is the process of system/software product evaluation at different development phases to figure out if it matches the specifications | It is a process in which a system/software product is evaluated at the end of the development cycle to ensure if it is built to meet the requirements of the end-users or not |
Objective | To ensure the product is developed as per specified requirements and designs. If it deviates from the specifications, take corrective measures at the first stage of development itself | Checking to ensure that the product is developed correctly, as per user requirements. If it does not meet the requirements, then it should be re-built/tweaked until it meets the level of acceptance by the user |
Coding Requirement | Does not require code execution | Requires code execution |
Method Type | It is a static method in which all first stage documentation and file regarding the product is verified, and no/ minimum coding is involved in this process | It is a dynamic method in which the real product is directly tested at its different build phases. It is also dynamic because it involves the execution of code |
Activities | The verification process includes activities like planning, walk-through, Inspection, reviews of product development and specifications, desk-evaluation, etc. | Validation involves activities like Black Box Testing, White Box Testing, Non-Functional Testing, and many more to ensure an error-free product is delivered to the Customer and that the product matches the specifications |
Degree of Activity | Involves Low level activities | Involves High Level activities |
Targets | Software Application, specifications, Design, Architecture | Actual Built Product |
Performer | Verification is carried out by the software testers | Validation requires both Software Developers who execute the and software testers who assist the developers wherever required |
Execution Order | Verification/Quality assurance is performed before validation at the initial phase of development | Validation/Quality Control follows after the verification towards the end of the software development |
Orientation | Verification is process oriented | Validation is product oriented |
Cost Involved | Low Cost involved | High Cost involved |
Error Detection stage | It can detect errors right at the beginning stage of development | It detects errors only after the product is built |
Characteristics | Early stage error discovery, accurate and speedy verification, etc. | Robustness, precision, inclusiveness, etc. |
Human Intervention | It is mainly performed manually | It involves coding and program execution which actively needs the computer system intervention, but at the same time, the program is written by a human being. Hence, it involves both humans and machines |
Internal/ Internal | Verification is an internal process of development and production | Validation is an external process that requires stakeholder acceptance of the built product |
When To Use Verification and Validation?
The difference between Verification and Validation might have given us an overview of how different they are when it comes to performance. But it is also worth noting that both the processes need to be performed together to get the maximum clarity on how well the application conforms to the specifications laid down during the initial development stages. By functioning together, it ensures that it has achieved what was intended and makes an essential pair of components for quality management.
It is possible that your software product clears the verification process but fails to pass the validation phase, which also means that the product might have been able to meet all the specifications and requirements planned at the verification stage. However, the specifications were themselves not strong enough to meet the end user’s requirements. Hence, both of them are essential so that they can provide a 360-degree quality overview.
Conclusion
The words Verification and Validation are often used interchangeably, but both the terms are different from each other in many ways. To summarize Verification vs. Validation debate and make it simpler. Note that the former mainly involves verifying and reviewing activities that will lead to building the intended software whereas; the latter involves performing actual testing activities responsible for developing the right product. Even though there is a difference between verification and validation, they complete each other. They should be performed together to gain insights into the overall quality of the product.
Published on Java Code Geeks with permission by Priyanka Charak, partner at our JCG program. See the original article here: Verification and Validation in Testing Opinions expressed by Java Code Geeks contributors are their own. |