Verification and Validation

Verification and Validation


SKP Tutorials

6/21/20232 min read

a person holding a phone
a person holding a phone

Verification and Validation are two important concepts in the field of software engineering and quality assurance. They are often used interchangeably, but they represent different stages of the software development lifecycle.

Validation refers to the process of evaluating a system or component during or at the end of the development process to determine whether it satisfies the specified requirements. It focuses on the overall fitness of the software for its intended purpose and involves checking if the system meets the user's needs and expectations. Validation ensures that the right product has been built.

Verification, on the other hand, is the process of evaluating a system or component to determine whether it meets the specified requirements. It involves reviewing documents, conducting inspections, and performing various tests to ensure that the software has been developed according to the design and meets the specified functionality. Verification ensures that the product has been built correctly.

In simpler terms, validation asks the question, "Are we building the right product?" while verification asks, "Are we building the product right?"

Both validation and verification are crucial for ensuring the quality and reliability of software systems. They involve activities such as requirements analysis, design reviews, code inspections, testing, and user acceptance testing. By performing validation and verification activities, software development teams can minimize the risk of delivering faulty or inadequate software to the end-users.

1) Verification:

Verification focuses on checking whether the software system is being built correctly according to its specifications. It ensures that each component or module of the system is implemented accurately. In this e-commerce application example, verification activities may include:

a. Requirement review: Reviewing the system's requirements documents to ensure they are complete, consistent, and understandable.

b. Design inspection: Examining the system's architecture and design documents to verify that they adhere to best practices and meet the specified requirements.

c. Code review: Conducting code reviews to ensure that the implemented code matches the design and meets coding standards.

d. Unit testing: Testing individual units of code to verify their correctness and ensure they function as intended.

e. Integration testing: Testing the interaction between different modules or components of the system to verify that they work together seamlessly.


Validation, on the other hand, focuses on evaluating whether the software system meets the user's needs and requirements. It ensures that the system addresses the intended problem and performs its functions correctly. In the e-commerce application example, validation activities may include:

a. User acceptance testing (UAT): Involving end-users to test the application and provide feedback to ensure it meets their expectations and operates correctly from their perspective.

b. Functional testing: Testing the various functionalities of the application to verify that they work as intended, such as adding items to the cart, making payments, and generating invoices.

c. Performance testing: Assessing the system's performance under different conditions, such as testing its response time and load handling capabilities to ensure it performs well under expected user traffic.

d. Security testing: Evaluating the application's security measures, such as checking for vulnerabilities, testing authentication and authorization mechanisms, and ensuring data protection.

e. Compatibility testing: Testing the application across different browsers, devices, and operating systems to ensure it works correctly in various environments.