An execution engine synchronizes test suite execution to run multiple
independent operations concurrently or in parallel. The execution engine
operates by stepping through the test suite. At each step it runs the
required number of independent operations and waits for their completion.
It then checks the results, and continues to the next step of the test
suite. If at any step, the actual results are different from the expected
results, then the exact sequence that triggered the fault is known. The
sequence can be repeated when a correction is provided for the fault.
Furthermore, the execution engine allows the user to interactively step
through a test case when debugging a fault. A synchronization pattern
generator may be incorporated in the system to generate minimal numbers
of repetitions of test cases to guarantee varying degrees of interaction
coverage.