System Integration Testing, also referred to as thread testing, string testing and I&T (Integration and Testing) is the testing stage that occurs when bringing together all components of a system to ensure that they are all compatible with each other and will run smoothly when working as one system.
This is especially important as different parts of the system could have been created by different programmers. Since programmers are human, there is a chance that their logic and thinking could differ from other programmers which leaves a lot of space for systems created by different programmers to be incompatible with each other.
Over the course of creation, demands and needs can change. Even if everything was tested initially, system integration testing will ensure that all requirements for the final product have been met. The system subcomponents can include software, hardware, or both. System integration testing is there to make sure that whatever combination of system subcomponents there are will be integrated together and will work smoothly to create the desired final product.
There are different techniques for system integration testing:
1. Big-Bang Integration
Big-Bang integration brings all of the components together at once and tests them. This approach is best used for smaller systems with fewer components. With the Big-Bang approach it can be difficult to locate exactly where an error has occurred. It also means that the testing stage has to wait until all components are completed, as opposed to methods used in Incremental Integration where the testing can start and continue to integrate other subcomponents as they are completed.
2. Incremental Integration
With the Incremental approach, testing starts small with two, or at most a few, subcomponents that are closely related. Then, subcomponents that are closely related to those few subcomponents are added, and on and on until everything has been added and represents the final product.
One upside to using the Incremental method is that it is much easier to locate the exact place that errors occur. Incremental Integration is split into two types of testing: Bottom-up and Top-down.
3. Bottom-Up Integration
In the Bottom-up method, lower systems are tested with higher systems until everything has been tested. In this method, testing can begin even before all subcomponents have been completed, so a sort of multi-tasking can occur and subcomponents can be tested as they become available for testing. However, upper level components which control and touch more parts of the system are tested last.
4. Top-Down Integration
In the Top-down method, testing is done just as the name suggests – from top to bottom. So, systems are tested based on their natural flow from top to bottom until everything has been tested. Unlike in the Bottom-up method, the Top-down method tests the more important components first, and will find any major flaws or errors right off the bat, but then the lower subcomponents aren’t tested as well as others.
5. The Sandwich Approach
Another approach called the Sandwich Approach combines both the Top-down and Bottom-up approaches. This means the test consists of all of the advantages of both approaches, and reduces the disadvantages. However, Sandwich Testing too has its own unique disadvantages. For example, it can cost more because of the integration of both testing approaches.
The system integration testing stage is not usually the first test of everything that would go into the final product. Most or all of the subcomponents will have probably been tested in advance, to make sure they work on their own, or even with some other subcomponents. System Integration Testing brings everything together for the ultimate test. It ensures that any subcomponent that is dependent on another will run properly without any glitches, and it tests the integrity of the data between all parts of the entire system.