Integration testing is a testing methodology used by professionals to test the integration among two or more that should work together. Before software is launched on the market for commercial use it undergoes testing to ensure the proper working of the software without any bugs, they are used to detect errors, to evaluate the performance of the software application, and to detect the behavior of the software. The following are the examples of software testing: interface testing, integration tests between OS and systems, testing the communication and interface among modules, system integration testing. By going through this article you can get an answer about what is integration testing and complete idea about integration testing.
What is Integration Testing?
Integration testing is nothing but one of the types of software integration testing where the modules are integrated logically and tested as a group. A standard software module consists of multiple software coded by a variety of programmers and the main purpose of this integration testing is to find the defects in the interaction between the modules when they are integrated. It is called by several names such as 'I & T' (Integration and Testing), thread testing, and 'String Testing. The main aim of this testing is to test the interface between the modules. There are several integration testing tools such as Selenium, TestNG, Mockito, Spock Framework, Cucumber, and spring test.
Advantages of Integration Testing
- Integration testing brings several benefits and some of the benefits are
- It checks that the integrated modules are working properly
- The tester can start the testing procedure once the modules are available
- It detects errors between modules.
- It helps modules to interact with third-party tools and API
- It covers more volume of the system
- This testing is totally efficient
- It improves the reliability of the test
- It enhances the test coverage
Challenges of Integration Testing
- Managing this type of testing is very difficult due to multiple factors such as surrounding, platform, database, etc
- The act of integrating a new system to a legacy system requires a lot of changes and efforts.
- Less compatibility due to different software modules.
Integration Testing Process
The integration testing is carried out after unit testing is done, it combines the unit test modules and tests the functionality of the integrated unit. The main aim of this testing is to test interfaces between the unit.
The testing process consists of the following phases
- Analyze the specification and requirements of modules.
- Ensure that the person who runs the test is skilled with technical details and system architecture.
- Acquire, review, and find the risk involved, and remove them.
- Determine the test plan with details such as test cases, test scenarios, test priorities, and expected results.
- Execute the test
- Review the executed result
- The integration testing is performed before the system test and after the component test
Type of Integration Testing
There are many types of integration testing techniques but before going through the types available we must get sufficient information about stubs and drivers. While carrying out testing some modules are under development, so instead of using these underdeveloped models they replace it with some dummy programs, and the dummy programs are called stubs and drivers. The testing is categorized into different groups listed below.
Big Bang Approach
This approach is suitable for smaller systems, all modules are not integrated even one model is not ready. Once all the modules are ready, all modules are integrated and then executed. In this method, it is difficult to find out which is the root cause of failure because all modules are integrated at once and there is also a possibility of occurrence of bugs in the production environment.
- Localization of fault is tough
- Before testing, there will be a lot of delays
- Critical issues are not resolved immediately
- Not able to find out the root cause of problems.
Incremental Integration Testing
This testing is performed when modules are logically related are integrated one by one and tested and this method will continue still the last module is integrated and tested. To do this approach, you need to use stubs and drivers to run the test without the need to run the entire module. This technique is classified into the Top-Down Approach, Bottom-Up Approach, and Sandwich Approach.
Top-Down Integration Testing
This approach starts by testing the top-most modules and moving towards the low set of modules step by step and this testing takes place from top to bottom. There is a chance that lower-level modules may not have been developed while the top modules are being tested so use stubs for the underdeveloped modules.
- Defect localization is easy
- The stubs can be developed in lesser time
- Critical modules can be tested on priority
- Major design flaws are detected earlier.
- It requires many stubs
- Poor support
- At the end of the cycle, the basic functionality is tested.
Bottom-Up Integration Testing
It performs directly opposite the top-up approach and it starts with testing the lowest modules and gradually move up one-bu-one and the testing procedure takes place from the bottom of the control to flow upwards. Hence during the time of higher modules are not yet developed use drivers to perform the range of tasks.
- The product will be efficient because development & testing can be done together
- It is very easy to create test conditions.
- It needs several drivers
- The flow of data is tested very late
- The requirement of drivers complicates test data management
Sandwich Integration Testing
It is a hybrid approach of integration testing and it is also called mixed integration and here the systems as displayed as three layers, the primary layer is at the middle, another layer is above the target layer and the final layer is below the target layer. Big bang approach is used for modules in the middle, the top-down approach is used on the top layer and The bottom-up approach is used on the layer from the bottom.
- Both the techniques can be performed parallelly
- This method is very useful for large companies and big projects.
- The cost of the project is very high.
- Different skill sets are needed.
Software integration testing is very useful in the software testing process and it is the main part of the testing cycle. There are several interesting integration testing tools available on the internet and I think by reading this article you can know every small detail about integration testing.