CTS 検証ツールのホスト側テストを実行する

このページでは、CTS 検証ツール(CTS-V)のホストサイドの Android 16 QPR2 テストと Android 17 テストを設定して実行する手順について説明します。ホスト側のテストには、マルチデバイス テスト(Android 17 より前に導入)とインタラクティブ テスト(Android 17 で新しく導入)の 2 種類があります。

  • マルチデバイス テストは、完全に自動化されたテストです。
  • インタラクティブ テストは半自動化されたテストで、テスト対象デバイス(DUT)で手動の手順を実行する必要があります。

新しいインタラクティブ テストに加えて、手動の距離測定精度テストと通信テストをホスト側のマルチデバイス テストに変換し、Wi-Fi 接続テストが必須になりました。

ホスト側のテストをセットアップする

ホスト側のテストをセットアップする手順は次のとおりです(マルチデバイス テストでは追加のセットアップが必要です)。

  1. デスクトップ マシンが CTS のオペレーティング システム要件を満たしていることを確認します。
  2. デスクトップ ソフトウェアをインストールするの手順 2 と 5 に沿って、adb、AAPT2、Python がデスクトップに正しくインストールされていることを確認します。
    • Python のバージョンは 3.11 以降である必要があります。Python のバージョンを確認するには、python3 --version を実行します。バージョンが 3.11 より前の場合は、最新の公式 Python リリースをインストールします。詳しくは、python.org のダウンロード セクションをご覧ください。
    • 一部のテストでは、ホストに Python venv モジュールが必要です。Debian システムと Ubuntu システムでは、このモジュールがデフォルトでインストールされていない可能性があります。Python バージョンに venv モジュールがあるかどうかを確認するには、python3 -m venv venv を実行します。このコマンドが失敗すると、エラー メッセージが表示されます。プロンプトに沿って python3.x-venv パッケージをインストールします。

ホストサイドのインタラクティブ テストのみを実行する場合は、ホストサイド テストを実行するに進みます。ただし、マルチデバイス テストを実行する場合は、ホスト側のマルチデバイス テストをセットアップするに進んでください。

ホスト側のマルチデバイス テストをセットアップする

ホスト側のマルチデバイス テストをセットアップする手順は次のとおりです。

  1. デスクトップ マシンが CTS のオペレーティング システム要件を満たしていることを確認します。
  2. デスクトップ ソフトウェアをインストールするの手順 2 と 5 に沿って、adb、AAPT2、Python がデスクトップに正しくインストールされていることを確認します。

    • Python のバージョンは 3.11 以降である必要があります。Python のバージョンを確認するには、python3 --version を実行します。バージョンが 3.11 より前の場合は、最新の公式 Python リリースをインストールします。詳しくは、python.org のダウンロード セクションをご覧ください。
    • 一部のテストでは、ホストに Python venv モジュールが必要です。Debian システムと Ubuntu システムでは、このモジュールがデフォルトでインストールされていない可能性があります。Python バージョンに venv モジュールがあるかどうかを確認するには、python3 -m venv venv を実行します。このコマンドが失敗すると、エラー メッセージが表示されます。プロンプトに沿って python3.x-venv パッケージをインストールします。
  3. 2 台のテスト対象デバイス(DUT)を用意し、それぞれに CTS-V をセットアップします。

  4. テストタイプのセットアップ セクションに移動します。

テストがこのリストにない場合は、2 台のデバイスによる標準テストをセットアップするに進みます。

NFC テストをセットアップする

NFC テストでは、DUT 1 台と PN532 NFC チップ 1 個を使用します。

NFC テストをセットアップするには:

  1. PN532 NFC チップを購入します。All-In-One PN532 をおすすめします。
  2. DUT で設定アプリに移動します。
  3. NFC を有効にする。
  4. NFC チップを配置する。

    • スマートフォンの場合、DUT の NFC リーダーを図 1 に示すように配置します。

      NFC チップの位置

      図 1. NFC チップの位置

    • その他のデバイスの場合は、チップをデバイスの NFC アンテナの隣に配置します。

  5. USB ケーブルを使用して、PN532 NFC チップをテスト用ワーク ステーションに接続します。

Wi-Fi AP 接続テストを設定する

Wi-Fi アクセス ポイント(AP)接続テスト(CtsWifiConnectionTests)は、DUT と AP 間の接続をテストします。これらのテストは、次の 2 つの方法で設定できます。

  • オプション 1: CTS-V 用に設定した既存の Wi-Fi ネットワークを使用します。
  • オプション 2: プログラマブル アクセス ポイント(AP)を設定します。

Android 17 では、オプション 2 を強く推奨しますが、必須ではありません。以降の 2 つのセクションで、各オプションについて説明します。

オプション 1: CTS-V 用に設定した既存の Wi-Fi ネットワークを使用する

オプション 1 では、Wi-Fi ネットワークの範囲内に Android DUT が 1 台必要です。DUT がシールド ボックスに入っていて Wi-Fi ネットワークに接続できない場合は、シールド ボックスから取り外します。

オプション 2: プログラマブル AP を設定する

Wi-Fi 接続テスト用にプログラマブル AP を設定するには:

  1. Banana Pi R3 AP を購入してセットアップします。Banana Pi R3 AP の購入とセットアップについては、Banana Pi BPI-R3 AP をセットアップするをご覧ください。

  2. 省略可: シールド ボックスをお持ちでない場合は、JTP-SR101 シールド ボックスをおすすめします。次の情報を使用してこのボックスを購入します。

    Dong Guan Zheng Sheng Electronics Technology Co., LTD
    Bohui Industrial Park, Panlong Road, Liaobu Town, Dongguan City, Guangdong Province, China
    連絡先: Forest Pan
    メール: forest.pan@jtpmak.cn
    電話(中国): +86 18676993556

  3. DUT と AP をホストに接続し、RF シールド ボックスに入れます。DUT と AP は 10 cm 以上離してください。図 2 は、この構成を示しています。

    シールド ボックス内の DUT と AP

    図 2. シールド ボックス内の DUT と AP。

  4. SSH を使用して、AP にホストからアクセスできることを確認します。

距離測定の精度テストを設定する

距離測定の精度テストをセットアップするには:

  1. 2 台の Android のテスト対象デバイス(DUT)を 1 メートル離して同じ高さに配置し、互いに直接見通せるようにします。各デバイスの背面が互いに向き合うようにします。図 3 は、この向きを示しています。

    デバイスの向き

    図 3. デバイスの向き。

  2. USB ケーブルを使用して、両方のデバイスをデスクトップ マシンに接続します。

2 台のデバイスによる標準テストをセットアップする

デバイス 2 台のデフォルトのセットアップ方法:

  1. 2 台の Android のテスト対象デバイス(DUT)を約 20 cm 離して配置します。
  2. 強く推奨: 両方のデバイスをシールド ボックスに入れます。シールド ボックスを使用すると、テストの安定性が向上し、テストの失敗をデバッグしやすくなります。

  3. 通信テストでは、各 DUT に SIM カードと携帯通信会社の信号が必要です。DUT がシールド ボックスに入っている場合、携帯通信会社の信号をボックスに結合する必要があります。それ以外の場合は、デバイスをシールド ボックスから取り出します。

  4. (省略可)Wi-Fi デバッグを行う場合は、OTA スニファをセットアップします。

CDM テストをセットアップする

test_permissions_sync() テストケースは、テストが実行されるデバイスのビルドタイプによって動作が異なります。OEM がデバッグ可能(userdebug または eng)ビルドとデバッグ不可(user)ビルドの両方をテストし、両方でテストに合格することが重要です。

免除

権限同期 API 実装の CDD 条項では、セキュアなチャネルを介してデバイス間でデータを正常に転送できることのみが求められています。セキュア チャネルの実装は CDD 準拠の要件ではないため、このテストはデバッグ不可(ユーザー)ビルドではスキップできますが、CDM 権限同期機能のサポートをオプトアウトする場合に限ります。

テストは、デバッグ可能なビルドで例外なく合格する必要があります。

デバッグ不可ビルドでテストするための前提条件

免除されていない場合は、次の前提条件を満たしていることを確認します。

セキュア チャネルは AVF(AttestationVerificationFramework)を使用してハードウェアの信頼性を検証します。両当事者によって生成された構成証明には、システムで不正な変更が行われていないことを確認するための、当事者自身に関する情報がいくつか含まれています。AVF は、検証プロセス中に次の状態を確認します。

  • デバイスがインターネットにアクセスできる
  • デバイスが確認付きブートを使用し、ビルドがリリースキーで署名されている(開発キーではない)
  • デバイスのブートローダーがロックされています。詳細な手順については、ブートローダーをロックするをご覧ください。
  • OS、キーブート、キーベンダーのパッチレベルが 12 か月以内である。1 年以上前のビルドは使用しないでください
  • デバイス証明書は、ベンダーが承認したルート証明書のいずれかによってバックアップされています。信頼できるルート証明書を vendor_required_attestation_certificates.xml リソース オーバーレイで指定します。

ホストサイド テストを実行する

NFC テストなど、一部のマルチデバイス テストでは追加のセットアップが必要です。追加のセットアップが必要なテストは、それぞれ個別に実行されます。追加のセットアップを必要としないテストは、グループで実行できます。

  1. テスト ワークステーションで、CTS-V zip パッケージを解凍したディレクトリから cts-v-host コンソールを起動します。

    ./android-cts-verifier/android-cts-v-host/tools/cts-v-host-tradefed
    
  2. DUT の CTS-V アプリから [Host-side Tests] をクリックします。図 4 は、CTS-V アプリのホスト側テストを示しています。

    CTS-V アプリのホスト側テスト

    図 4. CTS-V アプリのホスト側テスト。

    テストホスト側のマルチデバイス テスト モジュールのリストが表示されます。

  3. CTS-V ホスト コンソールで、次のコマンドを使用して、標準の 2 台のデバイス設定を使用するマルチデバイス テストを実行します。

    run cts-v-host-multidevice-default
    

    結果は、DUT の CTS-V アプリの各テスト モジュールに表示されます。緑色でマークされたテストは合格、赤色でマークされたテストは不合格です。

    図 5 に、CtsCompanionDeviceManager テストの結果の例を示します。

    CTS-V アプリでのホスト側マルチデバイス テストの結果

    図 5. CTS-V アプリでのホスト側マルチデバイス テストの結果。

  4. CTS-V ホスト コンソールで、次のコマンドを使用してインタラクティブ テストを実行します。

    run cts-v-host-interactive
    

    結果は、DUT の CTS-V アプリの各テスト モジュールに表示されます。緑色でマークされたテストは合格、赤色でマークされたテストは不合格です。

  5. 追加の設定が必要なテストごとに、次のコマンドを使用してテストを個別に実行します。

    run cts-v-host -m test_module_name
    

    たとえば、NFC テストを実行するには、次のコマンドを使用します。

    run cts-v-host -m CtsNfcHceMultiDeviceTestCases
    

    結果は、DUT の CTS-V アプリの各テスト モジュールに表示されます。緑色でマークされたテストは合格、赤色でマークされたテストは不合格です。

Wi-Fi AP 接続テストを実行する

Wi-Fi AP 接続テストは、次の 2 つの方法で実行できます。

  • オプション 1: CTS-V 用に設定した既存の Wi-Fi ネットワークを使用します。
  • オプション 2: プログラマブル AP を設定します。

オプション 1: CTS-V 用に設定した既存の Wi-Fi ネットワークを使用する

既存の Wi-Fi ネットワークで Wi-Fi AP 接続テストを実行するには:

  1. テストベッド構成ファイル(WifiConnectionTestbed.yaml)を編集します。このファイルは、CTS-Verifier が解凍されたディレクトリにあります。次に例を示します。

    ./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml
    
  2. wifi_ssid フィールドと wifi_password フィールドの値を Wi-Fi ネットワークの SSID とパスワードに変更します。次の例は、これらの設定の場所を示しています。

    TestBeds:
    - Name: WifiConnectionTestbed
    Controllers:
      AndroidDevice: '*'
    TestParams:
      use_programmable_ap: False
      wifi_ssid: WIFI-SSID
      wifi_password: WIFI-PASSWORD
    
  3. CTS-V ホスト コンソールで、次のコマンドを実行します。

    run cts-v-host -m CtsWifiConnectionTests
    

オプション 2: プログラマブル AP で実行する

プログラマブル AP で Wi-Fi AP 接続テストを実行するには:

  1. テストベッド構成ファイル(WifiConnectionTestbed.yaml)を編集します。このファイルは、CTS-Verifier が解凍されたディレクトリにあります。次に例を示します。

    ./android-cts-verifier/android-cts-v-host/testcases/CtsWifiConnectionTests/x86_64/connection/WifiConnectionTestbed.yaml
    
  2. ローカル SSH 設定に基づいて、hostname の値を AP の IP アドレスに変更します。IP アドレスを確認するには、AP の IP アドレスを確認するを参照してください。次の例は、hostname 設定の場所を示しています。

    TestBeds:
    - Name: WifiConnectionTestbed
      Controllers:
        AndroidDevice: '*'
        # Specify settings for the AP.
        OpenWrtDevice:
        - hostname: AP-IP
          skip_init_reboot: True
      TestParams:
        use_programmable_ap: True
    
  3. CTS-V ホスト コンソールで、次のコマンドを実行します。

    run cts-v-host -m CtsWifiConnectionTests
    

USB ホストサイド テストを実行する

Android 17 には、実行に Wi-Fi 経由の adb を必要とする USB CTS-V ホスト側テストが含まれています。

一部の USB テストでは、通常の CTS-V アプリではアクセスできない権限を持つ SystemAPI にアクセスするために、CTS-V ホストを使用する必要があります。これらのテストはテザリングされておらず、Wi-Fi 経由で adb を使用する必要があります。

DUT が UsbPort.java でポート パートナー BC 1.2 タイプまたは USB 電源プロファイルのレポートをサポートする場合、次の Type-C アクセサリが必要です。

  • USB Type-C Power Delivery(PD)充電器
  • USB バッテリー充電 1.2(BC 1.2)標準ダウンストリーム ポート(SDP)。これらのポートは、DUT に 500 mA または 900 mA の電流を供給するよう制限されており、通常は外部ハブの USB ポートにあります。
  • USB BC 1.2 充電ダウンストリーム ポート(CDP)。これらのポートは、DUT に 1.5 A の電流とデータを提供できます。ノートパソコンやパソコンの Type-C ポートは CDP である可能性が高いです。
  • USB BC 1.2 専用充電ポート(DCP)。これらのポートは、データなしで DUT に 1.5 A の電流を供給できます。このリストの USB Type-C PD 充電器は DCP である可能性が高いです。
  1. Wi-Fi 経由で adb を使用して DUT を接続します。セットアップの詳細については、Wi-Fi 経由でデバイスに接続するをご覧ください。

  2. デバイスをすべての USB 接続から物理的に取り外します。テストコマンドの実行時にデバイスが USB ホストまたはアクセサリに接続されている場合、テストは失敗します。

  3. 次のテスト コマンドを実行します。

    run cts-v-host -m CtsUsbTypecTestCases
    

テストが完了すると、次の図に示すように、CTS-V アプリの [Host-side tests] に結果が表示されます。

CTS-V アプリのホスト側 USB テスト

図 6. CTS-V アプリのホスト側 USB テスト。

ホスト側の USB CTS-V アプリの CtsUsbTypecTestCases スイート

図 7. ホスト側の USB CTS-V アプリの CtsUsbTypecTestCases スイート。

マルチデバイス テストのトラブルシューティング

このセクションでは、一般的な問題のトラブルシューティングについて説明します。

CtsTelecomTest 中に電話番号を取得できない

エラー メッセージ Failed to get phone number for <serial> が表示された場合は、次の手順を行います。

  1. 各 DUT に SIM カードが取り付けられていることを確認します。

  2. エラーが解決しない場合は、SIM カードが電話番号の自動取得に対応していない可能性があります。その場合は、コマンドで電話番号を明示的に指定する必要があります。

    たとえば、DUT 1(シリアル 17011FDEE0002N、電話番号 555-0000)と DUT 2(シリアル R3CN90YNAR、電話番号 555-1111)の場合、run cts-v-host コマンドに次の引数を追加します。

    --module-arg CtsTelecomTest:dut_serial:17011FDEE0002N \
    --module-arg CtsTelecomTest:dut_phone_number:555-0000 \
    --module-arg CtsTelecomTest:ref_phone_number:555-1111
    

CtsMultiDeviceGenericRangingAccuracyTests 中にサーバーから応答がない

次のエラー メッセージが表示された場合、特定のデバイスでは OEM 固有のバックグラウンド プロセス管理によってテストアプリがフリーズまたは強制終了される可能性があります。

mobly.snippet.errors.ProtocolError: <AndroidDevice|Initiator> No response from server. Check the device logcat for crashes.

この問題を解決するには、バックグラウンド制限を無効にするか、次のパッケージを許可リストに登録します。

パッケージ 表示名
com.google.snippet.uwb CtsUwbSnippetApp
com.google.snippet.ranging CtsRangingSnippetApp
com.google.snippet.bluetooth CtsBluetoothMultiDeviceSnippetApp
com.google.android.mobly.snippet.bundled androidx.multidex.MultDexApplication

NFC テスト中に GetFirmwareVersion に応答がない問題を修正

マルチデバイス テストの実行中にメッセージ「verify_firmware_version RuntimeError: No response for GetFirmwareVersion」が表示される場合、PN532 NFC ボードにアクセスできていません。

この問題を解決するには、ホスト上の PN532 ボードが使用するシリアルパス(例: dev/ttyUSB1)を特定し、コンソールで --module-arg 引数を使用して手動で指定してください。

run cts-v-host -m CtsNfcHceMultiDeviceTestCases --module-arg CtsNfcHceMultiDeviceTestCases:pn532_serial_path:/dev/ttyUSB1

NFC テスト中のトランザクション失敗のエラー メッセージを解決する

すべての NFC テストケースでメッセージ「Transaction failed, check device logs for more information.」が表示される場合は、DUT の NFC チップが PN532 を検出できていない可能性があります。

ホストに複数のデバイスを接続していて、PN532 を一部のデバイスにのみ配置している場合は、間違った DUT が選択されている可能性があります。詳しくは、NFC テストをセットアップするを参照してください。

この問題を解決するには、次のいずれかの方法をお試しください。

  • ホスト側のテストコマンドで、-s フラグを使用して正しい DUT のシリアルを設定する。

  • DUT 以外のすべてのデバイスについて、ホストとの接続を解除する。

CDM テストケース test_permissions_sync が無視される

デバッグできないデバイスでテストを実行している場合は、免除されているかどうかを確認してください。そうでない場合は、両方のデバイスが前提条件を満たしていることを確認します。