In our blog on V-model, we looked at how for every phase in the SDLC, a corresponding testing activity was introduced. So we have Unit Testing, Integration Testing, System Testing and User Acceptance Testing.
And each of these different test levels have a specific objective or goal eg. at Integration testing, we focus on the interfaces between the modules, System testing is end to end testing.
In this blog, we look at the different types of tests that can be conducted at each Level.
There are four types of tests that can be conducted at each of these levels:
- Functional testing: tests pertaining to what the system should do i.e. what the user or customers want from the system , as documented in the Requirements and Functional specifications.
- Non-functional testing: tests pertaining to how the system should behave e.g. reliability, response times, throughput, data storage, security, compliance to legal, safety or industry specific standards. These should be specified as part of the Requirements Specs and should be testable. Some examples of non-functional testing are Usability, Installability, Portability, Inter-operability, Maintainability, Security, Performance, Load, Stress etc.
- Structural or Coverage testing: In this type of testing, the focus is on assessing the thoroughness of testing .For Functional testing, this could be how many features or functions of the total have been tested so far. We could also look at the code to see how many lines of code have been exercised by tests, how many decisions have been exercised etc , these are part of statement, decision coverage. And fall under White box testing techniques.
- Testing related to changes: When the system undergoes changes due to defect fixes, two types of tests are needed; one to verify the change has not broken the existing, working code and the second to ensure the defect has been fixed. These tests are called Regression and Confirmation testing.
All the four test types can be conducted at every testing level in the V-model.