Problem solve Get help with specific problems with your technologies, process and projects.

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

A user asks, "What type of design documents/designs (data flow, use case) exactly are required to write integration test cases?" Mike Kelly provides an approach to this question.

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

Dig Deeper on Topics Archive