Published: 31 Oct 2019
Integration Testing – A Complete Overview
Last Updated: 24 Mar 2020
1. Integration Testing Overview
2. Why Integration Testing is Essential within the SDLC?
3. How to initiate Integration Testing?
4. Critical aspects to watch out before initiating Integration Testing
5. What are the advantages of Integration Testing?
6. What are the different methods of Integration Testing?
7. What are the best practices to follow for Integration Testing?
.8 What are the tools for performing integration testing?
Integration testing primarily focuses on verifying data communication among different modules of the software project. Integration tests determine the effectiveness and performance of different software modules when they are connected to each other. It rather determines whether a system of multiple modules work together as per the requirements specified. Individual units are culminated together and tested as one unit to validate the performance, functionalities, and reliability of the software. The formal software testing process involves testing different modules initially with unit testing and then moved further for integration testing.
The software has changing requirements and new patches of code are developed frequently. When these patches are grouped together to form one software, integration testing should be taken up. Usually, when complex software is built, it is classified into different modules and separately coded. It is essential that all these modules require integration testing to know how they perfume when combined. Usually, integration testing is done after unit testing to ensure all the units work in harmony with each other. Integration testing is also done when support libraries are used along with the code.
– Get a complete understanding of the application under test
– Identify the work-flow of different modules
– Get an overview of what each Module does
– Take a stance of the way data is transferred from one module to another
– Get the view of exact data entry and data exit of the application
– Segregate the application to match the testing pattern
– Identify and create test conditions based on data flow
– Draft the test cases with deep analysis of conditions
– Start integration testing of modules
1. Ensure that a detailed design document with listing of various interactions between modules is listed
2. A proper configuration management system should be kept in place to track the right version of each unit
3. Ensure that initially unit testing is taken up before Integration testing is started
4. As regression testing is essential each time a unit is integrated, automate tests based on a top-down or bottom-up approach to ensure effective results
– It provides a systematic technique for assembling a software system while conducting tests to uncover defects associated with interfacing
– Ensures the integrated modules and components work properly
– As software development involves changes in requirements, testing of modules at different levels is vital for which integration testing proves to be effective
Integration testing ensures effective functioning across modules when combined. A more in-depth look at the different types of Integration testing gives a broader perspective of it.
It is one type of Integration testing wherein all modules are tested in one go. It verifies whether the system works as expected. The only disadvantage with this type of testing is, if there is an issue detected within the modules, it becomes challenging to find out which module has caused it. It is supposed to be the right approach for testing small systems while it is a more time-consuming process.
– All components are integrated at once and then integration testing is processed
– The method is suitable for a small system
– The teams have less time for execution in the testing phase as the integration testing is performed after the modules are designed
This type of progressive approach is used to test two or more modules that are logically aligned and tested in a single batch. Additional and related modules are tested to make sure that all modules are merged and tested with each other effectively. This Incremental approach can either be a Bottom-up or Top-down approach.
– In this type of approach, defects can be identified at the earliest
– This approach takes longer time as the drivers and stubs are developed and then used in the test
This process involves the testing of high level or the parent modules at first level, and then testing of the lower level or child modules, and then integrated together. Stubs, which are a small segment of the code are used to simulate the data response of lower modules until they are completely tested and integrated.
– Since the integration testing is performed by considering the real-time environment, the product that is tested maintains a good consistency
– In this approach, a priority-based testing is performed for all critical modules at first
– In this approach, the need for having stubs is more
– The basic functionality of the product is tested at the end of the cycle
It is the reverse of top-down approach wherein first lower-level modules are tested before they are actually integrated with their parent modules. Drivers which simulate the data response of a connecting higher level or parent module is used instead of stub.
– In this method, testing and development are done simultaneously. This helps the product or the application to be efficient and meet the customer needs
– Time is not wasted by waiting for all modules to be developed
– In this approach, the critical modules that control the flow of application are tested at the end, and this can lead to defects
– Test drivers are required to be created for all modules at various levels (except for the top control)
This is a hybrid method that combines both bottom-up and top-down methods into single sandwich method. It allows testing top modules with lower modules and vice versa at the same time. This type of testing ensures better and faster results.
– In this approach, there is a parallel test performed for the top and bottom layers
– Extensive test for the sub-systems is performed after integration
For any iterative development or upon any issue resolution, testing needs to be taken up to ensure the change did not inadvertently break or change expected results elsewhere in the application. Hence, it should be taken up to ensure other areas of the application are functioning as per the design objectives. It should be done with every release, and as it is very repetitive, hence test automation can simplify this process.
– This method of testing assures that any change for fixing the bugs or enhancing the module or the application will not affect the existing code
– This testing practice helps to avoid the creation of bugs that are found earlier
– This test is essential even when small changes are made in the code, as this helps to avoid unexpected bugs
– If regression testing is not performed with automation tools, then the process can become complex and time consuming
It involves the testing of a collection of modules and interfaces to check if the application meets the specification requirements. It is both Black box and white box testing hence the knowledge of modules and interfaces is required. The process involves the functional testing wherein testing is performed to check whether the modules when combined ensure the correct outcome and are performed by developers and test engineers. Moreover, in system testing, test cases are developed to simulate the interaction between modules. It also involves the testing of systems and packages especially testing interfaces to external entities.
– This testing process helps to validate the functionality of the software module dependencies
– Data integrity is carried in separate modules for the complete solution
– The primary function of testing dependencies between the components commonly subjects to regression testing
– Perform Integration Testing only after Unit Testing
– Any core business logic should not be tested with Integration testing
– Testing suites should be maintained separately such that developers can run unit tests during development and before committing code
– Integration tests might span several modules and log extensively, and if these tests fail, it becomes challenging to identify the cause
– It is important not to stop at integration testing and go beyond it as it is essential to run system tests that accurately simulate the production environment
1. Protractor: This is an open-source automation framework tool. It is intended to perform integration testing. It helps to run instances of applications, and provides the opportunity to run tests from the user point of view, and also helps to write end-to-end test suites.
2. Citrus Integration Testing: This is an open-source tool, which is licensed under Apache License 2.0. This tool helps to assist in automated integration testing for data formats and message-based applications.
3. Tessy: This tool is having floating license application rights and helps to perform integration and unit testing. This tool has three major functionalities, they are Workspace, Test Data Editor (TDE), and Test Interface Editor (TIE).
Integration testing should be taken up to ensure that different modules work effectively when integrated. Enterprises following agile and DevOps should take up integration testing to ensure modules function effectively when grouped.