Integration Testing is the type of testing when modules are integrated logically and tested in a group. A typical software project consists of multiple modules that are managed by different programmers. This testing allows you to focus on data communication between these modules. Hence it is also named as I & T (Integration & Testing), String Testing, and Thread Testing.
If you want to test the interaction between multiple integration components, then it is termed as the component integration testing. If you want to test the interaction among integrated systems, then it is named as the system integration testing.
Although each unit is tested independently, still defects may arise during integration because of the following reasons:
Integration testing majorly focuses on interfaces and the flow of information between software modules. So, priority is given to integrated links instead of unit functions that are tested in advance. Here is the sample integration test case for the following scenario:
For example, there is one application with three modules, Login Page, Mailbox, and Delete emails. All these modules are integrated logically by programmers. You don’t have to focus on the testing of Login Page as it is done already in the Unit Testing. You should focus on its interface link with the Mail Box Page. In the same way, check the interface link of Mail Box and the Delete Mails Module.
|Test Case ID||Test Case Objectives||Test Case Description||Expected Outcome|
|A||Test the interface link between Login Page and the Mail Box Page||Add the login details and click on the Login button to connect with||It should be redirected to the mailbox page|
|B||Check the interface link between Mail Box and the Delete Mails Module.||From the mailbox page, select one mail and click on Delete button.||It should delete the selected mail, and deleted emails should appear in the Trash Folder.|
Let us consider one more example where an IT developer is asked to develop an online shopping website that sells camping gear. Once requirements are gathered, analyzed, and processed, the developer is asked to develop different modules one by one. The major modules for this website are given below.
These modules are assigned to different programmers, and they start coding on their machines. They will deploy modules on their own machines to check what is working and where improvements are required. Once development is complete, each of the modules is unit tested and found some defects. They are fixed and closed by developers themselves at the earlier stage.
The QA manager will integrate and test these modules later. He ensures that all integrated modules are working best together. When they are deployed on an individual machine, their functionality is not complete. Once they are integrated, they become complete and more meaningful. In this way, integration testing helps to fix issues and ensures that the application is working amazing as a whole.
Moving ahead, let us learn how these testing strategies are executed, their benefits, and drawbacks.
In this testing approach, all components are integrated once and tested together. The major benefit of this approach is that it is suitable for small systems. Here are some limitations of the approach as given below.
This testing is performed by connecting two or modules together that are logically related. Here, more modules are added and tested for proper functioning one by one. The process will continue until all modules are integrated and tested successfully.
This approach can be completed in two different modes, either top down or bottom up incremental approaches. When these two techniques are used together for a project, it is called the sandwich approach.
The incremental testing approach is usually carried out by a dummy program called Stubs and Drivers. They don’t implement the entire program logic but stimulates the data communication for the calling module. A Stub is a module under test and Driver calls the module that needs to be tested.
|They are used in the top-down approach.||They are used in the bottom-up approach.|
|They are used to test top modules on priority.||Here, lower modules are tested first.|
|They are stimulating the lower level of components.||They are stimulating the higher level of components.|
|This is a dummy program for low-level components.||This is a dummy program for high-level components.|
In this approach, each module at the lower level is tested with higher levels until all modules are not completed. This testing is usually completed with the help of drivers. The major benefits of the approach are easy fault localization, and modules can be tested incrementally not together that saves time. Here is the quick diagrammatic representation of the approach for your reference. The drawbacks are an early prototype for this approach is not possible. The critical modules at the top level of software architecture are tested at the end that is highly prone to defects.
In the top-down approach, the testing takes place from top to down following the control flow of the software system. This testing is usually performed with the help of stubs. The major benefits of this approach are easy fault localization, an early prototype can be designed, critical modules are tested on priority, and major design flaws can be found first and fixed immediately. The drawbacks of this approach are modules at the lower level are not tested adequately, and the approach needs many stubs to complete the testing process. Here is the quick diagrammatic representation of the approach for your reference.
It is the combination of top-down and bottoms up incremental approaches. Here, top modules are tested with lower modules and lower modules are integrated with higher-level modules and tested. This strategy uses stubs and drivers together. Here is the quick diagrammatic representation of the approach for your reference.
Here is the procedure for integration testing on how to perform it:
Here is the brief description of the integrated test plan for your reference:
The integration testing technique comes under both categories either white boxes or black boxes. In the black box technique, there is no need that a tester should have the internal knowledge of the system that is coding skills are not required while white box technique demands the internal knowledge of an application.
When performing integration testing, it is integrated with web services to fetch the data from the database and provide the data as required. This web service functionality for an application can be tested using white box technique while a new feature on the website is tested using the black box technique.
So, it is not yet clear either Integration Testing is a block box or white box technique. It completely depends on the situation and the current testing environment.
System integration testing is done to check the complete integrated system. In the case of Unit Testing, Modules and components are tested independently before they are integrated. Once all modules or components are tested thoroughly, they are integrated, and the system is tested as a whole.
In the case of Integration Testing, two or more modules are unit tested then integrated to verify their functionality. In system testing, the system is tested as a whole and make sure no issues occur due to integrated modules.
It is always good performing integration tests frequently to make sure that integrated modules are working perfectly. For this purpose, various integration tools are available that assist the organization to create a framework and build integration testing suites. A list of popular Integration Testing tools is given below.
The list of popular integration testing tools doesn’t end here, and their popularity depends on various factors like ease to use, product license, cost of the product, report format, etc. You may choose any of them based on your project requirements and budget.
This is all about the integration testing, its types, examples, strategies, best practices, entry/exit criteria, etc. We tried to explain it with examples for a better understanding of the concept. Integration testing is an important part of the testing cycle that makes it easy finding defects when two or more units are integrated. It helps in finding defects at earlier stages and saves time and efforts. It makes sure that integrated components are working well as expected.
I am sure that this blog on integration testing enriched your knowledge of the concept. To know on software testing types, join QA certification program at JanBask Training and explore an ocean of job opportunities in the testing domain with us.
A dynamic, highly professional, and a global online training course provider committed to propelling the next generation of technology learners with a whole new way of training experience.
Receive Latest Materials and Offers on QA Testing Course