V-Model (Verification and Validation)
The V-Model is an SDLC model where execution of processes happens in a sequential manner in a V-shape. It is also known as the Verification and Validation model. It is an extension of the Waterfall model and is based on the association of a testing phase for each corresponding development stage.
1. The V-Shape Structure
Instead of moving down in a linear way like Waterfall, the process steps are bent upwards after the coding phase, to form the typical V shape.
- Left Side (Verification): The Development phases (Requirements, Design, Coding).
- Right Side (Validation): The Testing phases (Unit, Integration, System, Acceptance).
- The Point of the V: Implementation (Coding).
2. The Phases
Each verification phase has a corresponding validation phase.
Verification Phases (Down the V)
- Requirement Analysis: Gather needs. (Corresponding Test: User Acceptance Testing).
- System Design: High-level architecture. (Corresponding Test: System Testing).
- Architectural Design: Module breakdown. (Corresponding Test: Integration Testing).
- Module Design: Low-level logic. (Corresponding Test: Unit Testing).
Validation Phases (Up the V)
- Unit Testing: Testing individual modules/components.
- Integration Testing: Testing interaction between modules.
- System Testing: Testing the complete application.
- User Acceptance Testing (UAT): Verifying the system meets user requirements in the real world.
3. Verification vs. Validation
- Verification: "Are we building the product right?" (Static analysis, reviews, inspections).
- Validation: "Are we building the right product?" (Dynamic testing, executing code).
4. Pros and Cons
| Pros | Cons |
|---|---|
| Discipline: Highly disciplined model, phases are completed one at a time. | Rigid: Least flexible. Difficult to go back and change functionality. |
| Early Testing: Testing planning happens early (during design phases). | No Early Prototype: No working software is produced until late in the cycle. |
| Simple: Easy to understand and manage. | High Risk: High risk and uncertainty if requirements are not clear. |
5. Static vs. Dynamic Testing
The V-Model clearly distinguishes between these two types of testing activities.
Static Testing (Verification)
Testing without executing the code. This happens during the verification phases (left side of the V).
- Activities: Reviews, walkthroughs, inspections of requirements and design documents.
- Goal: Prevent defects early.
Dynamic Testing (Validation)
Testing by executing the code. This happens during the validation phases (right side of the V).
- Activities: Unit testing, integration testing, system testing.
- Goal: Find and fix defects in the running software.
programming/software-development-life-cycle programming/software-testing-basics