Integration testing ensures that the individual unit tested components work well together. However, incremental integration testing is a method of testing often used in Agile projects where a module is tested, then integrated with another module. That integration is tested, and then another module or component is added. Instead of integrating everything at once and testing, the integration is done incrementally as additional pieces are added into the main one.
The objective with this kind of testing is to get feedback to the developers earlier and to help isolate issues. If Modules A and B worked well together but something fails when Module C is added, then that helps to indicate where the problem may be. The underlying issues can be found sooner and fixed without impacting other modules. When the defects are found early in smaller assemblies, it’s much more efficient and less expensive to fix. Both developers and testers can and do perform incremental integration testing.
As with integration testing, there are a couple of different approaches to incremental integration testing. Top-down testing starts by testing the top layers and integrating lower layers as the tester works their way down. Bottom-up testing starts by validating the lowest levels of the software, such as the drivers, then working upwards to integrate higher level components.
The downside to this kind of testing is that it can be time-consuming and repetitive. However, if components are required to work independently of one another as well as integrated, then this testing is a step that cannot be skipped.
It’s imperative that the people performing incremental integration testing have a solid background in the testing techniques involved so that an efficient integration testing strategy is developed and utilized. QA Mentor’s Application Architecture Inspection Services as well as our Testing Execution On-Demand Service can be used to provide you with that expertise. We can assist your team with oversight to fix flaws in your module communication with the goal to catch the errors early, reduce your costs, and lower your risks while allowing your team the freedom to work on other aspects of the project.