Levels of Testing
Software testing can be performed at different levels of the software development process. Performing testing activities at multiple levels help in the early identification of bugs and better quality of software product. In this tutorial, we will be studying the different levels of testing namely – Unit Testing, Integration Testing, System Testing, and Acceptance Testing.
Here, we will describe the different testing levels of testing in brief, and in the next tutorials, we will explain each level individually, providing an example and detailed explanation.
Content
Unit Testing
- Unit Testing is the first level of testing usually performed by the developers.
- In unit testing, a module or component is tested in isolation.
- As the testing is limited to a particular module or component, exhaustive testing is possible.
- Advantage – Error can be detected at an early stage saving time and money to fix it.
- Limitation – Integration issues are not detected in this stage, modules may work perfectly on isolation but can have issues in interfacing between the modules.
Integration Testing
- Integration testing is the second level of testing in which we test a group of related modules.
- It aims at finding interfacing issues b/w the modules i.e. if the individual units can be integrated into a sub-system correctly.
- It is of four types – Big-bang, top-down, bottom-up, and Hybrid.
- In big bang integration, all the modules are first required to be completed and then integrated. After integration, testing is carried out on the integrated unit as a whole.
- In top-down integration testing, the testing flow starts from top-level modules that are higher in the hierarchy towards the lower-level modules. As there is a possibility that the lower-level modules might not have been developed while beginning with top-level modules.
So, in those cases, stubs are used which are nothing but dummy modules or functions that simulate the functioning of a module by accepting the parameters received by the module and giving an acceptable result.
- Bottom-up integration testing is also based on an incremental approach but it starts from lower-level modules, moving upwards to the higher-level modules. Again the higher-level modules might not have been developed by the time lower modules are tested. So, in those cases, drivers are used. These drivers simulate the functionality of higher-level modules in order to test lower-level modules.
- Hybrid integration testing is also called the Sandwich integration approach. This approach is a combination of both top-down and bottom-up integration testing. Here, the integration starts from the middle layer, and testing is carried out in both directions, making use of both stubs and drivers, whenever necessary.
System Testing
- System Testing is the third level of testing.
- It is the level of testing where the complete integrated application is tested as a whole.
- It aims at determining if the application conforms to its business requirements.
- System testing is carried out in an environment that is very similar to the production environment.
Acceptance Testing
- Acceptance testing is the final and one of the most important levels of testing on successful completion of which the application is released to production.
- It aims at ensuring that the product meets the specified business requirements within the defined standard of quality.
- There are two kinds of acceptance testing- alpha testing and beta testing.
- When acceptance testing is carried out by testers or some other internal employees of the organization at the developer’s site it is known as alpha testing.
- User acceptance testing done by end-users at the end-user’s site is called beta testing.
This concludes our tutorial on the different levels of testing. You can continue with our Software Testing Tutorial course to study these levels of software testing in detail, in the coming tutorials.