Integration testing is level of software testing where integrated components and there interfaces are tested as a group. The purpose behind integration testing is to check communication between integrated components is fine. By testing the components in groups, any faults in the way they communicate together can be identified. Integration testing helps in identifying the problems that occur when the individual components are combined i.e. it detects the problem in interface of the two components. No matter how well each component is running but if integration is not done properly, it will affect overall performance of software program. Integration testing is done after unit testing.
There are many approaches to test how different components of the system function at their interface, a tester can adopt either a top-down, bottom-up or a big bang integration approach. But the specific method that will be used to get the test done will depend greatly on the way in which the components are defined.
Top down Approach:
In top down integration testing, testing happens from top to bottom. For example testing will start from module 1 then proceed to module 2, module 3 etc. In top down approach only module 1 is tested in isolation rest all other modules are integrated one by one and tested. Consider Module 2 is not developed yet so in order to test module 1 we need module 2, so here stubs come in picture. Stubs are nothing but code snippet or a dummy code. So in place of module 2 stubs are placed. This stub will accept input from module 1 and returns the result. Stubs can be created by tester or they can be provided by software testing harness, a type of software which provides testing environment.
Advantages of Top down Approach:
1. This Approach can be largely advantageous if all major flaws are caught in the top phase of program.
2. Early structure/prototype of code/Program allows to demonstrate and boost the morale.
Disadvantages of Top down Approach:
1. Testing of basic functionality is done at the end.
2. In case of missing program stubs are essential.
Bottom up Approach:
In bottom up Approach testing, testing happens from bottom to top. The process of testing lower level modules with higher modules continues until all modules are tested. It takes help of drivers for testing. For example testing will start from module 4, module 5 and module 6 and this process will continue till modules are covered i.e. the process will come to halt once module 1 gets tested.
Advantages of Bottom up Approach:
1. The main advantage of bottom up approach is that testing can be done together i.e. no time is wasted waiting for all modules to be developed unlike Big-bang approach so that the application or the product will be efficient as per the customer specifications.
2. Tracing faults is easier.
Disadvantages of Bottom Up Approach:
1. Key interface defects are detected at the end of cycle.
2. Test drivers needs to be created for modules at all levels except the top control.
3. The program as an entity does not exist until the last module is added
Big Bang integration testing:
Big bang integration testing is a testing of all modules or components which are integrated together and testing is carried out as a whole. This approach is quite challenging and risky as we integrated all modules or components in a single step and test it as a whole. In this case there is a possibility of missing errors at interface.
Advantages Big Bang integration approach:
1. Convenient for small systems
Disadvantages Big Bang integration approach:
1. Some interfaces may go without tested.
2. As testing can be done only once all modules are designed, testing team has to wait for modules to get integrated.
3. As everything is tested as a whole, modules with high priority are not separated and tested with priority.
To test interfaces and communication between units/components.
Types of Defects:-
1. Mismatch between protocols.
2. Mismatch between parameters (numbers, datatypes, order etc.)
3. Overlapping functions.
High level document (HLD) or Low level document (LLD)
Exit for unit testing is satisfied.
1. When all defects in integration testing are fixed. (As per given criteria)
2. Coverage is achieved.
Drivers, stubs, coverage and unit testing tools.
1. Integration test log (ITL).
2. Integration test report (ITR).