kentoh - Fotolia
Integration testing tools are plentiful but not as prolific as more generalized testing tools. Many software development operations either use connected backend unit tests, or fully functional workflow tests used for integration testing. The goal of integration testing is to ensure that individual components work together. In other words, integration testing verifies the workflow of a combination of components or functional attributes. It occurs after unit testing and usually simultaneously with functional and regression testing.
The sooner and more frequently integration testing occurs, the better. The following integration testing tools are available to assist organizations with creating a framework to build integration testing suites that are executed on a regular or as-needed basis.
Vector Software's VectorCAST tool performs both unit and integration testing. Each unit is tested individually, and then unit test modules are integrated into a collection and executed for integration testing results. Vector's tools operate based on the idea that unit tests execute against a single component without any dependencies or connectivity to outside systems. Integration tests are unit tests combined into logical modules and executed as a set or group to verify the functional component group works as expected.
VectorCAST is available for C++ and Ada programming languages. The tool provides a framework so developers can automate unit and integration testing together. Vector also provides a separate tool called VectorCAST/RSP that allows automated execution against a server or simulator.
LDRA offers a set of tools for integration testing for organizations requiring verification to compliance standards. The LDRA tool suite is an open and extensible platform to build integration tests, as well as provide traceability, static analysis and dynamic analysis on a large variety of target platforms. The unit and integration test tools include:
- TBrun, which is used for automating unit tests and system level integration tests.
- LDRAunit, which is a stand-alone tool providing an integrated environment for unit tests.
- TBeXtreme, which is an optional addition to TBrun or LDRAUnit, providing an automated test solution for test vector generation.
LDRA tools include a framework to generate and execute integration tests against the target hardware at the unit and system level. Tools include test generation abilities with test harnesses, test vectors and code stubs.
Citrus provides integration testing tools for simple object access protocol, representational state transfer and Java message service systems. Typically, tests are executed against the system, which interacts with Citrus over various messaging transport systems. Citrus has the ability to act on both sides of the message to simulate client, server or both request and response messages. Each test step can be set to validate both messages and data. Citrus tests are automated and are able to serve as integration tests separately, or as part of continuous integration development methodology.
- Interface mocks and simulators for both client and server side;
- automated tests for execution during continuous build cycles;
- integration testing for message transport connectivity; and
- validation of message header and body assertions.
The tools can be used to force timeouts, create error messages and set message sequencing. Additionally, messaging tests can be configured to wait for messages, trigger another message and validate the response and the formatting within it. Users can build integration test suites against data, including executing queries on content. Citrus tools also support integrated development environments, TestNG or JUnit with Eclipse, IntelliJ, IDEA and NetBeans. Citrus provides test reports and can be used as an integration test management tool with plans and coverage data.
Connected unit tests using xUnit
The xUnit framework is designed for developers to write unit or component-level testing, but it's not restricted to a single testing use. Depending on what type of system components a development team is integrating, xUnit is frequently used for integration testing or any other non-user interface testing.
An advantage of using the xUnit framework for integration testing is there is no need to connect to the database or application server, and testing is typically executed on the build server automatically. XUnit can be used with a variety of build tools to automatically execute every time code is submitted or a new build is created. Many companies combine xUnit with build-testing tools like CruiseControl or Subversion to create automated test sets for regression and integration testing in a continuous integration development system. The challenging task is to create good, thorough unit tests that exercise the individual component and develop useful integration tests to evaluate functionality with connected components.
There are a growing number of testing service companies that provide integration testing in the form of beta or user acceptance testing. Testers are located nearly anywhere using a variety of devices and platforms. The application is tested by users totally independent and disconnected from the organization -- similar to a beta testing effort. Some even offer a separate cloud-based test environment so an organization's system is not impacted and test results are controlled and separated.
Check out the trends and tools in continuous integration
Explaining integration testing