Testing is performed bottom-up. First, modules that use no other modules are tested, and debugged as needed. A module that depends on other modules is tested as soon as those modules pass their tests.
Testing follows a daily cycle under tight instructor control. When all modules have passed, system tests are run. For each module, the instructor issues a Test Request to the team responsible for testing that module. Test Requests are issued before 3:00 PM on working days. The testing team must respond with a Test Report that describes the failures found, if any, in the module under test. Test Reports must be received by the instructor before 11:30 AM on the working day following the receipt of the Test Request.
In the event that testing reveals a failure in a module, the instructor issues a Fix Request to the team responsible for modifying that module. Fix Requests are issued before 3:00 PM on working days. The modifying team must respond with a Fix Report that details the team's response to the Fix Request. Fix Reports must be received by the instructor before 11:30 AM on the working day following the receipt of the Fix Request.
Successful completion of the project occurs when (1) the cycle of requests and reports terminates with all Test Reports indicating no failures and (2) the resulting system passes the instructor's acceptance tests.
To illustrate the integration-testing process, consider the events generated for a single module M. Suppose that team I has been assigned to modify M's implementation and that team T has been assigned to test M. Table 2 shows a plausible request/report sequence.
Table 2: Request/Report Time-Line