Verification vs Validation

Verification

As mentioned, verification is the process of determining if the software in question is designed and developed according to specified requirements. Specifications act as inputs for the software development process. The code for any software application is written based on the specifications document.
Verification is done to check if the software being developed has adhered to these specifications at every stage of the development life cycle. The verification ensures that the code logic is in line with specifications.
Depending on the complexity and scope of the software application, the software testing team uses different verification methods, including inspection, code reviews, technical reviews, and walkthroughs. Software testing teams may also use mathematical models and calculations to make predictive statements about the software and verify its code logic.
Further, verification checks if the software team is building the product right. Verification is a continuous process that begins well before validation processes and runs until the software application is validated and released.

The main advantages of the verification are:

acts as a quality gateway at every stage of the software development process.

enables software teams to develop products that meet design specifications and customer needs.

saves time by detecting the defects early in software development.

reduces or eliminates defects that may arise later in the software development process.

A walkthrough of verification of a mobile application

There are three phases in the verification testing of a mobile application development:

Requirements Verification
Design Verification
Code Verification

Requirements verification confirms that the requirements are complete, clear, and correct. Before the mobile application goes for design, the testing team verifies business or customer requirements for correctness and completeness.

Design verification is a process of checking if the design of the software meets the design specifications by providing evidence. Here, the testing team checks if layouts, prototypes, nautical charts, architectural designs, and database logical models of the mobile application meet the functional and non-functional requirements specifications.

Code verification checks the code for its completeness, correctness, and consistency. Here, the testing team checks if construction artifacts such as the mobile application’s source code, user interfaces, and database physical model meet the design specification.

Validation

Validation is often conducted after the completion of the entire software development process. It checks if the client gets the product they are expecting. Validation focuses only on the output; it does not concern itself with the development process’s internal processes and technical intricacies.Validation helps to determine if the software team has built the right product. Validation is a one-time process that starts only after verifications are completed. Software teams often use various validation methods,including white box testing (non-functional or structural/design testing) and black box testing (functional testing).White Box Testing is a method that helps validate the software application using a predefined series of inputs and data. Here, testers compare the output values against the input values to verify if the application produces output as specified by the requirements.

There are three vital variables in the Black Box Testing method (input values, output values, and expected output values). This method is used to verify if the actual output of the software meets the anticipated or desired output.

The main advantages of validation processes are:

ensures that the expectations of all stakeholders are fulfilled.
enables software teams to take corrective action if there is a mismatch between the actual and anticipated products.
improves the reliability of the end product.

A walkthrough of the validation of a mobile application

Validation emphasizes checking the mobile application’s functionality, usability, and performance.
Functionality testing checks if the mobile application is working as expected. For instance, while testing the functionality of a ticket-booking application, the testing team tries to validate it through:

Installing, running, and updating the application from distribution channels like Google Play and the App Store
Booking tickets in the real-time environment (field testing)
Interruptions testing

Usability testing checks if the application offers a convenient browsing experience. User interface and navigation are validated based on various criteria: satisfaction, efficiency, and effectiveness.

Performance testing enables testers to validate the application by checking its reaction and speed under a specific workload. Software testing teams often use techniques such as load testing, stress testing, and volume testing to validate the mobile application’s performance.

VerificationValidation
1. Verification represents static testing techniques.1. Validation represents dynamic testing techniques.
2. Verification ensures that the software documents comply with the organisations standards, it is static analysis technique.2. Validation ensures that the software operates as planned in the requirements phase by executing it, running predefined test cases and measuring the output with expected results.
3. Verification answers the question “Is the Software build according to the specifications”.3. Validation answers the question “Did we build the software fit for purpose and does it provides the solution to the problem”.