Enlarge Image
A perfect software product is built when every step is taken with the aim that 'a right product is developed in a right manner'. 'Software verification & validation' is design model, which helps the system designers and test engineers to confirm that a right product is built in the right way throughout the development process thus helping improve the quality of the final product.

The verification & validation model ensures that certain rules are followed at the time of the development of a software product and also that the product being developed fulfills the required specifications. This reduces the risk associated with any software project up to a considerable amount by helping in detection and correction of errors and mistakes, which might crop up during the development process.

What is Verification?

Verification is a process undertaken to ensure that the product is developed in the right way, and that the software conforms to its predefined specifications. As the product development goes through different stages, an analysis is done to ensure that all the required specifications are met.

Methods and techniques used in the verification and validation are designed carefully, the planning of which starts right from the beginning of the development process itself. The verification part of the model comes before validation, which incorporates software inspections, reviews, audits, walkthroughs, buddy checks, etc., in each phase of verification (every phase is a phase of the testing life cycle).

During the verification, the work product (the ready part of the software being developed and various documentations) is reviewed/examined personally by one or more persons, in order to find and point out the defects which may be present within it. This process helps in prevention of potential bugs and errors, which may cause failure of the project.

Few Terms Involved in Verification

Inspection involves a team of about 3-6 people, led by a leader, which formally reviews the documents and work product during various phases of the product development life-cycle. The work product and related documents are presented to the inspection team, the members of which interpret and analyze them. The bugs that are detected during the inspection are communicated to the next level in order to take care of them.

Walkthrough can be considered same as inspection without formal preparation (of any presentation or documentations). During the walkthrough meeting, the presenter/author introduces the material to all the participants in order to make them familiar with it. Walkthroughs can help in finding potential bugs, and also help in knowledge sharing or communication purpose.

Buddy Checks
This is the simplest type of review activity used to find out bugs in a work product during the verification. In buddy check, one person goes through the documents prepared by another person in order to find out if that person has made mistake(s) i.e., to find out bugs which the author couldn't find previously.

The activities involved in the process are: requirement specification, functional design, internal/system design and code verification (these phases can also be subdivided further). Each activity ensures that the product is developed in the right way and every requirement, every specification, design code etc., is properly verified.

What is Validation?

It is a process of finding out if the product being built is right? That is, the software product being developed, does what the user expects it to do. The software product should functionally do what it is supposed to, and should satisfy all the functional requirements set by the user. Validation is carried out during or at the end of the development process in order to determine whether the product satisfies the specified requirements.

Both the validation and verification processes go hand in hand, but visibly the process of validation starts after verification ends (after coding of the product ends). Each activity (such as requirement specification verification, functional design verification, etc.) has its corresponding validation activity (such as functional testing, code validation/testing, system/integration validation, etc.).

All types of testing methods are basically carried out during the validation process. Test plan, test suits, and test cases are developed, which are used during the various phases of validation. The phases involved are: Code Testing, Integration Testing, Functional Testing, and System/User Acceptance Testing.

Terms Used in Validation Process

Code Testing
Developers as well as testers do the code validation. Unit Code Validation or Unit Testing is a type of testing, which the developers conduct in order to find out any bug in the code unit/module developed by them. Code testing, apart from Unit Testing, can be done by testers or developers.

Integration Testing
Integration testing is carried out in order to find out if different (two or more) units/modules co-ordinate properly. This test helps in finding out if there is any defect in the interface between different modules.

Functional Testing
This type of testing is carried out in order to find if the system meets the functional requirements. In it, the system is validated for its functional behavior. Functional testing does not deal with internal coding of the project, instead, it checks if the system behaves as per the expectations.

User Acceptance Testing or System Validation
In this type of testing, the developed product is handed over to the user/paid testers, in order to test it in a real-time scenario. The product is validated to find out if it works according to the system specifications and satisfies all the user requirements. As the user/paid testers use the software, it may happen that bugs that are yet undiscovered, come up, which are communicated to the developers to be fixed. This helps in improvement of the quality of the final product.

Please Note: The testing phases given above also include many sub-phases, which have not been included here.