CTS の最適化

Android 互換性テストスイート(CTS)では、何百万の個別のテストが提供されています。ソフトウェアの開発フェーズでは CTS を頻繁に実行する必要がありますが、実行にかかる時間を短縮することは可能です。

このページでは、テスト実行時間を短縮するために使用できる方法と、ハードウェア リソースをプロセスに最適化する方法について説明します。

シャーディング デバイス

サイクル時間を短縮するには、CTS を複数のデバイスで実行すること(シャーディング)を検討してください。シャーディングの使用方法を確認するには、CTS テストを実行するをご覧ください。

Android Test Station

Android Test Station(ATS)を使用して、ユーザー インターフェースを導入し、標準的な Android テストスイートを実行します。このツールは Trade Federation(TF)のウェブ インターフェースとなり、最小限のセットアップでテストデバイスの CTS を実行し、継続的なテストを行えるようにします。

Android Test Station はマルチホスト モードをサポートしています。このモードでは、単一の ATS コントローラ ホストを使用して、複数の ATS ワーカーホストのデバイスとテストを管理できます。

エミュレータの継続的な実行

開発フェーズ中に CTS を継続的に実行するには、ハードウェアの代わりに Android Virtual Device(AVD)を使用します。テスト失敗の回帰を早期に特定できるため、重大度の決定と根本原因の分析に必要な時間を大幅に節約できます。エミュレータの複数のインスタンスをシャーディングに使用し、Android Test Station で継続的に実行するようにスケジュールを設定できます。

drawElements Quality Program(dEQP)

drawElements Quality Program(dEQP)は Android CTS に含まれています。CtsDepqTestCases と呼ばれるこのプログラムは、Android グラフィックのテストに重点を置いています。このモジュールは、Android CTS の全テストケースの約 80% を占めており、これは総実行時間の 6% に相当します。

Android グラフィック ドライバは Android ファームウェア(BSP)の一部であり、開発の過程ではあまり変わらないため、このモジュールの実行は戦略的に調整できます。たとえば、ソフトウェア開発中に 2 週間(以内)ごとに CTS を実行する場合、ファームウェアの更新スケジュールに基づいて、このモジュールを数サイクルにわたって除外できます。

一つの方法として、一連のデバイスで個別に CtsDeqpTestCases を実行してから CTS レポートを送信することが挙げられます。たとえば、2 つの異なるホストで実行します。

ホスト 1:

cts-tf > run cts --max-log-size 100 --shard-count 6 -o -m CtsDeqpTestCases

ホスト 2:

cts-tf > run cts --max-log-size 100 --shard-count 6 -o --exclude-filter CtsDeqpTestCases

メディア テストケース

メディア テストケースは、オーディオ、動画、マルチメディア ドライバなどのマルチメディア サービスを検証します。これらのマルチメディア テスト モジュールは、CTS 実行時間に最も影響します。次のような場合に遅延が発生する可能性があります。

  • テスト中にメディア ファイルをダウンロードまたは繰り返し再生している。
  • 失敗したテストケースを再試行している。

Android CTS には次のテスト モジュールが含まれています。

  • CtsMediaStressTestCases
  • CtsMediaPlayerTestCases
  • CtsMediaAudioTestCases
  • CtsVideoTestCases
  • CtsMediaDecoderTestCases
  • CtsMediaCodecTestCases
  • CtsMediaV2TestCases

いくつかのメディアテストをローカルまたはローカル サーバーで実行することを検討してください。詳細については、ローカルで CTS メディアテストを実行するをご覧ください。

マルチメディア フレームワークとそのドライバ(デコーダとエンコーダ)は、Android ファームウェア(BSP)の一部です。ファームウェアの更新スケジュールに基づいて、このモジュールの実行を戦略的に調整し、これらのモジュールを数サイクルにわたって除外することができます。