Integration testing is abbreviated as I & T. Integration testing is a phase of phase of software testing in which individual software modules are combined and tested as a group. It follows unit testing and precedes system testing and it takes the unit tested modules as input and groups them in larger aggregates, applies tests defined in a integration test plan and delivers as its output, the integrated system which is ready for system testing. Data transfer between the integrated modules is thoroughly tested. Dummy modules interface viz. Stubs and Drivers are used in integration testing. Drivers are simple programs designed specifically for testing the calls to lower layers. It provides emerging low-level modules with simulated inputs and the necessary resources to function. Stubs are dummy software components used to simulate the behavior of a real component. They do not perform any real computation or data manipulation. It can be defined as a small program routine that substitutes for a longer program, possibly to be loaded later or that is located remotely.
The purpose of integration testing is to verify performance, reliability and functional requirements placed on major design items. These design items are groups of units, are exercised through their interfaces using black box testing error and success cases are being simulated via appropriate data inputs and parameter. Shared data areas are simulated on usage and inter process communication is tested and individual subsystems are exercised through their input interface. Test cases are constructed to test all the components within the groups of units interact correctly, for an example across procedure calls or process activations, and so this is done after testing individual modules, that is unit testing. The idea is to build a building block approach, in which verified group of units are added to a verified base which is then used to support the integration testing for the further group of units.
Two methods of integration testing are Incremental & Big bang
Incremental: It involves adding unit tested modules one by one and checking each resultant combination. This process repeats till all modules are integrated and tested. Correction is easy as the source and cause of error could be easily detected.
Big bang: Modules unit tested at isolation are integrated at one go and the integration is tested. Correction is difficult because isolation of causes is complicated.
Three strategies of integration are
Bottom-Up Strategy: Process starts with low level modules of the program hierarchy in the application architecture. Test drivers are used. The process is repeated till the component at the top of the hierarchy is tested. The bottom or low level modules, procedures or functions are integrated and then tested. So after the integration testing of lower level integrated modules, the next level modules will be formed and can be used for integration testing. This approach is helpful when only all or most of the modules of the development of same level are ready. This method also helps to determine the levels of software developed and makes it easier to report the testing process in the form of percentage.
The following diagram shows the integration of modules in case of Bottom-Up strategy.