What type of designs are needed to write integration test cases?

What type of designs are needed to write integration test cases?

As far as I know integration testing is a logical extension of unit testing. In its simplest form, two units that have already been tested are combined into a component. My question is: What type of design documents/designs (data flow, use case) exactly are required to write integration test cases?

    Requires Free Membership to View

    When you register, you'll receive targeted emails designed to keep you informed of the most relevant information on Agile development, application security, testing & QA, software requirements, and more.

    Hannah Smalltree, Editorial Director

    By submitting your registration information to SearchSoftwareQuality.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchSoftwareQuality.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

The answer to this depends on the goals of the integration testing, the scope of the components being integrated, and the complexity of the technology and problem being solved. Integrating two Web services that pass a single piece of information between them is different than two real-time systems that stream data in both directions. On top of the question of scope, what's "required" is often dictated by the project context, not necessarily the type of testing taking place. That is to say, the exact same testing problem at two different companies (say a startup and a government project) will require entirely different sets of documentation as evidence that proper testing took place, or possibly that testing can even begin.

To answer this, I'll take a different approach. Instead, let me tell you what I look for when I'm doing integration testing. I'm often looking for disagreements between the parts. To be able to test for those disagreements, it's often helpful to understand what's supposed to happen. There are a number of ways I can develop my understanding of what the various components should be doing.

I can learn about expectations for the interaction based on:

  • my understanding of the business problem trying to be solved.
  • conversations about the functionality with other people on the project team.
  • design documents for the components, the integration or the system in general.
  • mapping documents or data-flow diagrams that show how information is moved through the components and what transformations take place.
  • state diagrams that show what events take place and when.
  • database, XML and other data schemas used in the process.
  • other testing I've done or reviewed (at the unit level or system level).
  • other similar types of integration I've worked with on past projects.
  • and the very last integration test case I've executed (because I'm always thinking of new tests as I'm executing tests).

I suspect I even missed a couple of things I do to come up with test case ideas when I'm doing integration testing. The point is, there are a number of ways you can come up with your integration test cases, only some of them are requirements or design documents. Your project development methodology will likely dictate what's required, but that doesn't mean it's either sufficient or useful to actually accomplish the testing you'll be doing -- it does typically indicate that in the past those documents have been found helpful when solving integration testing problems.

This was first published in February 2009