デバイス側の指標収集

デバイス側のテスト(インストゥルメンテーション テスト、UI Automator テストなど)を実行する場合、ホスト側のコレクタは使用に適さないことがあります。デバイス上で実行されるテストに指標収集を同期させるのが難しいからです。たとえば、非同期でスクリーンショットを撮影すると、目的の画面を撮り損なって無駄になる可能性が高くなります。

このようなユースケースに対応するためにデバイス側のコレクタが存在し、「AndroidJUnitRunner」インストゥルメンテーションで使用できます。BaseMetricListener を実装すると、Tradefed レポート パイプラインと完全な互換性がある方法で収集された指標を自動的に報告できます。

このライブラリは Tradefed 自体からは分離されており、Tradefed なしで使用できます。

Tradefed の「AndroidJUnitTest」ランナーを使用している場合は、次のコマンドライン オプションを指定するだけで、コレクタをテストとともに実行できます。

  --device-listeners android.device.collectors.ScreenshotListener

注意: 実行時にコレクタクラスを解決するために、ほとんどの場合はインストゥルメンメーション APK で makefile に次の行を追加して静的にインクルードする必要があります。

  LOCAL_STATIC_JAVA_LIBRARIES += collector-device-lib

実装

基本クラス BaseMetricListener の上に実装する場合、インストゥルメンテーションのライフサイクル中に指標を収集するタイミングを選択できます。

  • テスト実行の開始時: onTestRunStart
  • テストケースの開始時: onTestStart
  • テストケースの終了時: onTestEnd
  • テストケースの不合格時: onTestFail
  • テスト実行の終了時: onTestRunEnd

インタラクション

デバイス側の指標の集計は、インストゥルメンテーションの実行自体と同期して行われます。指標はインストゥルメンテーション結果に渡され、Tradefed によって解析されて呼び出しの一環として報告されます。