page.title=Test Lifecycle
@jd:body

<!--
    Copyright 2013 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<p>The lifecycle of a test executed using TradeFederation is composed of four separate stages, designed
around formally defined interfaces.</p>
<ul>
<li><a href="/reference/com/android/tradefed/build/IBuildProvider.html"
  >Build Provider</a>: Provides a build to test, downloading appropriate files if necessary</li>
<li><a href="/reference/com/android/tradefed/targetprep/ITargetPreparer.html"
  >Target Preparer</a>: Prepares the test environment, possibly including software installation and
  device configuration</li>
<li><a href="/reference/com/android/tradefed/testtype/IRemoteTest.html"
  >Test</a>: Executes test(s) and gathers test results.  This may be any JUnit Test, although our
  <a href="/reference/com/android/tradefed/testtype/IRemoteTest.html"
  >IRemoteTest</a> interface is specifically designed to work well in the Trade Federation
  environment.</li>
<li><a href="/reference/com/android/tradefed/result/ITestInvocationListener.html"
  >Test Invocation Listener</a>: Listens for test results, usually for the purpose of forwarding the
  test results to a repository or displaying them to the Test Runner</li>
</ul>

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

<p>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.</p>

<p>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 <b>Command</b>.  When TF takes pairs a Command with an
<code>ITestDevice</code> and executes it, the subsequent object is known as an <b>Invocation</b>.
In short, an Invocation encompasses a complete TF test execution, across its entire lifecycle.</p>

<h3>Additional Components of a Configuration</h3>
<ul>
<li><a href="/reference/com/android/tradefed/device/IDeviceRecovery.html"
  >Device Recovery</a>: mechanism to recover device communication if lost</li>
<li><a href="/reference/com/android/tradefed/log/package-summary.html">Logger</a>: collects tradefed logging data</li>
</ul>

