Disclosed are a framework for managing an application's relationship to
its run-time environment and an engine that accepts the framework as
input and runs the application within the environment. Aspects of the
framework and engine may be changed to suit a changing environment
without changing the application itself. By managing details of the
environment, the invention leaves developers free to focus on the
specific tasks of the application. The framework also allows the engine
to provide standardized services such as deadlock and leak detection,
progress monitoring, and results logging. As an example, the application
may be a software test suite. The invention allows the test suite to be
run single- or multi-threaded and with individual tests within the suite
running consecutively or concurrently. The invention can be parameterized
to accommodate different testing goals, such as basic variation testing,
regression testing, and stress testing, without changing the test suite
itself.