2. Definition
Integration Testing is the process of testing the interface between two
software units or modules. It’s focus on determining the correctness of
the interface. The purpose of the integration testing is to expose faults in
the interaction between integrated units.
It is divided into two categories.
1. Bottom-up Integration
2. Top down Integration
3. Bottom-up integration is the traditional method to integrate the
system components.
It consists of the following
Unit testing
Subsystem testing
Entire system testing
4. Unit Testing
The aim of unit testing is discovering errors in the individual modules of
the system. For unit testing we use test harness that consists of driver
programs and data. Unit testing ensure that each representative case
handled by each module has been tested.
5. Subsystem testing
A subsystem consists of large number of modules they communicate
each other. The main goal of subsystem testing is to verify the operation
of the interfaces with in the modules. Here control and data must be
tested. If the size of software is larger then we need several levels of
subsystems. Sometimes subsystem testing is not possible due to
combinational complexity.
6. System testing
System testing is concerned with refinements of interfaces, decision
logic, control flow, recovery procedures, throughput, capacity and timing
characteristic of the entire system. Careful test planning is required to
determine extent and nature of system testing.
7. Disadvantages of Bottom-up testing
Write and debug test harnesses
Level of complexity is increased when combining the
modules into larger system
Difficult to isolate the sources of errors.
8. Top down Integration
It starts with the main routine and its immediate subordinate routines in
the system. After completing main routine it test its subroutine in order.
It needs stubs for simulating the effect of lower level routines.
10. List of stubs for the above example
1. Test Main – stubs for Get, Proc, Put
2. Add Get – Test Main, Get
3. Add Proc – Stubs for Sub1 and Sub2
4. Add Put – Test Main, Get, Proc, Put
5. Add Sub1 – Test Main, Get, Proc, Put
6. Add sub2 – Test Main, Get, Proc, Put
11. Advantages of Top-down Integration
System Integration is distributed throughout the implementation
phase.
Top level interfaces are tested first.
The routines provide a natural test harness for lower level routines.
Errors are localized to the new modules and interfaces.
At most, we prefer top-down integration testing for the software. Some
times the cost of test harness may increase.
12. Automated tools in Integration testing
1. Module drivers
2. Test data generators
3. Environment simulators
4. Library management
13. Module drivers allow specification of test cases in a descriptive
language. The driver tool calls the routine and compares the actual
results with expected results.
It also provides program stubs for top down testing. Test cases are
written for the stub. Some automated test drivers are AUT, MTS, TEST-
MASTER and TPL.
14. Test data generators are in two types. First type generators generate
files of random values based on the predefined format.
Second type generators are called as symbolic executors eg. ATTEST
that derive a set of test data which follow control path. Test data are
generated from formal specifications by the TESTER.
15. Environment simulators used in integration and acceptance testing very
often. If the operation of actual environment is impractical, we use the
simulators.
Some of the impractical situations are development of software for
nonexistent system and live testing. Examples of environment simulators
are PRIM and Saturn Flight Program Simulator.
16. Automated development library has database that consists of project
documentation, source code, object code, test cases and test reports.
Utility programs allow to access and manipulate materials like text
editors, compilers, report formatters and management information tools.
These systems include software factory, PDS and SCCS.