使用 CTS 验证程序

Android 兼容性测试套件验证程序 (CTS 验证程序) 是对兼容性测试套件 (CTS) 的补充。虽然 CTS 检查可以自动化的 API 和功能,但 CTS 验证程序为无法在静止设备上进行测试的 API 和功能提供测试,这些功能需要手动输入或定位,例如音频质量、触摸屏、加速度计和相机。

要求

在运行 CTS 验证程序之前,请确保您拥有以下设备

  • 已通过 CTS 并经过 Android API 兼容性验证的 Android 设备。这是被测设备 (DUT)。
  • 带有 USB 2.0 兼容端口的 Linux 计算机。与 DUT 的所有连接都通过此端口进行。
  • 第二台 Android 设备,具有已知的兼容蓝牙、Wi-Fi Direct、Wi-Fi Aware、UWB(如果 DUT 支持 UWB)和 NFC 主机卡模拟 (HCE) 实现。
  • 配置了接入点名称和密码的 Wi-Fi 路由器。路由器应能够断开与互联网的连接,但不要断电。

确保您还准备好三脚架、设备支架以及 UWB、Wi-Fi NAN 和蓝牙 RSSI 的距离(近距离)测量测试所需的预先测量距离。有关详情,请参阅近距离感应校准

NFC 测试的 UICC 要求

CTS 验证程序具有以下 NFC 测试用例

  • Field-off(使用来自 0x54 的事务数据)
  • De-select(使用来自 0x52 的事务数据)
  • HCI 命令 (0025000000)(使用来自 0x02 的事务数据)

事务事件测试需要两台设备,其中一台设备必须具有带有以下访问规则的 SecureElement UICC

  • CtsVerifier APK 哈希值:61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81
  • NFC 事件访问的授权应用标识符 (AID):0xA000000476416E64726F696443545341

在模拟器端,我们希望事务事件将相应的 Activity 推送到前台。

设置

按如下方式将测试设备的系统导航模式更改为三按钮模式

  1. 打开设置
  2. 导航至系统 > 手势 > 系统导航
  3. 选择任何基于按钮的导航模式,如果可用,首选三按钮模式。

要设置 CTS 验证程序测试环境,请执行以下操作

  1. 在 Linux 计算机上

    • 在安装 CTS 验证程序之前运行以下命令,以允许访问非 SDK 接口。

      adb shell settings put global hidden_api_policy 1
      
    • 安装 Android Studio

    • 下载要测试的 Android 版本的 CTS 验证程序 APK

  2. 将 DUT 连接到 Linux 计算机。

  3. 从 Linux 计算机上的终端,在 DUT 上安装 CtsVerifier.apk

    adb install -r -g CtsVerifier.apk
    
  4. 对于 Android 10 及更高版本,运行以下命令以授予应用创建报告的权限。

    adb shell appops set com.android.cts.verifier android:read_device_identifiers allow
    
  5. 对于 Android 11 及更高版本,运行以下命令以允许将报告保存在设备外部顶层目录下的自定义目录中。

    adb shell appops set com.android.cts.verifier MANAGE_EXTERNAL_STORAGE 0
    
  6. 对于 Android 13 及更高版本,运行以下命令以允许测试 API 访问 CTS 验证程序。

    adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier
    
  7. 对于 Android 14 及更高版本,运行以下命令以授予应用开启屏幕的权限。

    adb shell appops set com.android.cts.verifier TURN_SCREEN_ON 0
    
  8. 确保 DUT 的系统日期和时间设置正确。

运行 CTS 验证程序

通过点按 DUT 上的 CTS 验证程序 图标启动 CTS 验证程序应用。

CTS Verifier icon in launcher

图 1. CTS 验证程序图标

该应用会显示多个可用于手动验证的测试集。

CTS Verifier menu of tests

图 2. CTS 验证程序测试菜单

每个测试都在屏幕底部包含一组通用元素。

Streaming video quality verifier

图 3. 突出显示了通用测试元素的测试屏幕

  • 通过 (✓)。如果 DUT 符合“信息”说明中的测试要求,请点按此项。
  • 信息 (?)。点按以显示测试说明。首次打开测试时也会自动显示。
  • 未通过 (!)。如果 DUT 不符合“信息”说明中的测试要求,请点按此项。

某些测试(例如 USB 配件模式和相机校准测试)需要额外的测试设置和说明,详情请见以下部分。

测试 8.0 及更高版本的 USB 配件模式

CTS Verifier usb accessory test

图 4. 8.0 及更高版本的 USB 配件测试步骤

CTS Verifier usb accessory test

图 5. 测试 8.0 及更高版本的 USB 配件模式

测试 7.x 及更低版本的 USB 配件模式

USB 配件测试需要 Linux 计算机运行 USB 桌面机器(主机)程序。

  1. 将 DUT 连接到 Linux 计算机。
  2. 在计算机上,从 CTS 验证程序软件包执行 cts-usb-accessory 程序

    ./cts-usb-accessory
  3. 等待弹出消息出现在 DUT 上,然后选择确定
    CTS Verifier usb accessory test

    图 6. USB 配件测试

  4. 转到 DUT 上 CTS 验证程序应用中的 USB 配件测试

  5. 在计算机上,查看控制台的输出。示例输出

    CTS USB Accessory Tester
    Found possible Android device (413c:2106) - attempting to switch to accessory
    mode...
    Failed to read protocol versionfigure3
    Found Android device in accessory mode (18d1:2d01)...
    [RECV] Message from Android device #0
    [SENT] Message from Android accessory #0
    [RECV] Message from Android device #1
    [SENT] Message from Android accessory #1
    [RECV] Message from Android device #2
    [SENT] Message from Android accessory #2
    [RECV] Message from Android device #3
    [SENT] Message from Android accessory #3
    [RECV] Message from Android device #4
    [SENT] Message from Android accessory #4
    [RECV] Message from Android device #5
    [SENT] Message from Android accessory #5
    [RECV] Message from Android device #6
    [SENT] Message from Android accessory #6
    [RECV] Message from Android device #7
    [SENT] Message from Android accessory #7
    [RECV] Message from Android device #8
    [SENT] Message from Android accessory #8
    [RECV] Message from Android device #9
    [SENT] Message from Android accessory #9
    [RECV] Message from Android device #10
    [SENT] Message from Android accessory #10
    

校准相机视野

使用视野校准程序可以快速确定设备的视野,且精度适中。

  1. 设置测试环境

    1. 在 11 英寸 x 17 英寸或 A3 尺寸的纸张上打印 calibration-pattern.pdf 目标文件。
    2. 将打印的图案装裱在硬质背板上。
    3. 如图所示,调整相机设备和打印的目标图案的方向。
      Camera printed target

      图 7. 相机打印目标图案

  2. 设置目标宽度

    1. 测量目标图案上实线之间的距离(以厘米为单位),以考虑打印误差(约 38 厘米)。
    2. 启动校准应用。
    3. 按下设置按钮,然后选择标记距离
    4. 测量并输入到目标图案的距离(约 100 厘米)。
    5. 按下返回按钮以返回到校准预览。
  3. 验证设备和目标图案是否如图所示放置,并且已在设置对话框中输入正确的距离。预览会显示叠加了垂直线的图像;此线应与目标图案的中心线对齐。透明网格可以与其他垂直线一起使用,以确保光轴与目标图案正交。

  4. 运行校准测试

    1. 选择图像分辨率(使用左下角的选择器),然后点按屏幕拍照。测试进入校准模式,并显示叠加了两条垂直线的照片。
    2. 确定精度
      • 如果线条在几厘米内与目标图案上的垂直线对齐,则所选分辨率的报告视野是准确的。
      • 如果线条未对齐,则报告的视野不准确。要纠正此问题,请调整屏幕底部的滑块,直到叠加层尽可能靠近目标图案对齐。当叠加层和目标图案图像对齐时,显示的视野接近正确值。报告的视野应在校准值的 +/-2 度范围内。
    3. 按下返回按钮,并针对 DUT 支持的所有图像分辨率重复校准测试。

针对备用模式运行 CTS 验证程序

从 CTS 10 R6 和 CTS 11 R2 版本开始,CTS 验证程序支持备用模式设备或具有多个屏幕模式的设备所需的测试。

在 CTS 验证程序主列表视图的顶部,显示了一个按钮,用户可以通过该按钮在展开和折叠显示模式之间切换。CTS 验证程序将显示所选显示模式所需的测试。要在 CTS 验证程序中执行备用模式,应将按钮切换到相应的显示模式并运行显示的测试列表。

CTS-V toggle switch

图 8. CTS 验证程序切换开关

折叠测试的结果将与展开测试的结果记录在同一报告中。为了识别每个测试结果来自哪个测试集,将在折叠模式下的每个测试名称下添加后缀。

<Test result="fail" name="com.android.cts.verifier.deskclock.DeskClockTestsActivity[folded]">
  <RunHistory subtest="CREATE_ALARM[folded]">
    <Run start="1594176663973" end="1594176665841" isAutomated="false" />
  </RunHistory>
</Test>

导出结果

在所有测试完成后,您可以将结果另存为报告并将其下载到计算机。报告名称会根据 DUT 系统时间自动添加时间戳。

  1. 要保存测试结果,请点按测试类别列表顶部的保存(磁盘)图标。

  2. 等待弹出消息,其中显示保存报告的文件路径(例如,/sdcard/verifierReports/ctsVerifierReport-date-time.zip),然后记录该路径。

  3. 将 DUT 连接到 Linux 计算机。

  4. 从 Linux 计算机上的 Android SDK 安装中,使用 adb shell content readadb pull CTSVerifierReportPath 从连接的设备下载报告。

    • 对于 Android 7.x 及更高版本,使用以下命令下载所有报告

      adb pull /sdcard/verifierReports
      
    • 对于 Android 6.0 及更低版本,使用以下命令下载所有报告

      adb pull /mnt/sdcard/ctsVerifierReports/
      
    • 对于 Android 10 及更高版本,实施汽车设备和作为辅助用户运行的设备,使用以下命令下载最新报告

      adb shell content read --user CURRENT_USER --uri
      
      content://com.android.cts.verifier.testresultsprovider/reports/latest > report.zip
      

      要列出连接设备中可用的所有报告

      adb shell content query --user CURRENT_USER --uri
      
      content://com.android.cts.verifier.testresultsprovider/reports
      

      要从列表中下载报告,您可以指定行 ID 或文件名。例如

      adb shell content read --user CURRENT_USER --uri
      
      content://com.android.cts.verifier.testresultsprovider/reports/0 > report.zip
      
      adb shell content read --user CURRENT_USER --uri
      
      content://com.android.cts.verifier.testresultsprovider/reports/ctsVerifierReport-date-time.zip >
      report.zip
      
  5. 要清除通过/未通过结果,请在 CTS 验证程序应用中选择结果,然后选择菜单 > 清除