V model is an extension of Waterfall model. Instead of moving down in a linear way, it follows both a 'top-down' as well as a 'bottom-up' approach.
As the development team goes about its requirement analysis activities, the testing team simultaneously begins with its acceptance testing activities. By following this approach, time delays are minimized and optimum utilization of resources is assured.
Once the CRS is ready the customer sends a copy to both DT and Testing Team.
- Development Team goes ahead with preparing SRS for the CRS. Testing Team begins with Acceptance testing i.e. Reviews the CRS which means Testing Team checks for contradictory requirements, missing requirements and wrong requirements. Once the mistakes are identified the Testing Team discusses them with Development Team. Together they go the customer, here the customer resolves the issues and gives a new CRS. Testing Team goes ahead with writing Test Plan and Test Case for this CRS. Development Team at the meantime updates the prepared SRS or if the SRS is not already created then they begin the preparing of the SRS wrt the new CRS.
- Once the SRS is ready the Development Team sends the copy to Testing Team and begin with HLD. Testing Team now starts the System testing i.e. Reviews the SRS against CRS ( checks whether every CRS is converted to SRS; validates the converted SRS and checks for missing SRS). Once the mistakes are identified the Testing Team discusses them with Development Team. Development Team rectifies them and sends the new SRS to Testing Team. Testing Team now writes Test Plan and Test Case for them. Development Team meanwhile updates the HLD as per the new SRS.
- Once the HLD is ready, Development Team sends it to Testing Team and begins with LLD. Testing Team now starts the Integration testing i.e. Reviews the HLD, writes Test Plan and Test Case. If the Test Engineer is new to the domain the Developer explains the design to Test Engineer. Test Engineer now understands the design and comes up with his own strategies.
- Once the LLD is ready, Development Team sends it to Testing Team and begins with Coding. Testing Team now starts the Functional testing Reviews the LLD, writes Test Plan and Test Case.
- Once the developer starts coding he also tests them. Testing every line of code is called Unit testing. This is done by the Development Team itself, as they have written the code it’s easier for them to fix it.
- Once the Development Team finishes with Unit testing they send the product to Testing Team for Functional testing. Here every feature/component is tested thoroughly wrt the Test Case written earlier by Testing Team. When Testing Team is doing Functional testing and comes across bugs they send them to Development Team. Development Team fixes the bug and sends the product to Testing Team for Integration testing.
- Now Integration testing is done. If Testing Team comes across bugs they send them to Development Team. Development Team fixes them and sends the product for System Testing.
- Once Integration testing is complete, Acceptance testing is done.
- Once Acceptance testing is complete the product is sent to the customer.
Depending on the bug you repeat the testing process. In some projects Functional testing, Integration testing, System Testing should be done and is some just Integration testing, System Testing or just System Testing.