What is System Integration Testing?

What is System Integration Testing In Software Testing: In integration testing, separate units are 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 we also 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, we combine those tested units and start doing integration testing. we have to understand one thing integration testing is not happening at the end of the cycle, and it is happening parallel with the development. so one major challenge with 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 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 through the products and add it to the cart. You must now 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 ensure 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 we can use stubs and drivers in the place of undeveloped modules.
  • It helps detect defects related to the interface.

Objectives

  • 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 of Integration Testing Approaches

Different approaches are present in integration testing, but few are very popular, like the Big Bang, the top-down, the bottom-up, and the incremental approaches. out of all these approaches, the choice depends on various factors like cost and the complexity of the application. let us discuss in detail 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 as a group. this approach is good when your project is small because it will be very difficult to find the defect from a large number of unit modules in a larger project. so reported error debugging in this approach is very costly.

Advantages of the Big Bang approach

  • when testing for a small project or product, it is good to use.

Disadvantages

  • In this approach, you have to wait until all modules are developed and tested; only then can you go for integration, so 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, the innermost module will be tested 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 the higher levels.

Advantages

As the integration process starts from the innermost module, if there is any defect in those modules, then that can be found early so we can take necessary action to fix those defects.

Disadvantages

  • if some higher module is not developed, then at that time, we are using simulators like drivers and proceed for further integration. so if any defect is present in the non-developed modules, which we call 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. This process will continue until all lower modules are integrated and tested.

Stubs Meaning

During integration from top to down modules, if any lower module is not developed, we can use simulators called “stubs”.

When we are doing a top-down approach or bottom-up approach, we use some simulators that are called stubs and drivers.

Entry and Exit Criteria of Integration Testing

Entry Criteria

  • Before starting 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.

Exit Criteria

  • 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.

  • Planning
  • Execution/Coding
  • Validation

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.

Planning

There are two types of planning for integration testing.

  1. Project Planning
  2. Individual Planning

Project 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 out during the project progress. However, it depends on the project, the team, and the situation.

Individual Planning

Individual planning is implemented if the management adds integration testing to the project outline. It includes the following.

  •  Tools to be used 
  • Time of execution
  • Resources 
  • Team
  • The objective of testing

Execution

After the completion of the plan, the testing team executes the integration testing. All the team members performed 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 analyze 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, the 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
  • Citrus
  • Protractor
  • TESSY
  • LDRA

Rational Integration Tester

The 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

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.
  • The 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

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, database validation, and many other features.
  • Citrus is a low-cost and open-source testing solution.

Tessy

Tessy helps identify the application’s code coverage. This software testing tool assists in executing integration and unit testing of embedded software.

  • Tessy’s CTE(Classification Tree Editor) serves teams in specifying the test cases.
  • Tessy supports C and C++ programming languages. 
  • It helps provide code coverage and generate test reports of tests carried out.
  • Tessy includes Test Interface Editor, Test Data Editor, and Workspace. 
  • It helps analyze the interface and determine the used variable.

LDRA

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 build integration tests and provides dynamic analysis.
  • TBrun is used to conduct 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 a Driver is the software that calls or responds to the module in integration testing.

These temporary software act as substitutes for the missing models. These are not in the development program but are necessary for module functioning. The data simulation occurs only 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 a 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 toward 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; its synchronization is not a piece of cake.

Difference Between Unit Testing and Integration Testing

Unit 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

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.

I love open-source technologies and am very passionate about software development. I like to share my knowledge with others, especially on technology that's why I have given all the examples as simple as possible to understand for beginners. All the code posted on my blog is developed, compiled, and tested in my development environment. If you find any mistakes or bugs, Please drop an email to softwaretestingo.com@gmail.com, or You can join me on Linkedin.

Leave a Comment