What is system integration testing?
System Integration Testing is a black box testing technique that evaluates the system’s compliance against specified requirements. System Integration Testing is usually performed on subset of system while system testing is performed on a complete system and is preceded by the user acceptance test.
The goal of systems integration testing is to ensure that the data crossing the boundary between systems is received, stored and used appropriately by the receiving system. Until integration begins, testing of the isolated systems is done on mocked or replayed data and not on “live” data. Integration testing is the final step before customer acceptance testing.
Integration testing identifies problems that occur when units are combined. By using a test plan that requires you to test each unit and ensure the viability of each before combining units, you know that any errors discovered when combining units are likely related to the interface between units. This method reduces the number of possibilities to a far simpler level of analysis.
Why system integration testing is needed?
The need of integration testing is to verify functional, performance, and reliability requirements placed on major design items. These “design items”, i.e. assemblages (or groups of units), are exercised through their interfaces using Black-Box testing, success and error cases being simulated via appropriate parameter and data inputs. Test cases are constructed to test that all components within assemblages interact correctly, for example across procedure calls or process activations, and this is done after testing individual modules, i.e. unit testing. The overall idea is a “building block” approach, in which verified assemblages are added to a verified base which is then used to support the integration testing of further assemblages.
Approaches in Integration Testing
There are four approaches used in Integration testing.
- Top-Down Testing
- Bottom-Up Testing
- Sandwich Testing
- Big Bang Testing
Top-Down Testing: In this approach, the highest-level modules are tested first and progressively lower-level modules are tested after that.
Bottom-Up Testing: Bottom-up integration testing begins with unit testing followed by higher level combinations of units called modules. This approach is helpful only when all or most of the modules of the same development level are ready. This method also helps to determine the levels of software developed and makes it easier to report testing progress in the form of a percentage.
Sandwich Testing: This is an approach to combine top down testing with bottom up testing.
Big Bang Testing: In this approach, all or most of the developed modules are coupled together to form a complete software system or major part of the system and then used for integration testing. The Big Bang method is very effective for saving time in the integration testing process. However, if the test cases and their results are not recorded properly, the entire integration process will be more complicated and may prevent the testing team from achieving the goal of integration testing.
From above mentioned approaches only Top-Down & Bottom-Up are used mostly. So the main advantage of bottom-up approach is that bugs are more easily found as compared with top-down approach, it is easier to find the missing branch link and show the whole software process to user early.
Steps to Perform Integration Testing
- Create a Test Plan
- Create Test Cases and Test Data
- Once the components have been integrated execute the test cases
- Fix the bugs if any and re test the code
- Repeat the test cycle until the components have been successfully integrated
Advantage of system integration testing
- More stable than GUI tests
- Useful in writing precise component level tests.
- Drives better code design
- Tester understands the internal working of application allowing better writing of test cases
- Easy to integrate in a continuous integration environment
Integration testing is a phase of testing. Once Modules are developed and tested, all components are grouped together to check the functionality of System as a whole. All modules are coupled together to check the functionality i.e. know whether system breakdown at some point, whether data is moving properly from one module to dependent module, etc. In Organizations there is a separated Integration testing team who test the system as whole. If done properly it can reduce the risk of defect leaking, also it can reduce the risk of defects to be caught by client during UAT phase. Thus, integration plays an important role in testing cycle.