CTS テストの実行

Trade Federation は、Android デバイスでテストを実行するための継続的なテスト フレームワークです。互換性テストスイート(CTS)を実行するには、まず Tradefed テスト フレームワークを説明している Trade Federation の概要に目を通してください。

次のようにしてテスト計画を実行します。

  1. Android デバイスのセットアップに従って、テスト対象デバイスをセットアップします。
  2. リリース版の CTS ビルドを Linux ホストマシンにダウンロードし、ホスト上に展開します。
  3. デバイスを 1 台以上接続します。次のようにして DUT を準備します。
    • ホームボタンを押して、デバイスでホーム画面を表示させます。
    • 他のタスクのために DUT を使用しないでください。
    • DUT はセンサーが反応しないように安定した場所に置きます。
    • ピントを合わせられる物体の方にデバイスのカメラを向けます。
    • CTS の実行中はデバイスのキーを押さないでください。キーを押したり DUT の画面に触れたりすると、実行中のテストに干渉して、テストが失敗することがあります。
  4. CTS パッケージを展開したフォルダから、CTS コンソールの cts-tradefed スクリプトを起動します。ホストのコマンドライン シェルで次のコマンドを実行します。
    ./android-cts/tools/cts-tradefed
  5. 次のコマンドでデフォルトのテストプランを実行します(すべてのテスト パッケージが含まれます)。
    cts-tradefed > run cts
    • テストの実行時間を短縮するには、複数のデバイスでテストを分割します。分割するには 2 台以上のデバイスをホストに接続する必要があります。おすすめは 6 台以上です。複数のデバイスに分割する方法は、次のとおりです。
      • Android 9 以降の場合は、次のコマンド オプションを使用します。
        --shard-count number_of_shards
      • Android 8.1 以前の場合は、次のコマンド オプションを使用します。
        --shards number_of_shards
    • テストスイート全体を実行しない場合は、次のコマンドラインから CTS プランを指定して実行します。
      run cts --plan test_plan_name

      テストプラン名を確認する方法は、次のとおりです。

      • Android 7.0 以降で、テスト モジュールの一覧を表示するには、次のコマンドを入力します。
        list modules
      • Android 6.0 以前で、リポジトリ内のテストプランの一覧を表示するには、次のコマンドを入力します。
        list plans
      • Android 6.0 以前で、リポジトリ内のテスト パッケージの一覧を表示するには、次のコマンドを入力します。
        list packages
    • CTS のバージョンごと異なる他のコマンド オプションについては、以下のコンソール コマンドのリファレンスをご覧になるか、Tradefed コンソールで「help all」と入力してください。
  6. すべてのテスト モジュールが完了し、最後の 2 回の再試行セッションでテスト失敗の数が同じになるまで、再試行セッションを実行します。
    • Android 9 以降の場合は、次のコマンドを使用します。
      run retry --retry session_number --shard-count number_of_shards
    • Android 7.0~8.1 の場合は、次のコマンドを使用します。
      run cts --retry session_number --shards number_of_shards
    • CTS のバージョンごとに異なる再試行コマンドのオプションの詳細については、下記の CTS v2 コンソールの使用のセクションをご覧ください。
    • CTS の再試行の実装について詳しくは、Trade Federation の Suite Retry をご覧ください。
  7. コンソールでテストの進捗状況と結果を確認します。

CTS v2 コンソールの使用

Android 7.0 以降の場合は、CTS v2 を使用します。

プランの選択

以下のテストプランを使用できます。

  • cts - 既存の CTS インストールから CTS を実行します。
  • cts-camera - 既存の CTS インストールから CTS カメラを実行します。
  • cts-java - 既存の CTS インストールからコア Java テストを実行します。
  • cts-pdk - PDK 融合ビルドの検証に役立つテストを実行します。
  • everything - 互換スイートの一般的な設定です。

その他の使用可能な設定は次のとおりです。

  • basic-reporters - 基本的な CTS レポーターを使用した設定です。
  • collect-tests-only - 既存の CTS インストールから CTS を実行します。
  • common-compatibility-config - 互換スイートの一般的な設定です。
  • cts-filtered-sample - 互換性スイートの一般的な設定です。
  • cts-known-failures - CTS の既知の失敗を使用した設定です。
  • cts-preconditions - CTS 前提条件の設定です。
  • host - 既存のデバイスに対して 1 つのホストベースのテストを実行します。
  • instrument - 既存のデバイスで 1 つの Android インストゥルメンテーション テストを実行します。
  • native-benchmark - 既存のデバイスでネイティブ ストレステストを実行します。
  • native-stress - 既存のデバイスでネイティブ ストレステストを実行します。
  • recharge - ほぼ完全に放電されるまで待ってから、充電するまで待つ、擬似的なテストです。
  • testdef - test_def.xml ファイルに含まれるテストを既存のデバイスで実行します。
  • util/wifi - デバイスの Wi-Fi を設定するためのユーティリティ設定です。
  • util/wipe - デバイスのユーザーデータをワイプします。

これらのプランと設定はすべて、run cts コマンドで実行します。

CTS v2 コンソール コマンド リファレンス

表 1: 次の表は、さまざまな用途の CTS V2 コンソール コマンドをまとめたものです。

ホスト 説明
help よく使用されるコマンドの概要を表示します。
help all 使用可能なコマンドの完全な一覧を表示します。
version バージョンを表示します。
exit CTS コンソールを正常に終了します。現在実行中のテストがすべて終了すると、コンソールが終了します。
実行 説明
run cts

Android 10 の場合は、デフォルトの CTS プランと CTS-Instant を一緒に実行します。つまり、CTS 全部を実行します。Android 9 以前の場合は、デフォルトの CTS プランのみを実行します。デバイス検証には、この包括的なオプション(前提条件を含む)を使用します。内容については cts.xml をご覧ください。

CTS コンソールは、テストの進行中に他のコマンドを受け付けます。

デバイスが接続されていない場合、CTS デスクトップ マシン(ホスト)は、デバイスが接続されるのを待ってから、テストを開始します。複数のデバイスが接続されている場合、CTS ホストは自動的に 1 台のデバイスを選択します。

run cts-instant

Android 9 の場合は、デフォルトの CTS-Instant プランを実行します。

run cts --module-parameter INSTANT_APP

Android 10 の場合は、デフォルトの CTS-Instant プランを実行します。

run cts --module-parameter INSTANT_APP --module/-m test_module_name

Android 10 の場合は、指定した CTS-Instant テスト モジュール(複数可)を実行します。

run retry

Android 9 以降の場合のみ。以前のセッションで失敗した、または実行されなかったすべてのテストを再試行します。たとえば、TF 分割を使った run retry --retry -s または run retry --retry --shard-count です。Android 9 以降の場合、run cts --retry は使用できません。

--device-token

Android 8.1 以前の場合。デバイスにトークンを指定します。たとえば、--device-token 1a2b3c4d:sim-card です。

--enable-token-sharding

Android 10 の場合のみ。各 SIM タイプを必要とするテストと自動的にマッチングします。SIM 関連のテストケースを実行するためにデバイスのシリアル番号を指定する必要はありません。サポートされている SIM は、SIM_CARDUICC_SIM_CARDSECURE_ELEMENT_SIM_CARD です。

run cts-dev

デフォルトの CTS プラン(すなわち CTS 全部)を実行しますが、前提条件をスキップして、新しいテストの反復開発の実行時間を短縮します。これにより、--skip-preconditions オプションが使用された場合と同じように、メディア ファイルの転送や Wi-Fi 接続の確認など、デバイスの設定の確認とセットアップが省略されます。また、このコマンドを使用すると、デバイス情報の収集とすべてのシステム状態チェッカーもスキップされます。また、1 つの ABI のみでテストを実行します。デバイスの検証では、この最適化を行わず、すべての前提条件とチェックを含むようにしてください。除外するものについては、cts-dev.xml をご覧ください。

CTS コンソールは、テストの進行中に他のコマンドを受け付けます。

デバイスが接続されていない場合、CTS デスクトップ マシン(ホスト)は、デバイスが接続されるのを待ってから、テストを開始します。複数のデバイスが接続されている場合、CTS ホストは自動的に 1 台のデバイスを選択します。

run retry

Android 9 の場合。以前のセッションで失敗した、または実行されなかったすべてのテストを再試行します。たとえば、TF 分割を使った run retry --retry session id -sdevice serial または run retry --retry session id --shard-count です。

Android 9 では、run cts --retry は使用できません。

--plan test_plan_name 指定したテストプランを実行します。
--module/-m test_module_name  [--module/-m test_module2...] 指定したテスト モジュール(複数可)を実行します。たとえば、run cts --module CtsGestureTestCases はジェスチャー テスト モジュールを実行します(run cts -m Gesture のように短縮できます)。
run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes は特定のパッケージ、クラス、またはテストを実行します。
--subplan subplan_name 指定したサブプランを実行します。
-- module/-m test_module_name -- test test_name  指定したモジュールとテストを実行します。たとえば、run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes は特定のパッケージ、クラス、またはテストを実行します。
--retry 以前のセッションで失敗した、または実行されなかったすべてのテストを再試行します。list results を使用してセッション ID を取得します。
--retry-type not_executed 以前のセッションから実行されなかったテストのみを再試行します。list results を使用してセッション ID を取得します。
--shards number_of_shards Android 8.1 以前の場合。CTS の実行を、複数のデバイスで並列に行うために、指定した数の独立したチャンクに分割します。
--shard-count number_of_shards Android 9 の場合。CTS の実行を、複数のデバイスで並列に行うために、指定した数の独立したチャンクに分割します。
--serial/-s deviceID 指定したデバイスで CTS を実行します。
--include-filter module_name  [--include-filter module2...] 指定したモジュールでのみ実行します。
--exclude-filter module_name  [--exclude-filter module2...] 指定したモジュールを実行から除外します。
--log-level-display/-l log_level STDOUT に表示するログレベルを指定の最低レベルで実行します。VERBOSEDEBUGINFOWARNERRORASSERT の値が有効です。
--abi abi_name 指定した ABI(32 または 64)でテストを実行します。デフォルトでは、CTS はデバイスがサポートする ABI ごとにテストを 1 回実行します。
--logcat--bugreport--screenshoot-on-failure 失敗の詳細を表示します。診断に役立ちます。
--device-token 指定したトークンを持つデバイスを指定します。たとえば、--device-token 1a2b3c4d:sim-card のように指定します。
--skip-device-info デバイスに関する情報の収集をスキップします。
--skip-preconditions 新しいテストの反復開発の実行時間を短縮するために、前提条件をスキップします。これにより、メディア ファイルの転送や Wi-Fi 接続の確認など、デバイス設定の確認とセットアップが省略されます。
リスト 説明
list modules リポジトリ内の使用可能なすべてのテスト モジュールを表示します。
list plans または list configs リポジトリ内の使用可能なすべてのテストプラン(設定)を表示します。
list subplans リポジトリ内の使用可能なすべてのサブプランを表示します。
list invocations デバイスで現在実行中の「run」コマンドの一覧を表示します。
list commands 現在キュー内にあって、デバイスに割り当てられるのを待っている「run」コマンドをすべて表示します。
list results 現在リポジトリに保存されている CTS の結果を一覧表示します。
list devices 現在接続中のデバイスとその状態を一覧表示します。

「Available」と表示されたデバイスは、機能していて、テストを実行できるアイドル状態のデバイスです。

「Unavailable」と表示されたデバイスは、adb 経由で存在を確認できるデバイスですが、adb コマンドに応答せず、テストには割り当てられません。

「Allocated」と表示されたデバイスは、現在テストを実行しているデバイスです。

ダンプ 説明
dump logs 実行中のすべての呼び出しの tradefed ログをダンプします。
追加 説明
add subplan --name/-n subplan_name
--result-type
[pass | fail | timeout | notExecuted]
[--session/-s session_id]
以前のセッションから派生したサブプランを作成します。このオプションを使用すると、テストのサブセットを実行するために使用できるサブプランが生成されます。

必須オプションは --session だけです。他の値は省略可能ですが、指定する場合はその後ろに値も指定する必要があります。--result-type オプションは何度も指定できます。たとえば、add subplan --session 0 --result-type passed --result-type failed は有効です。

CTS v1 コンソールの使用

Android 6.0 以前の場合は、CTS v1 コマンド コンソール リファレンスをご覧ください。