AndroidTest.xml の構造

モジュール設定の全体的な構造は、通常の Tradefed XML 設定と同様のパターンに従いますが、スイートの一部として実行されるため、制限がいくつかあります。

許可されているタグのリスト

AndroidTest.xml など、モジュール設定に含めることができる XML タグは、target_preparermulti_target_preparertestmetrics_collector のみです。

少ないように見えますが、テスト モジュールの設定ニーズと実行するテストを正確に定義できます。

注: さまざまなタグについて復習が必要な場合は、Tradefed XML 設定をご覧ください。

build_providerresult_reporter などのオブジェクトは、モジュール設定内から実行しようとすると ConfigurationException が発生します。これは、これらのオブジェクトがモジュール内から実際になんらかのタスクを実施するという想定を回避するためです。

モジュール設定の例

<configuration description="Config for CTS Gesture test cases">
    <option name="test-suite-tag" value="cts" />
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsGestureTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.gesture.cts" />
        <option name="runtime-hint" value="10m50s" />
    </test>
</configuration>

この設定は、CtsGestureTestCases.apk のインストールが必要で、android.gesture.cts パッケージに対して計測を実行するテストについて記述しています。

インクルージョン タグの <include><template-include>

モジュール構成での <include><template-include> の使用は推奨されません。想定どおりに機能する保証はありません。

metrics_collector タグの特殊なケース

metrics_collector は許可されていますが、FilePullerLogCollector クラスに限定されます。これはモジュール用に pull してログに記録する特定のファイルまたはディレクトリを指定するためです。これは、ログを特定のロケーションに残し、そのログを自動的に復元する場合に便利です。

設定の例

<configuration description="Config for CTS UI Rendering test cases">
    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
        <option name="cleanup-apks" value="true" />
        <option name="test-file-name" value="CtsUiRenderingTestCases.apk" />
    </target_preparer>
    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
        <option name="package" value="android.uirendering.cts" />
        <option name="runtime-hint" value="11m55s" />
        <option name="runner" value="android.uirendering.cts.runner.UiRenderingRunner" />
        <option name="isolated-storage" value="false" />
    </test>

    <!-- Collect the files in the dump directory for debugging -->
    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
        <option name="directory-keys" value="/sdcard/UiRenderingCaptures" />
        <option name="collect-on-run-ended-only" value="true" />
    </metrics_collector>
</configuration>

ビルド情報またはダウンロードについて

許可されたタグの定義により、モジュールがビルド情報を取得しないという誤った印象を受けるかもしれませんが、これは誤りです

ビルド情報はスイートレベルの設定から提供され、スイートのすべてのモジュールで共有されます。これにより、スイート全体に対する 1 つの設定だけで、スイート内の各モジュールを実行できます。

たとえば、互換性テストスイート(CTS)モジュールごとにデバイス情報やタイプなどを個別にクエリするのではなく、CTS スイートレベルの設定(cts.xml)が一度だけクエリし、各モジュールは、リクエストした場合にその情報を受け取ります。

モジュール内のオブジェクトがビルド情報を受け取るには、通常の Tradefed 設定と同じように、IBuildReceiver インターフェースを実装して IBuildInfo を受け取る必要があります。詳細については、デバイスでのテストをご覧ください。

メタデータ フィールド

多くのテスト モジュールには、それぞれ固有の目的を持ついくつかの metadata 仕様が含まれています。

例:

  <option name="config-descriptor:metadata" key="component" value="framework" />
  <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
  <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
  <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />

コンポーネント

component メタデータは、モジュールがテストする一般的な Android コンポーネントを記述します。テスト実行に直接影響することはありません。主に情報目的で使用されます。

CTS の許可されるコンポーネントの最新リストは、CtsConfigLoadingTest にあります。存在しないコンポーネントが CTS モジュールに追加されている場合、このテストは presubmit で失敗します。

module-metadata-include-filtermodule-metadata-exclude-filter を使用して、コンポーネントに基づいてスイートの実行をフィルタリングできます。

例:

  --module-metadata-include-filter component framework

この例では、framework コンポーネントでアノテーションが付けられたテスト モジュールのみを実行します。

パラメータ

parameter メタデータは情報であり、テストの実行に影響します。テスト モジュールが適用される Android モードを指定します。この場合、モードは、instant appssecondary usersdifferent abis などの上位の Android モードに制限されます。

スイートの実行時にモードがテストに適用される場合、テスト モジュールのいくつかのバリエーションがモードに基づいて作成されます。各パターンは、異なるモードで実施します。

  • instant_app: APK を Instant App としてインストールするテストのバリエーションを作成します。
  • multi_abi: デバイスでサポートされている ABI ごとにテストのバリエーションを作成します。
  • secondary_user: APK をインストールし、セカンダリ ユーザーとしてテストを実行するテストのバリエーションを作成します。

パフォーマンス テスト モジュールの指標収集と後処理

パフォーマンス テスト モジュールでは、モジュール レベルの metrics_collectormetric_post_processor が許可されています。これらはいずれもパフォーマンス テストに不可欠なものです。 モジュール レベルの指標コレクタとポスト プロセッサを特定のモジュールに指定することもできます。 トップレベルとモジュール レベルの両方でポスト プロセッサを指定することは推奨されていません。

パフォーマンス テスト モジュールの設定には、値 performance を指定した test-type メタデータ(例: xml <option name="config-descriptor:metadata" key="test-type" value="performance" />)を含める必要があります。含めない場合、テストの設定に FilePullerLogCollector 以外の metric_collectormetric_post_processor が含まれていると、テストは presubmit で失敗します。

パフォーマンス テスト モジュールの設定の例:

<configuration description="Runs sample performance test.">
    <!-- Declare as a performance test module -->
    <option name="config-descriptor:metadata" key="test-type" value="performance" />
    <option name="test-tag" value="hello-world-performance-test" />
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="class" value="android.test.example.helloworldperformance.HelloWorldPerformanceTest" />
    </test>
    <!-- Add module-level post processor MetricFilePostProcessor -->
    <metric_post_processor class="com.android.tradefed.postprocessor.MetricFilePostProcessor">
        <option name="aggregate-similar-tests" value="true" />
        <option name="enable-per-test-log" value="false" />
    </metric_post_processor>
</configuration>