Integration Testing is a software testing methodology used to test individual software components or units of code to verify interaction between various software components and detect interface defects.
- It tests integration or interfaces between components, interactions to different parts of the system such as an operating system, file system and hardware or interfaces between systems.
- Components are tested as a single group or organized in an iterative manner. After the integration testing has been performed on the components, they are readily available for system testing.
- Also after integrating two different components together we do the integration testing.
- As displayed in the image below when two different modules ‘Module A’ and ‘Module B’ are integrated then the integration testing is done.
- Integration testing is done by a specific integration tester or test team.
Below are the different strategies of Integration Testing , the way they are executed and their limitations as well advantages.
1. Big Bang integration testing:
Big Bang integration testing, all component are integrated together at once, and then tested.
- Here all components or modules are integrated simultaneously, after which everything is tested as a whole.
- As per the below image all the modules from ‘Module 1’ to ‘Module 6’ are integrated simultaneously then the testing is carried out.
- Big Bang testing has the advantage that everything is finished before integration testing starts.
- Convenient for small systems.
- Fault Localization is difficult.
- Given the sheer number of interfaces that need to be tested in this approach, some interfaces links to be tested could be missed easily.
- Since the integration testing can commence only after “all” the modules are designed, testing team will have less time for execution in the testing phase.
- Since all modules are tested at once, high risk critical modules are not isolated and tested on priority. Peripheral modules which deal with user interfaces are also not isolated and tested on priority.
2 Incremental Approach
The approach of testing where testing is done by joining two or more modules that are logically related is called as incremental approach.
- This process is carried out by using dummy programs called Stubs and Drivers.
- Stubs and Drivers do not implement the entire programming logic of the software module but just simulate data communication with the calling module.
The difference between stubs and driver can be shown as:
|Used in Top down approach||Used in Bottom up approach|
|Top most module is tested first||Lowest modules are tested first.|
|Stimulates the lower level of components||Stimulates the higher level of components|
|Dummy program of lower level components||Dummy program for Higher level component|
Incremental Approach is further divided into following:
- Top Down Approach
- Bottom Up Approach
- Sandwich Approach – Combination of Top Down and Bottom Up
a)Top-down integration testing:
In Top to down approach, testing takes place from top to down following the control flow of the software system.
- It takes help of stubs for testing.
- It Can be shown as below:
- Fault Localization is easier.
- Possibility to obtain an early prototype.
- Critical Modules are tested on priority; major design flaws could be found and fixed first.
- Needs many Stubs.
- Modules at lower level are tested inadequately.
b)Bottom-up integration testing:
In bottom up testing takes place from the bottom of the control flow upwards.
- Components or systems are substituted by drivers.
- Below is the image of ‘Bottom up approach:
- Fault localization is easier.
- No time is wasted waiting for all modules to be developed unlike Big-bang approach.
- Critical modules (at the top level of software architecture) which control the flow of application are tested last and may be prone to defects.
- Early prototype is not possible.
c) Sandwich/Hybrid testing:
It is an approach to Integration Testing which is a combination of Top Down and Bottom Up approaches.
309 total views, 4 views today
A Soon-to-be Computer Engineer by profession, he has profound devotion to add Data Scientist as a prefix to his name. He’s been to the nooks of the web (at least of the surface web) and planning to add some real figures in his pocket!