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 ダウンロード