Software Testing: Software Verification & Validation

Introduction

Software Verification and Validation is a model that helps developers and testers to confirm if the product is built in a correct way throughout the development process and helps improve the quality of the software product.

The Verification and Validation model makes sure that proper rules have been followed at the time of the development of a software product and it fulfills the required specifications of the customer. This detecting and fixing of the errors reduces the risk associated with any software.

What is Verification?

Verification is a process of evaluating the software product in its development phase to find out whether it meets the specified requirements. The standard definition for verification can be  'Are we building the product right?' i.e., verification makes sure that the software product is developed the right way. The verification part of the 'Verification and Validation' model comes before validation and incorporates software inspections, reviews and walkthroughs etc. Each phase of verification is a phase of the software testing life cycle.

Terms involved in Verification

  • Reviews
    Review is a process during which artifacts of software products are examined by project stockholders or user representatives for any feedback or approval. The main purpose of conducting reviews is to minimize the defect ratio in software as early as possible. Software Review can be on designs, source code, requirement documentation or maintenance documentation, test plans, test specifications, standards, and any other types of specifics to a work product, which can be conducted at any stage of the software development life cycle.

  • Walkthrough
    Walkthrough is a scheduled meeting with the authors in charge of the model or documentation that are set to be reviewed. It is the most time consuming method but the most effective one in identifying issues with the model. The participants can ask questions and make comments about possible errors, violation of development standards, and other problems or may suggest improvement on the software product.

  • Inspection
    An inspection is an in-depth group review designed to identify problems as close to their point of origin as possible. Inspection deserves careful consideration by any organization concerned with the quality of the product. It is a method of improving a product by continually measuring it against standards and requirements.

What is Validation?

Validation is a process of evaluating the software product, after the development process, to determine whether the software meets customer requirements or not. The standard definition for validation can be  'Are we building the right product?'

Both Verification and Validation go parallel with each other. Each verification activity such as requirement specification, functional specification etc. has its corresponding validation activity, such as functional validation, system validation etc. All types of testing methods are performed during validation process. The validation part of the 'Verification and Validation' model comes after verification which involves unit testing, integration testing, system testing, and user acceptance testing.

Terms involved in Validation:

  1. Unit Testing
    A unit is the smallest testable part of an application such as methods, classes, interface, and procedure which are tested to determine if they are fit for further use. Unit tests are basically written and executed by software developers to make sure that the written code meets the requirement as specified. Unit testing is performed by 'White Box Testing' method. It is always performed prior to 'Integration Testing'. Unit testing is normally performed by software developers themselves. In rare cases it may also be performed by white box testers. Unit testing helps in simplifying the debugging process.

  2. Integration Testing
    It is a level of software testing where individual units are combined and tested as a group. Purpose of this testing is to find the faults in between the interaction of integrated units. Test drivers and test stubs are used to assist in integration testing. Integration testing is always performed after unit testing and before system testing. Both developers and testers can perform integration testing.

    Different approaches of integration testing are as follows:

      a. Top Down Approach
      In this, the top level units are tested first followed by lower level units. Test stubs are needed to simulate lower level units which may not be available during the initial phase.

      b. Bottom Up Approach

      In this, bottom level units are tested first followed by upper level units. Test drivers are needed to simulate high level units which may not be available during the initial phase.

      c. Big Bang Approach
      In this, all or most of the units are combined together and tested at one go.

      d. Sandwich/Hybrid Approach

      It is a combination of Top-down and Bottom-Up approach.

  3. System Testing
    It is the level of software testing where a complete and integrated software is tested. The main purpose of this testing is to verify that the system to be delivered meets the required specifications. System testing should investigate both functional and non-functional requirements of testing. This testing is performed after Integration testing and before acceptance testing and is normally conducted by a testing team.

  4. Acceptance Testing
    It is a level of software testing where a system is tested for acceptability. It is basically done by the user or customer which mainly focuses on the functionality, thereby validating the fitness for use of the system. This testing is always performed after system testing.

Conclusion

  • Both the terms Verification and Validation are essential and balancing to each other.
  • Both are used to find a defect in different ways; verification is used to identify the errors in requirement specifications and validation is used to find the defects in the implemented software application.