Before we explore the difference between verification and validation testing, let's first address the fundamental question: "What exactly is Verification and Validation in the realm of software testing?"
Here's a short overview of Verification and Validation in Software Testing:
Verification focuses on 'find defects as early as possible' and 'Are we doing the job right'?
On the other hand, Validation is a disciplined approach to evaluate whether the final, developed application fulfills its intended purpose as it focuses on 'Are we doing the right job '?
The V' Model is an extension of waterfall model. The left arm of V model is a conventional waterfall model of the development and right arm represents corresponding validation or testing levels. Validation is conducted at different levels namely unit, integration, system and acceptance testing. Each phase of development provides input to the respective test plan used in Validation. For example, Acceptance test plan can be made ready once user requirements are captured and Each Verification activity such as Requirement Specification Verification, Functional design Verification etc has its corresponding Validation activity such as Functional Validation or Testing, Unit Testing, System testing etc.
What is verification testing?
The software application needs to confirm to the predefined requirement specifications. As the software development goes through different phases, it is necessary to ensure that deliverable of each phase is as per the specification. Verification makes sure that the Software Application is getting developed in the correct way with respect to the requirements - Are we doing the job right?
During Verification, different team members carefully read and review the things created during the software development process, like code and other work-related stuff. They do this to find any mistakes or issues. Walk-through and review are two important methods of conducting a verification activity. It is also known as Static testing as software application is not actually used or executed but the documents or code is checked statically to find the defects.
Here is an example of when to use verification testing
Verification tests must be run at every stage of development before any feature is implemented.
Consider a button labeled “Add to Cart”. Before creating this button, verification tests would review all relevant requirements previously decided in the ideation and brainstorming phases.
Let’s say the documentation says the button must be black with the lettering in white. It should be no larger than 10mm X 10mm, and it should constantly be visible in the top right corner of every website product page. Another button with the exact text, color, and dimensions should be placed under every product on the page.
Before creating the button, design and requirements documents must be reviewed, and all necessary specifications must be listed before work begins.
Before working on every feature or element on the page, this must be done so the devs do not miss any guidelines.
What is validation testing?
The software application should functionally do what it is supposed to and it should satisfy all the requirements set by the customer and end user. Validation is done during or at the end of the development process to determine whether the application satisfies specified requirements. Validation is done by executing the intended functionality on the developed application.
Validation and Verification processes go hand in hand, but visibly validation process starts after verification process ends (after coding of the product ends).
Validation activities are represented on the right arm of V Model. Unit testing, Integration testing, System testing and Acceptance testing represent levels of testing that are used for validation.
Validation is also called Dynamic Testing as the application is actually used to test and find the defects.
An example of when to use Validation Testing
Validation tests must be run after every feature or step in the development process is completed.
For example, unit test, a form of validation tests, are run after every unit of code has been created.
Integration tests are run after multiple modules have been completed individually and are ready to be combined.
An essential element of validation testing is the running of cross browser testing. QAs must check that every function, feature, and design element appears and functions as expected on different browser-device-os combinations. For example, does the “Add to Cart” button work perfectly on Google Chrome running Samsung Galaxy A23 and Safari running on iPhone 13?
The process of evaluating documents / work-product of a development phase.
The process of evaluating Software Application during or at the end of the development process.
Ensures that deliverables meet their specified requirements.
Demonstrates that the product fulfills its intended use when placed in its intended environment.
Are we building the product right?
Are we building the right product?
Plans, Requirement specifications, Design Specifications, Code, Test Cases
The actual product / software application
Levels of Testing (Unit, Integration, System, UAT)
In summary, Verification and Validation complement each other! Verification ensures the software is developed correctly, while validation confirms it works as intended. Together, they form a crucial part of software development, guaranteeing quality and functionality. The V-Model provides a structured approach to incorporate these processes seamlessly. Both verification and validation are vital for delivering high-quality software that meets user expectations.
I hope I helped you learn something new today.