• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!--
2   Copyright 2011 The Android Open Source Project
3
4   Licensed under the Apache License, Version 2.0 (the "License");
5   you may not use this file except in compliance with the License.
6   You may obtain a copy of the License at
7
8       http://www.apache.org/licenses/LICENSE-2.0
9
10   Unless required by applicable law or agreed to in writing, software
11   distributed under the License is distributed on an "AS IS" BASIS,
12   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15-->
16
17# Trade Federation Overview #
18
19TradeFederation (tradefed or TF for short) is a continuous test framework designed for running tests
20on Android devices. Its a Java application which runs on a host computer, and communicates to one or
21more Android devices using ddmlib (the library behind DDMS) over adb.
22
23## Features
24
25- modular, flexible design
26- has built in support for running many different types of Android tests: instrumentation, native/gtest, host-based JUnit, etc
27- provides reliability and recovery mechanism on top of adb
28- supports scheduling and running tests on multiple devices in parallel
29
30## Fundamentals
31The lifecycle of a test executed using TradeFederation is composed of four separate stages, designed
32around formally defined interfaces.
33
34- [Build provider](bp.html): Provides a build to test, downloading appropriate files if necessary
35- [Target preparer](tp.html): Prepares the test environment, e.g. software installation and setup
36- [Test](test.html): Executes test(s) and gathers test results
37- [Result reporter](result.html): Listens for test results, usually for the purpose of forwarding
38  test results to a repository
39
40The fundamental entity in TradeFederation is a Configuration. A Configuration is an XML file that
41declares the lifecycle components of a test.
42
43This separation of the test's lifecycle is intended to allow for reuse.  Using this design, you can
44create a Test, and then different Configurations to run it in different environments. For example,
45you could create a Configuration that will run a test on your local machine, and dump the result to
46stdout.  You could then create a second Configuration that would execute that same test, but use a
47different Result reporter to store the test results in a database.
48
49### Additional components of a configuration
50
51- [Device recovery](recovery.html): mechanism to recover device communication if lost
52- [Logger](logger.html): collects tradefed logging data
53
54A complete TradeFederation test execution, across its entire lifecycle, is referred to as an
55Invocation.
56