Verification testing is a software development process that ensures a product or system meets its specified requirements and adheres to established design and development standards. In essence, it answers the question, "Are we building the product right?"
Here's a breakdown of key aspects of verification testing:
Purpose
The primary goal of verification testing is to evaluate whether the software meets the pre-defined requirements and specifications. This involves comparing the software's behavior and characteristics against documented criteria.
Key Objectives
- Requirement Compliance: Confirming that all specified requirements are met.
- Design Adherence: Ensuring the software follows the intended design.
- Standard Compliance: Verifying adherence to coding standards, security standards, and other relevant guidelines.
- Error Detection: Identifying defects early in the development lifecycle.
- Quality Assurance: Contributing to the overall quality and reliability of the software.
Methods and Techniques
Verification testing employs various methods, including:
- Reviews: Examining documents (e.g., requirements specifications, design documents, code) to identify errors and inconsistencies.
- Inspections: Formalized reviews with specific roles and processes.
- Walkthroughs: Informal reviews where developers present their work to peers.
- Static Analysis: Using tools to analyze code for potential defects without executing the code. This can include checking for coding standard violations, security vulnerabilities, and potential performance issues.
Relationship to Validation Testing
Verification is often paired with validation testing. While verification ensures the product is built right according to specifications, validation ensures the right product is built, meaning it meets the user's needs and expectations. Validation testing answers the question, "Are we building the right product?".
Example
Imagine a software application for online banking. Verification testing would involve ensuring that the software correctly implements the required security features, such as encryption protocols and authentication mechanisms, as outlined in the system's design specifications. It would also check that the code adheres to coding standards.
In summary, verification testing is a crucial software development activity that helps ensure the software is built correctly, according to its specifications and established standards.