What is Integration Testing?
Integration Testing is a division of software testing that tests interfaces between different software components. Any software module will work well individually, but when it’s integrated with a different module, there are chances where the software might not behave as intended. This is when (Integration Check) is performed to ensure that the software works smoothly without any issues.
Why Should You Do Integration Testing?
- It is extremely difficult to find and fix defects in integrated components. Performing Integration tests can help you in such cases.
- With integration testing, you can find and fix the bugs at the very start of the development.
- This test runs faster than the end to end tests.
- This test will help you to find system issues like cache integration, corrupted database schema, etc.
- With Integration Testing, you’ll be able to reduce the possibilities of software failure.
- Performing this testing will help you to check the structural changes when a user moves from one module to the next.
- You can reduce the overall number of bugs in a system by fixing issues in the Integrated modules.
- By performing integrated testing, you can cover multiple modules, thus providing broader testing capabilities.
Types of Integration Testing:
Integration Testing is approached by combining different functional units and testing them to examine the results. Integration testing types fall under two categories, as mentioned in the image.
(Integration Check) is performed by combining logically related two or more modules. Every module will be added one by one in the testing unit until the testers complete the whole system. With this approach, you can test the system for defects at an early stage in a smaller unit when it is reasonably easy to identify the cause. This type of testing intends to pass the feedback to the developers at the very start to fix the bugs. Bugs found with this testing can be fixed without disturbing the other modules. This method generally uses stubs and drivers to set up the transmission. Stubs and drivers are duplicate programs used to establish communication. You can perform this integration test in three different approaches.
1. Bottom-up Integration Testing
Here the testing starts from the lowest module in the architecture. The testing control flow moves upwards from the bottom. This method will be executed whenever the top modules are under development. This method will use the drivers to restore the working of modules that are missing. This way of approach has a high success ratio and is an efficient way to test and develop a product. It is faster than the other traditional methods of testing.
2. Top-down Integration Testing
In this approach, testing is performed from the top-most module in the architecture. The testing control flow moves to the bottom from the top. This method will use stubs as duplicate programs to restore the working of modules that are missing. This method is comparatively easier than the bottom-up approach as it uses stubs, which are generally easier to write than the drivers. With this approach, you can find the interface errors with ease because of its incremental nature.
3. Sandwich Integration Testing
It is a combination of Bottom-up and Top-down Approaches. In this approach, bottom modules are tested with top modules, at the same time, the top modules are tested with the lower modules. The goal here is to reach the mid module by testing both top and bottom modules simultaneously. This approach uses both stubs and drivers.
Big Bang Integration Testing
This type of testing is usually performed only after all the modules are developed. Once developed, all modules will be coupled to form a single software system, and then the testing will be performed. This sort of testing generally suits smaller systems. Though Integration Check will be developed before even starting the integration testing, the biggest disadvantage here is some of your resources will be unproductive as they have to wait for all the modules to be developed before starting the testing process thus, making it costly and time-consuming.
With integration testing, you can find the defects in a structure while interactions happen between modules. So, as a tester, if you would like to have a streamlined development process, where implementing new functionality into production is easy, you should perform integration testing.