Integration Testing

    Integration Testing

    INTEGRATION TESTING is a level of software testing where individual units / components are combined and tested as a group. The purpose of this level of testing is to expose faults in the interaction between integrated units. Test drivers and test stubs are used to assist in Integration Testing.

    ISTQB Definition

    • integration testing: Testing performed to expose defects in the interfaces and in the
      interactions between integrated components or systems. See also component integration
      testing, system integration testing
      .
    • component integration testing: Testing performed to expose defects in the interfaces and
      interaction between integrated components.
    • system integration testing: Testing the integration of systems and packages; testing
      interfaces to external organizations (e.g. Electronic Data Interchange, Internet).

    Analogy

    During the process of manufacturing a ballpoint pen, the cap, the body, the tail and clip, the ink cartridge and the ballpoint are produced separately and unit tested separately. When two or more units are ready, they are assembled and Integration Testing is performed. For example, whether the cap fits into the body or not.

    Method

    Any of Black Box Testing, White Box Testing and Gray Box Testing methods can be used. Normally, the method depends on your definition of ‘unit’ and what exactly you are integrating. The test can be either manual or automated.

    Tasks

    When is Integration Testing performed?

    Integration Testing is the second level of testing performed after Unit Testing and before System Testing [Caveat: See system integration testing below].

    Who performs Integration Testing?

    Unit / Component Integration Testing is usually conducted by developers and System Integration Testing by or independent testers.

    Types

    There are mainly two types of integration testing:

    Unit / Component Integration Testing

    This type of integration testing focuses on the interactions and interfaces between integrated units / components. Unit integration testing is performed after unit testing, and is generally automated. In iterative and incremental development, unit integration tests are usually part of the continuous integration process.

    System Integration Testing

    This type of integration testing focuses on the interactions and interfaces between systems (A system is a group of interacting or interrelated entities that form a unified whole). The other system that needs to be integrated with can either be internal or external (developed by someone else over which the organization has no control). Such systems are normally exposed via an Application Programming Interface (API) or a Microservice.

    System Integration testing may be done after System Testing or in parallel with it.

    Approaches

    There are basically four approaches to Integration Testing:

    Big Bang

    This is an approach to Integration Testing where all or most of the units are combined together and tested at one go. This approach is taken when the testing team receives the entire software in a bundle. So what is the difference between Big Bang Integration Testing and System Testing? Well, the former tests only the interactions between the units while the latter tests the functionalities in the entire system.

    Top Down

    This is an approach to Integration Testing where top-level units are tested first and lower level units are tested step by step after that. This approach is taken when top-down development approach is followed. Test Stubs are needed to simulate lower level units which may not be available during the initial phases.

    Bottom Up

    This is an approach to Integration Testing where bottom level units are tested first and upper-level units step by step after that. This approach is taken when bottom-up development approach is followed. Test Drivers are needed to simulate higher level units which may not be available during the initial phases.

    Sandwich/ Hybrid

    This is an approach to Integration Testing which is a combination of Top Down and Bottom Up approaches.

    Tips

    • Ensure that you have a proper Architecture / Technical Design document where interactions between each units  are clearly defined. In fact, you will not be able to perform Integration Testing without this information.
    • Ensure that you have a robust Software Configuration Management system in place. Or else, you will have a tough time tracking the right version of each unit, especially if the number of units to be integrated is many.
    • Make sure that each unit is unit tested before you start Integration Testing.
    • As far as possible, automate your tests, especially when you use the Top Down or Bottom Up approach, because regression testing is important each time you integrate a unit and manual regression testing can be tedious / inefficient.

    .

    Phewww, time for a break!

    Read a collection of some HILARIOUS SOFTWARE TESTING JOKES.

    .

    Last Updated on September 13, 2020 by STF