Trade Federation アーキテクチャの概要

このセクションでは、Tradefed の内部とその関係について説明します。詳細については、リンク先のサブページをご覧ください。

1. テスト設定(XML 設定)

概要

Tradefed のテスト設定は、XML 形式で記述されています。設定の構造を理解することは、テストの実行とカスタマイズに重要です。

TF 設定の構造

グローバル TF 設定

グローバル設定は、TF_GLOBAL_CONFIG 環境変数を介して Tradefed を起動したときに読み込まれる特別な Tradefed XML 設定です。ハーネス全体の動作に影響を与える Tradefed インスタンス スコープに関連するオブジェクトを読み込みます。

グローバル設定の詳細

キーストア

キーストアを使用すると、キーストアからの Tradefed に対するコマンドライン オプションのインジェクションが可能なため、コマンドラインで値を直接参照せずに済みます。キーストアからパスワードを直接取得することで、コマンドラインからパスワードを隠すために使用できます。

キーストアの詳細

2. デバイス マネージャー

デバイス マネージャーは、実行中の Tradefed のインスタンスで、デバイスの状態をトラックし続ける役割を担います。割り当てステータスやオンライン ステータスなどの面をモニターします。

3. テストコマンド スケジューラ

Tradefed のテストコマンド スケジューラは、実行するコマンドを受け取り、それをデバイスに関連付けて、テスト呼び出しを開始します。

4. ビルド プロバイダ

ビルド プロバイダは、テスト呼び出しの最初のステップです。テストの設定と実行に必要なリソース(ビルドイメージ、テスト APK など)をダウンロードしますまた、テストに渡される BuildInfo オブジェクトでも参照します。ローカルで利用可能なリソースは、BuildInfo オブジェクトでリンクできます。

5. ターゲット作成ツールとクリーナー

ターゲット作成ツールは、デバイスのフラッシュ、特定のプロパティの設定、Wi-Fi への接続など、テストするターゲットを特定の状態に設定するために取ることができるオプションのアクションを提供します。

6. テストランナー

Tradefed のテストランナーとは、実際のテスト実行を担うオブジェクトを指します。テストランナーが異なると、テスト実行の方法も異なります。たとえばインストゥルメンテーション テストランナーは、JUnit テストランナーとは大きく異なります。

7. 結果レポーター

Tradefed の結果レポーターとは、特定の宛先に結果を送信するオブジェクトを指します。各実装は通常、さまざまな結果バックエンドに特化しています。また結果レポーターは、Tradefed の結果の形式を宛先の形式に変換する役割を担います。

この柔軟な設計により、任意のテストを任意の結果の宛先に報告でき、分離された方法でより多くのテストを簡単に追加できます。

8. 指標コレクタ

指標コレクタは、テスト実行とは関連しない、Tradefed の特別なオブジェクトです。たとえばテスト開始やテスト終了など、テストのライフサイクルのさまざまな時点で情報を収集できます。コレクタはテスト自体から分離されているため、テスト自体を変更せずにポイントを交換、追加、削除できます。

9. ホスト全体の設定

このセクションでは、Tradefed インスタンス全体の実行に適用される設定について説明します。これらのオプションは、さまざまな環境(制限されたネットワーク内など)に適応するために、ハーネス全体の動作に影響を与えます。


10. その他の機能

下記のセクションでは、Tradefed オブジェクトではなく Tradefed オブジェクトの一般的な使用方法について説明します。

Tradefed シャーディング

テストコーパスが大きい場合、または実行に時間がかかる場合は、複数のデバイスにわたって分割できます。この分割をシャーディングと呼びます。このセクションでは、シャーディングの仕組みと設定方法について説明します。

シャーディングの詳細

SL4A の使用

Tradefed は Android 用スクリプト レイヤ SL4A をサポートしています。これは、プラットフォームに依存しない方法で Android API を呼び出すための自動化ツールセットです。

Tradefed での SL4A の詳細

動的 @Option ダウンロード

場合によっては、テストまたは特定のオペレーションに必要なファイルをローカルで使用できないことがあります。この機能を使用すると、Tradefed はビルド プロバイダを経由せずにリモートからそのようなファイルを取得できます。

動的 @option ダウンロード