What is System Integration Testing In Software Testing: In integration testing separate units and combined together and tested as a group. here the main goal of doing integration testing is when different modules are integrated they are working as expected and also we confirm that the units are working fine individually also there are no issues when they are integrated.
Normally integration testing is carried out after performing unit testing. once we have tested each unit then we combine those tested units and start doing integration testing. we have to understand one thing that integration testing is not happening at the end of the cycle, it is happening parallel with the development. so one major challenge that comes doing integration testing is that some modules are not developed during the time of integration.
What is Integration Testing?
Integration Testing is a web development terminology used to test the software modules. Software is subdivided into multiple modules that different web developers code. These web developers vary in expertise, experience, and subject specialization. When modules are separately developed, integration testing helps to check any potential deficiencies. Integration testing paves the way for system testing.
Terms Used For Integration Testing
- Integration and Testing (I & T)
- String Testing
- Thread Testing
Why Might You Want Integration Testing?
Integration is the second phase of testing combinations of different software components and their interaction. The prime objective of I & T is to find out the flaws and defects by integrating various components.
For example, You are interacting with an E-Commerce app. You wish to buy your favorite T-shirt. Then you find it out through the products and add to the cart. Now you have to pay the required amount with an integrated payment gateway. You get a purchase message like Thanks for purchasing with us.
This is a sequence of actions controlled by different modules. Integration testing performs checks of components to keep them integrated and functional.
Advantages of integration testing
- Because of integration testing, we can sure that the integrated modules are working properly.
- It can be started once the unit module is tested and available. we need not wait until all modules are developed because in the place of undeveloped modules we can use stub and drivers.
- it helps in detecting defects related to the interface.
- Minimal the risk or failures
- verify the functional and non-functional behavior of the interface as expected in design and functional documents.
- to restrict defects from escaping to higher test levels.
Different Types Integration Testing Approaches
There are different approaches that are present in integration testing but out of the few are very popular like Big bang approach, top-down approach, bottom-up approach, incremental approach. out of all these approaches, the choice depends on various factors like cost, the complexity of the application. let us discuss in details of popular approaches for better understanding them:
Big Bang Approach: it is the simplest model of integration testing. in this approach once all modules are developed and tested then all modules are combined and tested together as a group. this approach is good when your project is small because in a larger project it will be very much difficult to find out the defect from a large number of unit modules. so reported error debugging in this approach is very much costly.
Advantages of Big bang approach
- when your testing for small project or product then it is good to use.
- In this approach, you have to wait until all modules are developed and tested then only you can go for integration, so here there are more chances of delay.
- You can’t test high-risk modules separately because all modules are tested at once.
Bottom-up Approach: as the name suggests, here the innermost module will test first after that it gradually moves up to the upper modules of the application. this integration will continue until you integrate all modules and tests as a single unit. if during the integration time being if the higher module is not developed then you can use drivers to simulate to the higher levels.
As the integration process started from the innermost module so if there is any defect in those modules then that can found in the early stage so we can take necessary action to fix those defects.
- if some higher module is not developed then in that time we are using simulators like driver and we proceed for further integration. so if there is any defect is present in the not developed modules which we called driver then during the final integration we may get those defects at the end.
- it is required to create the drivers for all the levels except the top module.
Top-down approach: In this approach, the integration process will start from the topmost module and after that gradually progress towards the lower modules. the topmost module is first tested in isolation and after that lower modules are integrated and this process will continue until all lower modules are integrated and tested.
During integration from top to down modules if any lower module is not developed then we can use simulators called “stubs”.
When we are Doing a top-down approach or bottom-up approach then we are using some simulators that are called stubs and drivers.
Entry and Exit Criteria of Integration Testing
- Before start integration, the unit test should be completed for modules.
- High priority and critical bugs must be fixed and closed.
- All modules should be completed and integrated successfully.
- The test environment for integration testing must be set up.
- Successfully testing the integrated application.
- all high priority bugs must be closed and fixed.
How to Implement the Integration Testing?
Integration depends upon the teams and scenarios in a DevOps environment. The testing team may consist of designers, developers, testers, or any other members assigned by the management.
Integration testing falls under the validation category. Its primary objective is to check the segments of a module. The linking, connection, and communication between the components is the principal target of this testing.
Sequence of Testing
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
Implementation of integration testing is done through the following steps.
There are two types of planning for integration testing.
- Project Planning
- Individual Planning
Once the client submits his project requirements, the management team analyzes them thoroughly. The management also decides which types of testing are to be carried during the project progress. However, it is dependent on the project, team, and the situation.
If the management adds the integration testing in the project outline, then individual planning is implemented. It includes the following.
- Tools to be used
- Time of execution
- The objective of testing
After the completion of the plan testing team executes the integration testing. All the team members perform their part to implement the integration testing plan successfully.
Execution of integration testing follows.
- Tests to be performed
- Results obtained
- Defects during implementation
Data Log and Analysis
The team logs all the data during execution. It helps in analyzing the errors and performance during the integration of the modules.
Defects Rectification and Retesting
The responsible individuals rectify the potential defects faced during integration testing. Then testing team retests modules and all infected components for successful integration.
Resources for Integration Testing
Numerous resources and tools help the testing team to execute their testing plans. Below are some of the most used tools.
Rational Integration Tester
RIT (Rational Integration Tester) tool eliminates the bugs in integration testing.
- It furnishes a scripting-free environment with a reduction of failure risks.
- RIT helps in creating code-free and reusable stubs.
- It overcomes the development and test cycle time during the early stages of the testing.
Protractor is E2E testing an open-source automation framework.
- It is favored for Angular and AngularJS based applications.
- Its WebdriverJS applies particular drivers and a native browser for application interaction validity.
- Protractor is mainly designed for integration testing and to run the instances of the applications.
- It encompasses the user’s point of view while conducting tests.
- It also aids in writing end-to-end test suites.
Citrus is a java written test framework. It is used in the integration testing of message-based EAI applications.
- Citrus renders robust validation mechanisms for XML message contents.
- It also permits building complex testing logic.
- It supports sending and receiving messages, error simulation, message timeout simulation, variable definitions, automatic retries, and database validation, with many other features.
- Citrus is a low-cost and open-source testing solution.
- Tessy’s CTE(Classification Tree Editor) serves teams in specifying the test cases.
- Tessy supports C and C++ programming languages.
- It helps in providing code coverage and generating the test reports of tests carried.
- Tessy includes Test Interface Editor, Test Data Editor, and Workspace.
- It helps analyze the interface and determine the used variable.
LDRA or Liverpool Data Research Associates helps automate the code analysis and check the compliance standards.TBrun and LDRAunit are popular and most used tools.
- LDRA is an open-source testing platform that helps in building integration tests and the provision of dynamic analysis.
- TBrun is used in conducting the integration and unit testing.
- LDRAunit assures the integrated environment for unit testing.
What are Stubs and Drivers?
Dummy software programs are required to accomplish the testing activity.
A stub is generally the software called by the module under testing, while Driver is the software that calls or responds to the module in integration testing.
These temporary software act as substitutes for the missing models. Which are not in the development program but necessary for module functioning. Just the data simulation occurs while calling from the under-test module.
Why is the Integration Testing Plan Mandatory?
The integration testing plan carries approaches and methods of integration testing. It is clear for the testing team to assume their roles and responsibilities.
Prerequisites of integration testing are must to address before execution. It also aids in establishing a healthy testing environment. The integration testing plan also illustrates the risks and the mitigation.
Problems Integration Testing Helps to Solve
- Integration testing enables the simultaneous testing of different modules.
- All the modules are tested and rectified before going for system testing.
- Integration testing does not demand the completion of the whole software/application.
- It paves the way towards successful project completion and submission.
Common Pitfalls of Integration Testing
- Database, platform, and environment badly affect the integration testing.
- There are many changes followed by integration testing for the best client experience.
- Integration of two components developed by two different developers is a big challenge. People with different mindsets and approaches design a component, and its synchronization is not a piece of cake.
Difference Between Unit Testing and Integration Testing
Unit testing is the first which is performed in the Software Testing Life Cycle. Unit testing is performed by the specific developer who is responsible for a dedicated component or module development. Unit testing was done to check the functionality of the unit code.
Integration testing is teamwork. All the separately developed modules are integrated and tested at the same time. This testing is done before system testing. The prime objective of integration testing to check any potential flaws or problems in the software/app modules after the integration.
System Testing and Integration Testing
Integration testing consists of two or more modules of a software or application, while system testing is complete software testing before final submission.
Best Practices of Integration Testing
- Prepare the test plan for the required testing.
- Set up the test cases and scripts
- Execution of test cases and evaluation of defects data
- Data tracking, addressing the defects and retesting.
- Keep this going till the successful integration of all modules.
- Settle the testing strategy and test data before execution
- Critical components and modules require more attention. Highlight the key fields to focus on and then execute testing.
- Interface design verification, database, external hardware, and software application are the core-centered testing areas.
- Test data is vital to sort out the faults. Data examination is also essential.
- Execute the integration after the unit testing. It helps to avoid any complexity during the integration testing.
- It is better to log your activity or progress. This helps in identifying failure reasons and ways to address them.
- A testing plan is beneficial for the testing team, and the project manager addresses things in a sequence.
Please write comments if you find anything incorrect, or you want to share more information about this topic discussed above then you can write in the comment box.