8 minutes
Integration testing is a software-testing approach in which various application components or modules are joined and tested to evaluate how well they work together. Integration testing seeks to help ensure that these assembled parts can communicate with each other and interact successfully.
The concept of integration testing raises several questions. The first is whether integration testing is necessary. The answer to that depends at least partially on the company in question. Smaller organizations with limited public interaction can be exempt from the need for integration testing.
However, for any company that works extensively with the public, integration testing becomes increasingly crucial. And if it’s a tech company that engages in releasing new software applications and tools, integration testing is even more vital.
An adage holds that a person never gets a second chance at making a good first impression. The same concept holds true for contemporary companies. Most of them are engaged in trying desperately to attract users, turn them into regular subscribers or consumers and maintain a successful and lucrative ongoing relationship with them. Such companies can’t afford to make many missteps when unveiling their blockbuster new programs or apps.
Consumers expect the technology in question to work as advertised, from its installation through how it interacts with other programs and systems. For this reason, for many organizations, integration testing is a necessary step of doing business.
In short, the goal of integration testing is to make sure that parts and systems work together dependably. But from a PR perspective, another goal of integration testing is to help protect the organization’s identity as a responsible company capable of doing business reliably in a modern context.
Industry newsletter
Stay up to date on the most important—and intriguing—industry trends on AI, automation, data and beyond with the Think newsletter. See the IBM Privacy Statement.
Your subscription will be delivered in English. You will find an unsubscribe link in every newsletter. You can manage your subscriptions or unsubscribe here. Refer to our IBM Privacy Statement for more information.
The term integration testing was developed over time to describe certain “waterfall” methodologies. In earlier times, software modules and related projects were created in a vacuum, leaving QA teams the considerable chore of testing pieces of the codebase individually and analyzing those test results before introducing them into a software system.
Integration testing is done through the creation and evaluation of test cases. The first phase involves successfully identifying integration points, which are the areas within an application where the different modules interact. When the integration points have been established, test cases are designed around them. These test cases are created to show how the integration points operate, depending on various input scenarios, real-world situations and anticipated outcomes.
With the data gleaned from test coverage, project stakeholders can make the necessary adjustments to the codebase, where all project data is stored.
Test cases used in integration testing help developers zero in on several specific areas of operation:
Data that passes through a system takes a journey, moving from its source to its destination. That information receives processing as it moves through the different processing steps and components. This process of motion is known as data flow.
Key questions: How well does the data flow between components? Are there any potential impediments that need to be identified and corrected?
Just as most effective teams require leadership, there is a “higher intelligence” that guides the smooth operation and interaction between software components. This management process is known as interface coordination.
Key questions: Are there any foreseeable problems in the accommodation between the interfaces that exist between modules? In other words, do these interfaces match up properly?
Communication protocols decide how devices share data. Such protocols establish rules for data transference and determine how messages are structured. Communication protocols also specify how systems should correct themselves in times of errors.
Key questions: Can integration testing reveal problems with the synchronization between individual units? What measures should be put into place to help ensure secure data transmissions?
Another aspect of integration testing that escalates its overall complexity involves dependencies, which are relationships that exist between modules and/or components. Typical dependencies require that for one component to function, a related component must first operate as needed. Such dependencies must be considered when attempting to sort out potential problems in program execution.
There’s a standard sequence to the individual testing steps conducted when performing integration testing because such an ordered sequence gives developers a way to systematically evaluate different pieces of code in a structured fashion. The testing sequence typically begins with the checking of the simplest, individual components first—correcting bugs in lower-level modules before they negatively impact operation later. Then, the testing moves on to more elaborate integrations and evaluates their performance.
In addition to early detection of bugs, the usual testing sequence uses logical progression to mimic the code’s data flow, making sure that component interactions are tested in the correct order. Further, the testing sequence assigns a lower priority to less critical tests concerning low-level modules, allowing developers to dedicate their focus to the most essential operations.
In a traditional testing sequence, testing formats are examined in the following order:
Integration testing is not the initial testing step in this standard sequence. Integration testing appears where it does in the process because the testing of interactions between individual components has already been accomplished through unit testing. The next level, system testing, moves the sense of scale-out even further to give testers a more macro view of an entire system and how well it all works together.
There are numerous types of integration testing techniques, but these are the most used to evaluate software systems.
The top-down approach is one of the two main types of incremental integration testing. It focuses on the main module and its workings before then evaluating the submodules and subroutines. One of the strongest attributes of this approach is that it can be used early in the process—even before the lower-level modules have been fully identified. Testers can use placeholders (called stubs) as a substitute for low-level modules.
Another primary example of integration testing is bottom-up integration testing, which switches the order of the testing sequence. In the bottom-up approach, the submodules and subroutines are the first to be evaluated. Then, this approach moves on to test the main module. And just as top-down testing uses stubs as placeholders when needed, bottom-up integration testing uses temporary modules called drivers as substitutes for high-level components that haven’t yet been identified.
Mixed integration (sometimes called sandwiched integration) combines the top-down and bottom-up methods. The main advantage of mixed integration is how it overcomes the enforced process sequence that limits both top-down and bottom-up testing (in directly opposite ways). With mixed integration, the testing can begin with either the main module or with the submodules and subroutines, as user needs dictate.
Another key way to conduct integration testing is through big bang integration testing. Here, all the individual units, components and modules present within a system are integrated and tested together at one time, as if it were a single unit. Big bang testing can provide a quick answer when the system works with all its various parts.
However, this form of testing is limited. If the process reveals that the system doesn’t work as expected, big bang testing can’t reveal which individual parts are failing to work in unison.
The following are some popular integration testing methods. Because they all might be the correct methodology for a software company—depending on its needs—they are listed here alphabetically:
Here again, this marketplace niche is served by numerous integration testing tools and frameworks. Here are some of the most popular:
Whether your company needs call for front-end or back-end evaluation and remediation, integration testing offers the means to evaluate the success of the connections that are now vitally important to making businesses operate with peak efficiency and maximized profitability.
As previously mentioned, there’s a considerable number of different integration testing methods, as software creators work to identify and develop an integration testing method for every possible need and all relevant configurations. And it’s working, because most software development companies understand the need for such testing. Some estimates assess that roughly 70% of businesses engaged in DevOps work are already using some form of integration testing.
So, which is the right integration tool for your business? Thanks to a receptive marketplace, it’s likely you can find one that capably suits your company needs. To figure out exactly what those needs are, we suggest you turn to one more famous old saying: “Know thyself.” As sayings go, it’s still useful advice—even for a postmodern world.
A fully managed, single-tenant service for developing and delivering Java applications.
Use DevOps software and tools to build, deploy and manage cloud-native apps across multiple devices and environments.
Cloud application development means building once, iterating rapidly and deploying anywhere.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com, openliberty.io