1. Verification and Validation in Testing
Introduction
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-610 defines verification as:
2. “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.”
3. 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.
4. 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 Point 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
Checking to ensure that the
product is developed
correctly, as per user
requirements. If it does not
5. first stage of development
itself 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
6. 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
7. the built product 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
8. complete each other. They should be performed together to gain insights into the
overall quality of the product.