Test Lifecycle

The lifecycle of a test executed using TradeFederation is composed of four separate stages, designed around formally defined interfaces.

  • Build Provider: Provides a build to test, downloading appropriate files if necessary
  • Target Preparer: Prepares the test environment, possibly including software installation and device configuration
  • Test: Executes test(s) and gathers test results. This may be any JUnit Test, although our IRemoteTest interface is specifically designed to work well in the Trade Federation environment.
  • Test Invocation Listener: Listens for test results, usually for the purpose of forwarding the test results to a repository or displaying them to the Test Runner

The fundamental testing entity in TF is a Configuration (config). A config is an XML file that declares the lifecycle components of a test.

This separation of the test's lifecycle is intended to allow for reuse. Using this design, the Developer can create a Test once, and then the Integrator can create different Configurations to run that Test in different environments. For example, they could create a Configuration that will run a test on a local machine and dump the result to stdout. They could then create a second Configuration that would execute that same test, but use a different Test Invocation Listener to store the test results in a database. A third Configuration might be designed run that test continuously from a test lab somewhere.

It's convenient to note here that a Configuration along with its command-line arguments (as provided by the Test Runner) is known as a Command. When TF takes pairs a Command with an ITestDevice and executes it, the subsequent object is known as an Invocation. In short, an Invocation encompasses a complete TF test execution, across its entire lifecycle.

Additional Components of a Configuration

  • Device Recovery: mechanism to recover device communication if lost
  • Logger: collects tradefed logging data