2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
Tradefed アーキテクチャ
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このセクションでは、Tradefed の内部とその関係について説明します。詳細については、リンク先のサブページをご覧ください。
テスト構成
Tradefed のテスト構成は、XML 形式で記述されています。構成の構造を理解することは、テストの実行とカスタマイズに重要です。
TF 構成の構造
グローバル TF 構成
グローバル構成ファイルは、TF_GLOBAL_CONFIG
環境変数を介して Tradefed を起動したときに読み込まれる特別な Tradefed XML 構成です。ハーネス全体の動作に影響を与える Tradefed インスタンス スコープに関連するオブジェクトを読み込みます。
グローバル構成の詳細
キーストア
キーストアを使用すると、キーストアから Tradefed にコマンドライン オプションをインジェクションできるため、コマンドラインで値を直接参照せずに済みます。パスワードをキーストアから直接取得することで、パスワードをコマンドラインで非表示にできます。
キーストアの詳細
デバイス マネージャー
デバイス マネージャーは、実行中の Tradefed のインスタンスで、デバイスの状態をトラックし続ける役割を担います。割り当てステータスやオンライン ステータスなどの状況をモニタリングします。
テストコマンド スケジューラ
Tradefed のテストコマンド スケジューラは、実行するコマンドを受け取り、それをデバイスに関連付けて、テスト呼び出しを開始します。
ビルド プロバイダ
ビルド プロバイダは、テスト呼び出しの最初のステップです。テストのセットアップと実行に必要なリソース(ビルドイメージ、テスト APK など)をダウンロードします。また、テストに渡される BuildInfo
オブジェクトでも参照します。ローカルで利用可能なリソースは、BuildInfo
オブジェクトでもリンクできます。
ターゲット作成ツールとクリーナー
ターゲット作成ツールは、デバイスのフラッシュ、特定のプロパティの設定、Wi-Fi への接続など、テストするターゲットを特定の状態に設定するために実施できるアクションをオプションとして提供します。
テストランナー
Tradefed のテストランナーとは、実際のテスト実行を担うオブジェクトを指します。テストランナーが異なると、テスト実行の方法も異なります。たとえば、インストルメンテーション テストランナーは、JUnit テストランナーとは大きく異なります。
結果レポーター
Tradefed の結果レポーターとは、特定の宛先に結果を送信するオブジェクトを指します。各実装は通常、さまざまな結果バックエンドに特化しています。また結果レポーターは、Tradefed の結果の形式を宛先の形式に変換する役割も担います。
この柔軟な設計により、任意のテストを任意の結果の宛先に報告でき、さまざまなテストを相互に分離した状態で簡単に追加できます。
指標コレクタ
指標コレクタとは Tradefed の特別なオブジェクトで、テスト実行と同期して実行されます。たとえばテスト開始やテスト終了など、テストのライフサイクルのさまざまな時点で情報を収集できます。コレクタはテスト自体から分離されているため、テスト自体を変更せずにポイントを交換、追加、削除できます。
ホスト全体のセットアップ
このセクションでは、Tradefed インスタンス全体の実行に適用される設定について説明します。これらのオプションは、さまざまな環境(制限されたネットワーク内など)に適応できるよう、ハーネス全体の動作に影響を及ぼします。
その他の機能
下記のセクションでは、Tradefed オブジェクトではなく Tradefed の一般的な使用方法について説明します。
Tradefed シャーディング
テストコーパスが大きい場合、または実行に時間がかかる場合は、複数のデバイスにわたって分割できます。この分割をシャーディングと呼びます。このセクションでは、シャーディングの仕組みと設定方法について説明します。
シャーディングの詳細
SL4A の使用
Tradefed は Android 用スクリプト レイヤ SL4A をサポートしています。これは、プラットフォームに依存しない方法で Android API を呼び出すための自動化ツールセットです。
Tradefed での SL4A の詳細
動的 @Option ダウンロード
場合によっては、テストまたは特定のオペレーションに必要なファイルをローカルで使用できないことがあります。この機能を使用すると、Tradefed はビルド プロバイダを経由せずにリモートの場所からそのようなファイルを取得できます。
動的 @Option ダウンロード
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Tradefed architecture\n\nThis section describes the internals of Tradefed and their relationships. See\nthe linked subpages for more details.\n\nTest configurations\n-------------------\n\nTest configurations in Tradefed are described in an XML format. Understanding\nthe structure of the configuration is key to running and customizing tests.\n\n### Structure of TF configurations\n\n- [High-level structure](/docs/core/tests/tradefed/architecture/xml-config)\n- [Templates and includes](/docs/core/tests/tradefed/architecture/xml-config/template-include)\n- [Configuration object](/docs/core/tests/tradefed/architecture/xml-config/config-object)\n\n### Global TF configurations\n\nA Global Configuration file is a special Tradefed XML configuration that is\nloaded when Tradefed starts via the `TF_GLOBAL_CONFIG` environment variable. It\nloads objects related to the Tradefed instance scope that will affect the\noverall harness behavior.\n\n[Global Configuration details](/docs/core/tests/tradefed/architecture/advanced/global-config)\n\n### Keystore\n\nKeystore allows injection of command line options to Tradefed coming from a\nkeystore in order to avoid referencing the value directly on the command line.\nThis can be used to hide passwords from the command line by retrieve passwords\nfrom the keystore directly.\n\n[Keystore details](/docs/core/tests/tradefed/architecture/advanced/keystore)\n\nDevice manager\n--------------\n\nThe device manager is responsible for keeping track of the state of devices on a\nrunning instance of Tradefed. Aspects such as allocation status and online\nstatus are monitored.\n\n- [Device states](/docs/core/tests/tradefed/architecture/device-manager)\n- [Device allocation](/docs/core/tests/tradefed/architecture/device-manager/device-allocation)\n- [Device detection sequence](/docs/core/tests/tradefed/architecture/device-manager/device-detection)\n\nTest command scheduler\n----------------------\n\nThe test command scheduler in Tradefed takes commands to run, associates them\nwith devices, and starts a test invocation.\n\n- [Test command life cycle](/docs/core/tests/tradefed/architecture/advanced/command-scheduler)\n\nBuild provider\n--------------\n\nBuild provider is the first step of any test invocation. It downloads resources\nneeded to set up and run the tests (build images, test APKs, and more.). It also\nreferences them in a `BuildInfo` object that will be passed to the test. Locally\navailable resources can also be linked in the `BuildInfo` object.\n\n- [Build provider details](/docs/core/tests/tradefed/architecture/build-provider)\n- [Build info details](/docs/core/tests/tradefed/architecture/build-provider/build-info)\n\nTarget preparer and cleaner\n---------------------------\n\nTarget preparer offers optional actions that can be taken to configure the\ntarget under test into a certain state, for example flashing the device, setting\ncertain properties, and connecting to Wi-Fi.\n\n- [Add a new target preparer/cleaner](/docs/core/tests/tradefed/architecture/target-preparer)\n- [Add a new multi target preparer](/docs/core/tests/tradefed/architecture/target-preparer/multi-target)\n\nTest runner\n-----------\n\nA test runner in Tradefed refers to the object responsible for the actual test\nexecution. Different test runners drive test execution in different ways; for\nexample, an instrumentation test runner will be very different from a JUnit test\nrunner.\n\n- [Test runner structure](/docs/core/tests/tradefed/architecture/advanced/test-runner)\n\nResult reporter\n---------------\n\nResult reporter in Tradefed refers to the object that will send the results to a\nparticular destination. Each implementation is usually specialized for different\nresult back-ends. And the result reporter is in charge of converting the\nTradefed results format into the destination format.\n\nThis flexible design allows any test to report to any of the results\ndestinations and to easily have more tests added in an isolated way.\n\n- [Add a result reporter](/docs/core/tests/tradefed/architecture/result-reporter)\n- [Result reporter and logs](/docs/core/tests/tradefed/architecture/result-reporter/log-reporter)\n- [Result reporter summary](/docs/core/tests/tradefed/architecture/result-reporter/summary)\n\nMetrics collector\n-----------------\n\nMetrics collector is a special object in Tradefed, orthogonal to the test\nexecution. It allows collection of information at different points of the test\nlifecycle (for example, test start, test end). Since the collector is decoupled\nfrom the test itself, the points can be swapped, added, and removed without\nhaving to change the test itself.\n\n- [Host-driven metrics collectors](/docs/core/tests/tradefed/architecture/metrics-collector)\n- [Device side metrics collectors](/docs/core/tests/tradefed/architecture/metrics-collector/device-collector)\n\nHost-wide setup\n---------------\n\nThis section describes setups that are applicable to a full Tradefed instance's\nrunning. These options affect the behavior of the harness as a whole in order to\nadapt to different environments, for example being in a restricted network.\n\n- [Global Configuration](/docs/core/tests/tradefed/architecture/advanced/global-config)\n- [Host options](/docs/core/tests/tradefed/architecture/host-setup/host-options)\n\nAdditional features\n-------------------\n\nThe following sections describe general usage of Tradefed rather than Tradefed\nobjects.\n\n### Tradefed sharding\n\nWhen the test corpus is large or takes a long time to execute, it's possible to\nsplit it across several devices. We refer to this split as *sharding*. This\nsection describes how sharding works and how it is configured.\n\n[Sharding details](/docs/core/tests/tradefed/architecture/advanced/sharding)\n\n### Using SL4A\n\nTradefed supports the scripting layer for Android, SL4A; this is an automation\ntoolset for calling Android APIs in a platform-independent manner.\n\n[SL4A with Tradefed details](/docs/core/tests/tradefed/architecture/advanced/scripting-sl4a)\n\n### Dynamic @option download\n\nIn some cases, the files needed by a test or some particular operation are not\navailable locally. This feature allows Tradefed to get these files from a remote\nlocation without going through a build provider.\n\n[Dynamic @option download](/docs/core/tests/tradefed/architecture/advanced/protocols-global-config)"]]