Integration testing is a phase of software development and testing in which multiple units or modules within a program or hardware configuration are brought together and tested. These various units have all typically been tested individually to ensure that each unit functions properly alone; this phase of testing integrates these disparate units into a larger system. This can be done in software development to ensure that different aspects of a larger program are able to work together or in hardware testing to ensure proper functionality between different units. Integration testing is a key phase of testing since many bugs can be found and early release versions of the overall software or hardware can be developed.
Also referred to as integration and testing, or I&T, integration testing is typically seen as the second major phase of testing. The first phase is called unit testing and is focused primarily on testing individual units or parts of a larger program or system to ensure that each unit functions on its own. These separate units are brought together in integration testing, once they have each passed unit testing, to then ensure that they can work together in larger groupings. Afterward, they will typically be put together in the full system or program being developed and tested as part of that full system, which is called system testing.
There are many ways to perform integration testing, though there are some common methods typically used. Bottom-up testing is quite common and usually involves testing different aspects of an integrated system starting with the lower levels of the system. Once these “bottom” aspects of the system pass testing, the testing moves “up” to more important aspects. A top-down form of integration testing can also be performed, in which the highest levels of a system are tested first and the process continues moving “down” to lower levels.
One of the major problems with these two types of integration testing, however, is that neither one can easily establish an early release of a product with basic functionality. This type of alpha version release can be vital for greater testing opportunities, and so other approaches typically must be taken to allow for such a release. One such approach is a “big bang” form of testing in which all of the parts of the integrated system are tested simultaneously. This can be advantageous if there are few problems or bugs with the software being tested, but it can be difficult to pinpoint specific problems if too many are present.
There is also a type of integration testing referred to as “sandwich testing” that seeks to alleviate some of these issues. Basically, this type of testing begins with both top-down and bottom-up testing simultaneously, and both forms of testing effectively “meet in the middle.” This allows for early testing of basic logic systems, a perk of top-down testing, and identifies smaller problems earlier, as with bottom-up testing. Such testing can also more quickly produce an early release version of the product for more wide-scale testing or advance media demonstrations of the product.