このセクションでは、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 を呼び出すための自動化ツールセットです。
動的 @Option ダウンロード
場合によっては、テストまたは特定のオペレーションに必要なファイルをローカルで使用できないことがあります。この機能を使用すると、Tradefed はビルド プロバイダを経由せずにリモートの場所からそのようなファイルを取得できます。