  It is imperative for testing to determine if the components within
large-scale software systems operate functionally. Interaction testing involves
designing a suite of tests, which guarantees to detect a fault if one exists
among a small number of components interacting together. The cost of this
testing is typically modeled by the number of tests, and thus much effort has
been taken in reducing this number. Here, we incorporate redundancy into the
model, which allows for testing in non-deterministic environments. Existing
algorithms for constructing these test suites usually involve one "fast"
algorithm for generating most of the tests, and another "slower" algorithm to
"complete" the test suite. We employ a genetic algorithm that generalizes these
approaches that also incorporates redundancy by increasing the number of
algorithms chosen, which we call "stages." By increasing the number of stages,
we show that not only can the number of tests be reduced compared to existing
techniques, but the computational time in generating them is also greatly
reduced.
