執行多裝置 NFC 測試 (Android 15)

本文說明如何執行多裝置 NFC 測試。

符合必要條件

執行多部裝置的 NFC 測試前,請先完成下列步驟:

  1. 準備搭載 Android 15 實作內容的裝置。
  2. 請遵守 CTS-V 規定
  3. 按照 CTS-V 設定操作。

準備 DUT 和 PN532 NFC 讀取器以進行測試

完成上述步驟後,請按照下列步驟準備 DUT 和 PN532 NFC 讀取器,以進行測試:

  1. 透過 USB 將 DUT 連接至主機。
  2. 授予主機權限,透過 ADB 存取 DUT。
  3. 在 DUT 上安裝 CTS Verifier 應用程式 (CtsVerifier.apk):

    extract root/out/host/linux-x86/cts-verifier/android-cts-verifier.zip
    
    cd android-cts-verifier
    
    adb install -r -g CtsVerifier.apk
    
  4. 安裝 NFC 測試所需的 APK:

    cd MultiDevice
    
    adb install -r -g NfcEmulatorTestApp.apk
    

為 DUT 設定 NFC

請按照下列步驟為 DUT 設定 NFC:

  1. 在 DUT 上前往「設定」選單。
  2. 尋找「NFC」或「已連結的裝置」部分。
  3. 確認 NFC 切換開關已開啟。
  4. 將手機的 NFC 晶片對準 NFC 讀取器:

    1. 取得 PN532 NFC 晶片。建議使用「All-In-One PN532」,這是非 BLE 選項。
    2. 使用 USB 傳輸線將 PN532 NFC 晶片連接至 Linux 主機。
    3. 將 PN532 NFC 晶片放在手機的 NFC 讀取器上,如下圖所示:

    NFC 晶片位置

    圖 1. NFC 晶片位置。

設定測試環境

請按照下列步驟設定測試環境:

  1. 執行下列指令來設定測試環境:

    cd MultiDevice
    
    source build/envsetup.sh
    

    這項指令會檢查 Python,並設定 PYTHONPATH 環境變數。如果終端機未列印任何錯誤,表示環境已準備就緒,可以執行多裝置測試。

    如果在執行階段看到 libtinfo.so.6: no version information available (required by /bin/sh) 錯誤訊息,請執行下列指令,重新命名 libtinfo.so.6 檔案:

    mv $ENV_DIRECTORY/lib/libtinfo.so.6 $ENV_DIRECTORY/lib/libtinfo.so.6.bak
    
  2. MultiDevice/config.yml 中設定 DUT 和 PN532 NFC 讀取器的裝置序號 ID,藉此設定測試平台:

    TestBeds:
      - Name: CtsNfcHceMultiDeviceTestCases-py-ctsv
        Controllers:
          AndroidDevice:
            - serial: "<device-id>"
        TestParams:
          pn532_serial_path: "<pn532-serial-path>"
    

執行 NFC 測試

如要執行 NFC 測試,請按照下列步驟操作:

  1. 開啟 CTS-V 應用程式,然後輕觸「NFC Tests」

    CTS-V 應用程式

    圖 2. CTS-V 應用程式。

    系統會顯示資訊視窗,內含測試案例清單:

    CTS-V 應用程式測試案例

    圖 3. CTS-V 應用程式測試案例。

  2. 在主機上執行測試:

    MultiDevice$ python3 tools/run_all_tests.py
    

    測試完成後,CTS-V 應用程式會更新測試結果。測試成功會以綠色表示:

    CTS-V 測試結果

    圖 4. CTS-V 測試結果。

  3. 如果看到以紅色標示的失敗項目,請使用下列指令重新執行失敗的測試:

    python3 tools/run_all_tests.py --test_cases "`TestCaseA`" "`TestCaseB`" --test_files "`TestFileA`"
    

    其中:

    • TestCaseATestCaseB 是 CTS-V 中顯示的測試案例名稱。
    • TestFileA 是包含測試案例的測試檔案。

    例如:

    python3 tools/run_all_tests.py --test_cases "test_conflicting_non_payment" "test_conflicting_non_payment_prefix" --test_files "CtsNfcHceMultiDeviceTestCases-py-ctsv"