Integration testing (sometimes called integration and testing, abbreviated I&T) is the phase in software
testing in which individual software modules are combined and tested as a
group. It occurs after unit testing and before validation testing.
Integration testing takes as its input modules that have been unit
tested, groups them in larger aggregates, applies tests defined in an
integration test plan to those aggregates, and delivers as its output
the integrated system ready for system testing.
The purpose 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. Simulated usage of shared data areas and inter-process
communication is tested and individual subsystems are exercised
through their input interface. Test cases are constructed to test
whether all the 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
Some different types of
integration testing are big bang, top-down, and bottom-up. Other
Integration Patterns are: Collaboration Integration, Backbone Integration,
Layer Integration, Client/Server Integration, Distributed Services Integration
and High-frequency Integration.
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.
A type of Big Bang
Integration testing is called Usage
Model testing. Usage Model Testing can be used in both software and
hardware integration testing. The basis behind this type of integration testing
is to run user-like workloads in integrated user-like environments. In doing
the testing in this manner, the environment is proofed, while the individual
components are proofed indirectly through their use. Usage Model testing takes
an optimistic approach to testing, because it expects to have few problems with
the individual components. The strategy relies heavily on the component
developers to do the isolated unit testing for their product. The goal of the
strategy is to avoid redoing the testing done by the developers, and instead
flesh-out problems caused by the interaction of the components in the
environment. For integration testing, Usage Model testing can be more efficient
and provides better test coverage than traditional focused functional
integration testing. To be more efficient and accurate, care must be used in
defining the user-like workloads for creating realistic scenarios in exercising
the environment. This gives confidence that the integrated environment will
work as expected for the target customers.
Top-down and Bottom-up
Bottom Up Testing is an approach to integrated testing where the
lowest level components are tested first,
then used to facilitate the testing of higher level components. The process is
repeated until the component at the top of the hierarchy is tested.
All the bottom or low-level
modules, procedures or functions are integrated and then tested. After the
integration testing of lower level integrated modules, the next level of modules
will be formed and can be used for integration testing. 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.
Top Down Testing is an approach to integrated testing where the
top integrated modules are tested and the
branch of the module is tested step by step until the end of the related
Sandwich Testing is an approach to combine top down testing with
bottom up testing.
The main advantage of the
Bottom-Up approach is that bugs are more easily found. With Top-Down, it is
easier to find a missing branch link
Any conditions not stated in
specified integration tests, outside of the confirmation of the execution of
design items, will generally not be tested.