During the software testing process, various individual modules are assembled and merged together in the integration testing phase. The modules are merged with each other with the blueprint of the software in view.
This testing phase ensures the accurate assembly of the various parts in order to produce the needed software product.
The diagram below illustrates how integration testing fits into the software testing lifecycle.
There are several different approaches you can choose for integration testing:
The top-down approach holds that the top-level module of the software must go through the testing process before any other modules can be tested.
For a top-down approach to be effected, the top-level part of the module is first fully developed. After the completion of development, the testing of the top level is carried out. Right after completion of the testing, the sub-module of the software is merged with the top-level module which has completed its testing.
In the mixed integration approach, there is no preference for either the top-level module or the bottom-level module.
The integration can be carried out at any point in time, provided the modules have gone through the development process.
In the big bang approach, every module is integrated as its development is complete. So, at any point in time, any complete module can be integrated into the whole software system.
This is a very risky approach, as there could be setbacks upon error discovery during the testing process. The setback would occur due to the difficulty of discovering which module, in particular, holds this error, and it could prove costly to trace the error and delay the software development process.
For the bottom-up approach, preference is given to the sub-modules. They are first developed and go through testing before any other module in the system. The other part of the software can follow through for their testing just after the sub-module testing is completed.
The approaches above are used to carry out integration testing in software development. These approaches bring together the individual modules of software and ensure their correct integration for optimal output on the software product.