运行多设备 NFC 测试

本文档介绍了如何运行多设备 NFC 测试。

满足前提条件

在运行多设备 NFC 测试之前,请满足以下条件:

  1. 准备一部搭载 Android 15 实现的设备。
  2. 遵循 CTS-V 要求
  3. 遵循 CTS-V 设置

为测试准备一个 DUT 和一个 PN532 NFC 读取器

完成上述步骤后,请按照以下步骤为测试准备一个 DUT 和一个 PN532 NFC 读取器:

  1. 通过 USB 将 DUT 连接到主机。
  2. 向主机授予通过 adb 访问 DUT 的权限。
  3. 将 CTS 验证程序应用 (CtsVerifier.apk) 安装到 DUT 上:

    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"