Software Engineering basics - Bottom-Up Integration Testing
Bottom-Up Integration Testing
Definition
Bottom-up integration testing is an incremental testing approach where testing starts from the lowest-level modules (i.e., the modules at the bottom of the software hierarchy) and moves upward toward the main control module (top level).
Each low-level module is tested first, and as higher-level modules become available, they are combined and tested together.
Purpose
-
To test interfaces between integrated modules.
-
To verify functional correctness as modules are combined.
-
To ensure early testing of critical low-level modules.
-
To detect integration errors early in the development process.
Steps Involved in Bottom-Up Integration Testing
| Step No. | Step Name | Description |
|---|---|---|
| 1 | Identify and Test Lowest-Level Modules | Start with modules at the lowest level of the module hierarchy (leaf modules). Each is tested individually using unit tests. |
| 2 | Create and Use Drivers | A driver is a temporary program used to simulate the higher-level module that calls the lower-level module. It provides test input and controls execution. |
| 3 | Integrate Modules Incrementally | After successful testing of individual lower-level modules, integrate them together to form a cluster (subsystem). |
| 4 | Test the Formed Cluster | Test the cluster to verify data flow and interface interactions between the integrated modules. |
| 5 | Replace Drivers with Actual Modules | Once the next higher-level module is developed, replace the corresponding driver with the actual module. |
| 6 | Repeat the Process Upwards | Continue integrating and testing upward until all modules are combined and the top-level module is tested. |
| 7 | Perform System Testing | After successful integration, proceed to system-level testing to verify the complete software behavior. |
Diagram: Bottom-Up Integration Testing
Here’s a simple conceptual diagram (text-based):
[MAIN MODULE]
▲
│
(Integrated later)
▲
┌─────────┴─────────┐
│ │
[Module A] [Module B]
▲ ▲
┌─────┴─────┐ ┌─────┴─────┐
│ │ │ │
[A1] [A2] [B1] [B2]
(Lowest level modules tested first)
Testing process:
-
Test A1, A2, B1, B2 individually using drivers.
-
Integrate A1 and A2 → test the A cluster.
-
Integrate B1 and B2 → test the B cluster.
-
Integrate A and B → test them together.
-
Finally, integrate with the main module and test the entire system.
Key Terms
-
Driver: A temporary program that simulates the higher-level module that calls a lower-level module.
-
Cluster: A group of modules integrated and tested together.
-
Stub: (Used in top-down testing, not bottom-up) — a temporary module representing lower-level functionality.
Advantages
-
Early testing of key lower-level modules.
-
Easy to detect interface and data flow issues at low levels.
-
No need for stubs (only drivers required).
Disadvantages
-
The top-level control logic is tested late.
-
Requires a large number of drivers.
-
System-level design errors might be found late in the process.