トレードフェッドアーキテクチャ

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

テスト構成

Tradefed のテスト構成は XML 形式で記述されます。構成の構造を理解することは、テストの実行とカスタマイズの鍵となります。

TF 構成の構造

グローバル TF 構成

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

グローバル構成の詳細

キーストア

キーストアでは、コマンド ラインで値を直接参照することを避けるために、キーストアからのコマンド ライン オプションを Tradefed に注入できます。これを使用すると、キーストアからパスワードを直接取得することで、コマンド ラインからパスワードを隠すことができます。

キーストアの詳細

デバイスマネージャ

デバイス マネージャーは、Tradefed の実行インスタンス上のデバイスの状態を追跡する責任があります。割り当て状況やオンライン状況などを監視します。

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

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

ビルドプロバイダー

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

ターゲットの準備とクリーナー

ターゲット プリペアラーは、デバイスのフラッシュ、特定のプロパティの設定、Wi-Fi への接続など、テスト対象のターゲットを特定の状態に構成するために実行できるオプションのアクションを提供します。

テストランナー

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

結果報告者

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

この柔軟な設計により、あらゆるテストを任意の結果の宛先にレポートし、分離された方法でさらにテストを簡単に追加できます。

メトリクスコレクター

メトリクス コレクターは Tradefed の特別なオブジェクトであり、テストの実行と直交します。これにより、テスト ライフサイクルのさまざまな時点 (テストの開始、テストの終了など) で情報を収集できます。コレクターはテスト自体から切り離されているため、テスト自体を変更することなくポイントを交換、追加、削除できます。

ホスト全体のセットアップ

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

追加機能

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

トレードフェッドシャーディング

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

シャーディングの詳細

SL4Aの使用

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

Tradefed の詳細を含む SL4A

動的 @option ダウンロード

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

動的 @option ダウンロード