What is Integration Testing in Software Testing?
- Integration testing in software testing is the process to check the correctness and completeness of the flow of functionality whenever the integration of a module is performed.
- In this phase of integration testing, individual modules are combined and tested as a group this is the main purpose of integration testing.
- Data transfer between the modules is tested thoroughly.
- Software Integration testing is Done by testers.
- We can say by two ways integration can be done
- Front end Integration-Here developer connects modules using “called functions”
Module1–> (called-stub) –> Module2
- Back end integration-Here two tables in the database connects each other by “Join” query.
Table 1–>(Join) –>Table 2
- Communication between the 2 modules proceeds through XML.
Integration Testing Example:
- UI + DataBase
- Registration page and login page integrated with email and SMS after registration.
Types of Integration Testing in Software Testing
Integration testing can be classified into two parts:
- Incremental Integration Testing Approach
- Top-Down Integration Testing
- Bottom-Up Integration Testing
- Sandwich Integration Testing/Hybrid/Bidirectional
- Non-Incremental Integration Testing Approach
- Big bang Integration Testing
1. Big Bang Integration Testing
- In this approach, testing is done only after the integration of all modules at once.
- It is convenient for small software systems, but if used for large software systems identification of defects is difficult.
- Since this testing can be done after the completion of all modules due to the testing team getting for their activities.
- So that some modules, requirements, interfaces, and high-risk critical modules can be missed easily.
Advantages of Big Bang Integration Testing:
- It is convenient for small-size software systems.
- Disadvantages of Big Bang Integration Testing:
- Small modules are missed easily because of less time for testing.
- The time provided for testing is very less.
- We may miss testing some of the interfaces because of less time for testing.
2. Bottom-up Integration Testing
- Bottom-up Integration Testing is a strategy in which the lower-level modules are tested first means sub-modules are tested first.
- The process continues until all modules at the top level are tested.
- Once the lower-level modules are tested and integrated, then the next level of modules is formed.
- If we have a submodule but do not have a main module then in that case we use a bottom-up approach
- To check the submodule, the developer creates a dummy main module.
- The developer first creates a program called “Driver”
- These driver programs are in XML languages.
Bottom-up Integration Testing Example:
3. Top-down Integration Testing
- If we have to do the integration testing and we have developed a module but don’t have the next module from which we can check the correctness of the new module.
- Then in this case we use a dummy module.
- The Dummy module is created from a stub.
- A stub is a dummy program created by the developer
- A stub is in XML format
- Stub use in WSDL(Web service description language)
- We check requests and responses in an XML
- When we have the main module but do not have the submodule then we use top-down.
- Top Down Integration Testing is a method in which integration testing takes place from top to bottom of a software system.
- The higher level modules(main module) are tested first and then lower level modules(submodule) are tested and integrated in order to check the software functionality.
- Stubs are used for testing if some modules are not ready.
Top-Down Integration Testing Example:
For successful integration
If both username and password are correct:
Here we will get the True response/return
If invalid username:
If a password is invalid:
If both username and password are invalid:
Data conversation between client and server did by XML
XML is the advanced version of notepad++
After updating XML we send the file to the server by FTP-file transfer protocol
Once the file is sent then we check by response/return from the server in the database.
XML data insert into the database and the same data can collect from the database.
Advantages Top-down Integration Testing:
- Critical Modules are tested on priority.
- Not completely developed modules/sub-modules can be tested without waiting.
- Dependency on any modules can be minimized.
Disadvantages Top-down Integration Testing:
- Needs many Stubs needed
- Drivers need
4. Sandwich Integration Testing/Hybrid Testing/Bidirectional
- If it is necessary to use both drivers as well as stub then the approach is called as Sandwich Approach
- Combination of both = Top Down and Bottom Up approach
- The combination of incremental integration testing (I.I.T) and non-incremental integration testing is known as sandwich testing.
- Here both types of approaches are added and tested.
Sandwich Integration Testing Example:
In the below example, the development team develops the application and sends it to the CEO of the testing team. Then the CEO will log in to the application and generate the username and password and send a mail to the manager. After that, the CEO will tell them to start testing the application.
Then the manager manages the username and the password and produces a username and password and sends it to the test leads. And the test leads will send it to the test engineers for further testing purposes. This order from the CEO to the test engineer is top-down incremental integrating testing.
In the same way, when the test engineers are done with testing, they send a report to the test leads, who then submit a report to the manager, and the manager will send a report to the CEO. This process is known as Bottom-up incremental integration testing as we can see in the below image:
Guidelines for Integration Testing In Software Engineering
- We go for the integration testing only after the functional testing is completed on each module of the application.
- We always do integration testing by picking module by module so that a proper sequence is followed, and also we don’t miss out on any integration scenarios.
- First, determine the test case
- Choose input data for test case execution. Input data plays a significant role in testing.
- If we find any bugs then communicate the bug reports to developers and fix defects and retest.
- Perform positive and negative integration testing.