AOSP>设计>测试>兼容性测试套件CTS

  • 第三节 兼容性测试套件(CTS)
    • 概览
      • 工作流程
      • 测试用例的类型
      • 涵盖的领域
    • 设置CTS
      • 物理环境
        • 蓝牙 LE 信标
        • 相机
        • GPS/GNSS
        • WLAN 和 IPv6
        • Wi-Fi RTT(往返时间)
      • 台式机设置
        • ADB 和 AAPT
        • Java 开发套件 (JDK)
        • CTS 文件
        • 设备检测
      • Android 设备设置
        • 用户版本
        • 初始 API 级别版本属性
        • CTS Shim 应用
        • 示例小程序
        • 存储空间要求
        • 屏幕和存储空间
        • 开发者 UICC
      • Android 设备配置
    • 运行CTS (Android S)
      • 概览
        • CTS tradefed 使用入门
        • 使用 CTS v2 控制台
          • 选择计划
          • CTS v2 控制台命令参考
        • 使用 CTS v1 控制台
          • 选择计划
          • CTS v1 控制台命令参考
      • 在本地运行媒体测试
        • 资料下载
        • 设置CTS媒体测试
          • SD卡方法(仅适用于CtsMediaTestCases)
          • 本地服务器方法(仅适用于CtsMediaTestCases)
          • 主机方法(对于所有三个模块)
        • 运行CTS媒体测试
          • SD卡方法(仅适用于CtsMediaTestCases)
          • 本地服务器方式
          • 主机方法
    • 命令控制台
      • CTS v2 命令控制台
        • 使用CTS v2控制台
          • 选择计划
          • CTS v2控制台命令参考
      • CTS v1 命令控制台
    • 免安装应用
      • 免安装应用限制
      • 在免安装应用模式下运行的测试
      • 免安装模式下的测试失败情况
      • 问题排查
    • 运行CTS验证程序
      • 概览
        • 要求
        • 设置
        • 运行
          • 测试 USB 配件模式
          • 校准相机视野
      • 音频框架
        • 环回插头延迟测试
        • 音频线路频响测试
        • 扬声器音频频响测试
        • 麦克风音频频响测试
        • 音频频响未处理测试
      • 近超声测试
        • 近超声麦克风测试
        • 近超声扬声器测试
      • 旋转矢量交叉检验
        • 测试
        • 问题排查
        • 报告反馈
      • CTS 验证程序 MIDI 测试
        • 连接所需的外设
        • 环回测试
        • USB MIDI 环回测试
        • 虚拟 MIDI 环回测试
        • 蓝牙 MIDI 环回测试
      • USB 音频 CTS 测试
        • 术语
        • 指定外设
          • USB 音频接口
          • USB 耳机
        • 所需的其他硬件
        • 测试
          • 属性测试
          • 播放测试音轨
          • 录制(回环)测试
          • 耳机按钮测试
      • CTS 验证程序专业音频测试
        • 选择音频外围设备
        • 运行专业音频测试
      • 适用于免安装应用的 CTS 验证程序
        • 要求
        • 在DUT上安装Instant App
        • 运行
    • 相机测试(相机 HAL 测试核对清单)
      • 相机 HAL 测试
        • 相机 HAL3 规范
        • 相机测试类型
        • 供应商测试套件 (VTS) 测试
        • 兼容性测试套件 (CTS) 测试
          • 针对 android.hardware.Camera API 的 CTS 测试
          • 针对 android.hardware.camera2 API 的 CTS 测试
          • CTS 验证程序相机测试
        • 图像测试套件 (ITS) 测试
          • 场景 0-4 测试
          • 场景 5 测试
          • 传感器融合测试
        • 媒体框架测试
          • 运行媒体框架测试
          • 媒体设置功能测试
          • 媒体集成测试
          • 媒体性能测试
          • 媒体单元测试
          • 媒体压力测试
        • 手动 TestingCam 测试
          • 通过倾斜相机进行无限远对焦
        • 手动 TestingCam2 测试
          • JPEG 拍照
      • 相机盒装 ITS
        • 概览
          • 使用入门
        • 配置平板电脑
        • 运行测试
          • 运行场景 0-4
          • 重新运行场景
          • 运行场景 5
        • 获取结果
        • 针对平板电脑的要求
        • 常见问题解答 (FAQ)
          • 问题 1:如何确定我的设备需要哪些测试装置?
          • 问题 2:如何指定使用哪个测试装置?
          • 问题 3:如何控制平板电脑亮度?
          • 问题 4:如何调试单个测试?
          • 问题 5:为什么需要将失败的测试合并为一个整体场景运行,而不是单独重新运行每个测试?
          • 问题 6:如何运行单个场景或重新排列场景运行顺序?
          • 问题 7:场景 1 中的许多测试在采用平板电脑设置时会失败,但在采用纸质图表时会通过。这是怎么回事?
          • 问题 8:如何调试传感器融合测试?
          • 问题 9:报告测试错误时应提供哪些信息?
        • 常规视野盒装 ITS
          • 购买 RFoV 盒装 ITS
          • 组装 RFoV 盒装 ITS
          • 机械图纸
          • 所需工具
          • 第 1 步:贴乙烯基膜并粘贴支脚
          • 第 2 步:照明
          • 第 2 步:手机托架
          • 第 4 步:孔板
          • 第 5 步:平板电脑托架
          • 第 6 步:安装灯
          • 第 7 步:组装侧板、平板电脑托架和手柄
          • 第 8 步:最后的组装和设置
          • 注意事项
          • 修订历史记录
        • 宽视野盒装 ITS
      • 传感器融合盒
        • 传感器融合盒快速入门
        • 传感器融合盒详细信息
        • 机架式传感器融合控制器组装
    • 安全元件
    • 解读CTS 测试结果
      • 阅读测试结果
      • 查看 test_result.xml 以了解未完成的测试模块
    • CTS开发
      • 初始化您的 Repo 客户端
      • 构建和运行 CTS
      • 编写 CTS 测试
        • 测试命名和位置
        • 新建示例软件包
      • 修复或移除测试
      • 提交您的更改
        • 发布时间表和分支信息
        • 自动合并流程
    • 下载
      • Android 10
      • Android 9
      • Android 8.1
      • Android 8.0
      • Android 7.1
      • Android 7.0
      • Android 6.0
      • Android 5.1
      • Android 5.0
      • Android 4.4
      • Android 4.3
      • Android 4.2
      • Android 4.1
      • Android 4.0.3
      • Android 2.3
      • Android 2.2
      • Android 2.1
      • Android 1.6
      • CTS 媒体文件
      • 更早的 Android 版本
    • 版本说明

第三节 兼容性测试套件(CTS)

概览

兼容性测试套件 (CTS) 是一个免费的商业级测试套件,可在此处下载。CTS 代表兼容性的“机制”。

CTS 可在桌面设备上运行,并直接在所连接的设备或模拟器上执行测试用例。CTS 是一套单元测试,可以集成到工程师构建设备的日常工作流程(例如通过连续构建系统)。其目的是尽早发现不兼容性,并确保软件在整个开发过程中保持兼容性。

CTS 是一个自动化测试套件,它使用两个主要软件组件:

  • CTS Trade Federation 自动化测试框架会在桌面设备上运行,并管理测试执行情况。此框架可实现对多个被测设备 (DUT) 进行分片测试。您还可以利用套件重试功能仅重试失败的测试而不是完整的套件,从而大大减少重新运行所花的时间。
    单独的测试用例会在 DUT 上执行。测试用例采用 Java 语言编写为 JUnit 测试,并打包为 Android .apk 文件,以在实际目标设备上运行。
  • 兼容性测试套件验证程序(CTS 验证程序)是对 CTS(可在此处下载)的补充。CTS 验证程序为无法在没有手动输入(例如音频质量、加速度计等)的固定设备上进行测试的 API 和功能提供测试。

CTS 验证程序是一款手动测试工具,包含以下软件组件:

  • 在 DUT 上执行并收集结果的 CTS 验证程序应用。

  • 在桌面设备上执行,以便为 CTS 验证程序应用中的某些测试用例提供数据或额外控制的可执行文件或脚本。


单元测试用例涵盖以下领域,以确保兼容性:

领域 说明
签名测试 每个 Android 版本中都包含一个 XML 文件,用于描述该版本中包含的所有公共 API 的签名。CTS 包含一个实用工具,用于根据设备上可用的 API 检查这些 API 签名。签名检查的结果会记录在测试结果 XML 文件中。
平台 API 测试 按照 SDK 类索引所述内容来测试平台(核心库和 Android 应用框架)的 API,以确保 API 的正确性,包括正确的类、属性、方法签名以及正确的方法行为;此外还需进行负面测试,以确保不正确的参数处理产生预期行为。
Dalvik 测试 这类测试侧重于测试 Dalvik 可执行格式的文件。
平台数据模型 CTS 会测试通过内容提供程序(如 SDK android.provider 软件包中所述)提供给应用开发者的核心平台数据模型:联系人、浏览器、设置等。
平台 Intent CTS 会测试核心平台 Intent(如 SDK 可用 Intent 中所述)。
平台权限 CTS 会测试核心平台权限(如 SDK 可用权限中所述)。
平台资源 CTS 会测试核心平台资源类型(如 SDK 可用资源类型中所述)的处理是否正确。这包括对以下资源的测试:简单值、可绘制资源、九宫格、动画、布局、样式和主题背景,以及加载备用资源。

设置CTS

物理环境

台式机设置

注意:CTS 目前支持 64 位 Linux 和 Mac OS 主机。CTS 无法在 Windows 操作系统上运行。

Android 设备设置

Android 设备配置

  1. 将设备恢复出厂设置:设置 > 备份和重置 > 恢复出厂设置

    警告:这将清空设备中的所有用户数据。

  2. 将设备的语言设置为英语(美国):设置 > 语言和输入法 > 语言

  3. 如果设备具有 GPS 或 WLAN/移动网络功能,则打开位置信息设置:设置 > 位置信息 > 开启

  4. 连接到满足以下要求的 WLAN 网络:支持 IPv6、可以将被测设备 (DUT) 视为隔离客户端(请参阅上文的物理环境部分),并可连接到互联网。连接网络的具体操作方法为:设置 > WLAN

  5. 确保设备上未设置锁定图案或密码:设置 > 安全 > 屏幕锁定 > 无

  6. 在设备上启用 USB 调试:设置 > 开发者选项 > USB 调试

    注意:在 Android 4.2 及更高版本中,默认情况下会隐藏开发者选项。要显示这些选项,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕以查找开发者选项。要查看其他详细信息,请参阅启用设备上的开发者选项。

  7. 确保将时间设置为 12 小时格式:设置 > 日期和时间 > 使用 24 小时制 > 关闭

  8. 依次选择:设置 > 开发者选项 > 不锁定屏幕 > 开启

  9. 依次选择:设置 > 开发者选项 > 允许模拟位置 > 开启

    注意:此模拟位置设置仅适用于 Android 5.x 和 4.4.x。

  10. 依次选择:设置 > 开发者选项 > 通过 USB 验证应用 > 关闭

    注意:此验证应用步骤在 Android 4.2 中为必需步骤。

  11. 启动浏览器并关闭任何启动/设置屏幕。

  12. 使用 USB 数据线连接用于测试设备的台式机

    注意:将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。选择“允许 USB 调试”。

  13. 在设备上安装和配置帮助程序应用。

    注意:对于 CTS 2.1 R2 - 4.2 R4 的版本,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:

     adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
    

    在设备上,依次启用:设置 > 无障碍 > 无障碍 > Delegating Accessibility Service

    注意:对于 7.0 之前的 CTS 版本,请在声明 android.software.device_admin 的设备上设置您的设备,以使用以下命令执行设备管理测试:

    adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk
    

    依次点击“设置”>“安全”>“选择设备管理器”,然后启用两个 android.deviceadmin.cts.CtsDeviceAdminReceiver* 设备管理器。确保 android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver和任何其他预加载的设备管理器均保持停用状态。

  14. 将 CTS 媒体文件复制到设备上,如下所示:

    注意:对于 CTS 2.3 R12 及更高版本,如果设备支持视频编解码器,则必须将 CTS 媒体文件复制到设备上。

    • 导航 (cd) 到下载并解压缩媒体文件的目标路径。
    • 更改文件权限:chmod u+x copy_media.sh
    • 运行 copy_media.sh
      • 要复制分辨率不超过 720x480 的剪辑,请运行:./copy_media.sh 720x480
      • 如果您不确定最大分辨率,请尝试运行 ./copy_media.sh all,以便复制所有文件。
      • 如果 adb 下有多个设备,请将 -s(序列号)选项添加到末尾。例如,要将分辨率不超过 720x480 的文件复制到序列号为 1234567 的设备,请运行:./copy_media.sh 720x480 -s 1234567

运行CTS (Android S)

概览

  • CTS tradefed 使用入门

    您可以参阅 Trade Federation 概述,了解有关 Trade Federation(简称 tradefed 或 TF)持续测试框架的说明。

    运行测试计划的操作如下:

    1. 至少连接一个设备。

    2. 在开始运行 CTS 时,按主屏幕按钮将设备设置为显示主屏幕。

    3. 当设备在运行测试时,不能执行任何其他任务,并且必须保持静止状态(以免触发传感器活动),同时要让相机指向某个可以聚焦的对象。

    4. 在运行 CTS 时,不要按设备上的任何键。按测试设备上的键或触摸其屏幕会干扰正在运行的测试,并且可能导致测试失败。

    5. 通过运行解压缩 CTS 包所得文件夹中的 cts-tradefed 脚本(例如 $ ./android-cts/tools/cts-tradefed)启动 CTS 控制台。

    6. 通过附加以下命令启动默认测试计划(包含所有测试包):run cts --plan CTS。这将启动测试兼容性所需的所有 CTS 测试。

      • 对于 CTS v2(Android 7.0 及更高版本),您可以输入 list modules 来查看测试模块列表。
      • 对于 CTS v1(Android 6.0 及更低版本),您可以输入 list plans 来查看存储区中的测试计划列表,也可以输入 list package 来查看存储区中的测试包列表。
    7. 或者,您也可以使用以下命令,从命令行中运行所选的 CTS 计划:cts-tradefed run cts --plan

      注意:您可以通过使用 run cts-dev 命令(而非 run cts)来缩减在 Android 7.0 (Nougat) 及更高版本中的运行时间。此命令会跳过前提条件、设备信息收集和所有系统状态检查工具。它还仅在单个 ABI 上运行测试。对于设备验证,请忽略此优化操作并添加所有前提条件和检查。

    8. 查看控制台中报告的测试进度和结果。

    9. 如果您的设备搭载的是 Android 5.0 或更高版本,并且声明支持 ARM 和 x86 ABI,则 ARM 和 x86 CTS 包都应运行。

    10. (可选)利用套件重试功能重新运行测试的以前会话:

      • 使用以下命令查看以前的会话:

           cts-tf > l r
        
      • 确定您需要的会话编号,并将其代入以下命令中:

         cts-tradefed run retry --retry <session-number>
        

        若要详细了解如何实现重试功能,请参阅 Trade Federation 的套件重试页面。

  • 使用 CTS v2 控制台

    对于 Android 7.0 或更高版本,您将使用 CTS v2。

    • 选择计划

      您可以选择以下测试计划:

      • cts - 从预装的 CTS 套件运行 CTS。
      • cts-camera - 从预装的 CTS 套件运行 CTS-camera。
      • 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 - 在现有设备上运行单个基于主机的测试。
      • instrument - 在现有设备上运行单个 Android 工具测试。
      • native-benchmark - 在现有设备上运行原生压力测试。
      • native-stress - 在现有设备上运行原生压力测试。
      • recharge - 等待设备的电量接近耗尽状态,然后让设备保持充电状态的虚设测试。
      • testdef - 在现有设备上运行包含在 test_def.xml 文件中的测试。
      • util/wifi - 用于在设备上配置 Wi-Fi 的实用程序配置。
      • util/wipe - 擦除设备上的用户数据。

      所有这些计划和配置都可以使用 run cts 命令执行。

  • CTS v2 控制台命令参考

    表 1. 该表总结了用于各种用途的 CTS V2 控制台命令。

  • 使用 CTS v1 控制台

    对于 Android 6.0 或更早版本,您将使用 CTS v1。

    • 选择计划

      您可以选择以下测试计划:

      • CTS - 测试兼容性所需的所有测试。
      • Signature - 所有公开 API 的签名验证
      • Android - 针对 Android API 的测试
      • Java - 针对 Java 核心库的测试
      • VM - 针对 ART 或 Dalvik 的测试
      • Performance - 针对实施的性能测试

      您可以使用 run cts 命令执行这些测试。

    • CTS v1 控制台命令参考

      表 1. 该表总结了用于各种用途的 CTS v1 控制台命令。

  • 在本地运行媒体测试

    我们在CTS中添加了可以使媒体测试模块通过以下方式运行的功能:

    将内容加载到被测设备(DUT)SD卡上。
    将媒体文件托管在CTS的本地服务器上。
    将媒体文件托管在用于执行测试套件的主机上。
    CTS可以连接到合作伙伴,本地或第三方服务器。 CTS无法连接到Google服务器。

    • 资料下载

      下载文件如下所示。

      • CTS Media 1.5

        • CtsMediaTestCases
        • CtsMediaStressTestCases
        • CtsMediaBitstreamsTestCases
      • (可选)仅CtsMediaTestCases媒体文件
    • 设置CTS媒体测试

      • 将android-cts-media-1.5.zip的下载内容解压缩到android-cts-media-1.5文件夹中。
      • 将CtsMediaTestCases.zip媒体文件的下载内容解压缩到CtsMediaTestCases文件夹中。

      CtsMediaTestCases模块支持SD卡方法和本地服务器托管方法。

      • SD卡方法(仅适用于CtsMediaTestCases)

        将文件复制到设备SD卡上,然后使用以下命令运行模块。

        $adb push CtsMediaTestCases /sdcard/
        
      • 本地服务器方法(仅适用于CtsMediaTestCases)
        1. (可选)在本地服务器上托管DynamicConfig.json 。
        2. 具有一个启用了https且具有有效CA证书且未经身份验证的本地服务器。例如,https://example.com。
        3. 将媒体文件托管在该服务器上并获取URL。
        4. 修改DynamicConfig.json并将其托管在同一位置。例如,https://example.com/a/b/DynamicConfig.json)。
      • 主机方法(对于所有三个模块)

        将android-cts-media-1.5文件夹移至主机的/ tmp /文件夹中。

    • 运行CTS媒体测试

      • SD卡方法(仅适用于CtsMediaTestCases)

        单模块运行

        $run cts -m CtsMediaTestCases --dynamic-config-url
        https://storage.googleapis.com/cts_media/DynamicConfig_local.json --shard-count 6
        

        这将从dl.google.com上的images文件夹下载文件。如果要使用android-cts-media-1.5.zip的本地images文件夹,请使用以下命令:

        $run cts -m CtsMediaTestCases --module-arg
        CtsMediaTestCases:config-url: https://storage.googleapis.com/cts_media/DynamicConfig_local.json --
        module-arg CtsMediaTestCases:local-media-path:/tmp/android-cts-media -1.5 --shard-count 6
        

        完整的CTS运行(SD卡上的CtsMediaTestCases)

        $run cts --module-arg CtsMediaTestCases:config-url:
        https://storage.googleapis.com/cts_media/DynamicConfig_local.json --module-arg CtsMediaTestCases:
        local-media-path:/tmp/android-cts-media-1.5 --shard-count 6
        
      • 本地服务器方式

        您可以使用自定义本地服务器路径替换默认的JSON配置路径。

        单模块运行

        $run cts -m CtsMediaTestCases --dynamic-config-url
        https://storage.googleapis.com/cts_media/DynamicConfig.json
        

        这将从dl.google.com上的images文件夹下载文件。如果要使用android-cts-media-1.5.zip的本地images文件夹,请使用以下命令:

        $run cts -m CtsMediaTestCases --module-arg CtsMediaTestCases:
        config-url: https://storage.googleapis.com/cts_media/DynamicConfig.json --module-arg
        CtsMediaTestCases:local-media-path:/tmp/android-cts-media-1.5 --shard-count 6
        

        完整的CTS运行(SD卡上的CtsMediaTestCases)

        $run cts --module-arg CtsMediaTestCases:config-url:
        https://storage.googleapis.com/cts_media/DynamicConfig.json --module-arg CtsMediaTestCases:
        local-media-path:/tmp/android-cts-media-1.5 --shard-count 6
        
      • 主机方法

        您可以对主机上的所有三个模块运行CTS媒体测试。

        单独或一起运行模块

        注意:这不能运行完整的CTS。
        运行以下命令以分别运行模块。

        $run cts -m CtsMediaTestCases
        --module-arg CtsMediaTestCases:
        local-media-path:/tmp/android-cts-media-1.5 --shard-count 6
        

        运行以下命令以同时运行所有模块。

        $run cts --include-filter CtsMediaTestCases --module-arg CtsMediaTestCases:local-media-path:
        /tmp/android-cts-media-1.5 --include-filter CtsMediaStressTestCases --module-arg
        CtsMediaStressTestCases:local-media-path:/tmp/android-cts-media-1.5 --include-filter
        CtsMediaBitstreamsTestCases --module-arg CtsMediaBitstreamsTestCases:local-media-path:
        /tmp/android-cts-media-1.5 --shard-count 6
        

        全面运行CTS(带有单独的模块参数)

        $run cts --module-arg CtsMediaTestCases:local-media-path:
        /tmp/android-cts-media-1.5 --module-arg CtsMediaStressTestCases:local-media-path:
        /tmp/android-cts-media-1.5 --module-arg CtsMediaBitstreamsTestCases:local-media-path:
        /tmp/android-cts-media-1.5 --shard-count 6
        

命令控制台

免安装应用

免安装应用是 Android 10 的一项重要功能,因此必须确保这些应用能够正常运行。免安装应用是隐式安装的,因此它们具有的功能有限,并需要在限制更多的安全沙盒中运行。由于这些限制普遍存在,因此系统的任何部分都存在无法正常运行免安装应用的风险。为此,我们创建了一个 CTS 测试子集来确保免安装应用允许的行为正常运作。核心理念就是,尽可能少隔离要移植的测试组,从而最大限度地限制 CTS 大小的增长。在免安装应用模式下运行 CTS,意味着将测试 APK 作为免安装应用进行安装并运行测试。

  • 免安装应用限制

    免安装应用并非由用户安装,因此它们需要在受限沙盒中运行,并受到以下限制:

    • 只能拥有特定权限。
    • 无法看到其他应用,除非这些应用已标记为对免安装应用可见。
    • 只能访问特定的系统设置。
    • 只能访问特定的系统属性。
    • 无法公开服务/提供程序。
    • 可以按照与广播有关的特殊规则收发消息。

    此外,免安装应用还必须选择允许新的安全沙盒添加更多限制。免安装应用的这类特殊行为广泛存在于整个平台上,因此需要一种方法来验证免安装应用是否能在生态系统中的所有设备上按预期运行。

  • 在免安装应用模式下运行的测试

    并非所有 CTS 模块都包含适用于免安装应用的测试。如果模块所测试的功能需要和系统服务器进行交互,则这些测试应在免安装应用模式下运行。例如,OpenGL 测试不会和系统服务器进行交互,因此无需在免安装应用模式下运行,而无障碍功能测试需要和系统服务器进行交互,因此需要在免安装应用模式下运行。

    用户除了需要确定哪些模块适用之外,还需要确定这些模块中的哪些测试适用。例如,测试可插拔架构(例如 AccessibilityService)的服务特定行为不适用于免安装应用模式,因为免安装应用无法向其他应用(包括平台)公开服务,而验证应用端行为的测试则适用于免安装应用模式。再比如,如果某个免安装应用无法拥有某项权限,则可通过测试来验证此权限背后的行为是否可在免安装应用模式下运行。有一组仅适用于免安装应用的测试,可用于验证与此类应用的行为方式(例如,不公开服务或看不到其他应用)有关的规则。通常,这些测试已经编写好,且不需要移植。

  • 免安装模式下的测试失败情况

    如果测试因验证免安装应用无法访问的功能而失败,则表示该测试不适用于免安装应用模式。您可以使用 @AppModeFull 注释测试,将其标记为仅可在完整应用模式下运行。您可以在类级别应用此注释,以排除该类中的所有测试。

    如果测试因免安装应用可以访问的某项功能被破坏而失败,请提交错误。

  • 问题排查

    如果您的测试失败并且系统显示“Failed to install MyCtsModule.apk on DEVICE. Reason: ‘-116’”消息,请在 logcat 上查找 PackageManager 消息。例如,如果系统显示“Can’t replace Full App with Instant App: your_app”消息,则 adb 会先卸载您的应用。

运行CTS验证程序

  • 概览

    Android 兼容性测试套件验证程序(CTS 验证程序)是对兼容性测试套件 (CTS) 的补充。CTS 能够对那些可进行自动化测试的 API 和功能进行测试,而 CTS 验证程序则可以针对必须依赖于手动操作才能在固定设备上进行测试的 API 和功能(例如音频质量、触摸屏、加速度计、相机等)提供测试。

  • 要求

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

  • 设置

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

    1. 在 Linux 计算机上:

      • 安装 Android SDK。
      • 下载与被测 Android 版本对应的 CTS 验证程序 APK。
    2. 将 DUT 连接到 Linux 计算机。
    3. 通过 Linux 计算机上的终端,在 DUT 上安装 CtsVerifier.apk。
      adb install -r -g CtsVerifier.apk
      
    4. 确保 DUT 的系统数据和时间均已正确设置。
  • 运行

    点按 DUT 上的 CTS 图标,启动 CTS 验证程序应用: 图 1. CTS 验证程序图标
    该应用会显示适用于手动验证的多个测试集: 图 2. CTS 验证程序测试菜单。
    每项测试均包含一组共同元素(信息、通过、失败):图 3. 测试元素。

    • 信息 (?)。点按即可显示测试说明。首次打开测试时,系统也会自动显示此按钮。
    • 通过 (✓)。如果 DUT 符合“信息”中规定的测试要求,请点按此按钮。
    • 失败 (!)。如果 DUT 不符合“信息”中规定的测试要求,请点按此按钮。

    注意:在某些测试中,系统会自动确认测试结果为通过/失败。

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

    • 测试 USB 配件模式

      为了运行 USB 配件测试,您需要一台 Linux 计算机来运行 USB 台式机(主机)程序。

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

      2. 在计算机上执行 cts-usb-accessory 程序(存放在 CTS 验证程序包中):

         ./cts-usb-accessory
        
      3. 等待 DUT 上显示弹出消息,然后选择确定图 4. USB 配件测试。

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

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

          CTS USB Accessory TesterFound possible Android device (413c:2106) - attempting to switch to accessorymode...Failed to read protocol versionFound 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. 将相机设备和打印出来的图纸按如下位置和方向摆放:图 5. 相机与打印目标
    2. 设置目标宽度:

      1. 测量目标图案上两条实线之间的距离(以厘米为单位),以考虑打印误差(约 38 厘米)。
      2. 启动校准应用。
      3. 按设置按钮,然后选择“Marker distance”。
      4. 测量并输入到目标图案的距离(大约 100 厘米)。
      5. 按后退按钮返回到校准预览。
    3. 检查设备和目标是否均放在图中所示的位置,以及是否在设置对话框中输入了正确的距离。在预览中,图片上会叠加显示一条垂直线;该垂直线应与目标图案的中心线对齐。透明网格可与其他垂直线配合使用,以确保光轴与目标正交。

    4. 运行校准测试:

      1. 选择图片分辨率(使用左下角的选择器),然后点按屏幕拍摄照片。测试会进入校准模式,并且照片将显示叠加在图片上的两条垂直线。
      2. 确定准确度:
        • 如果这两条线与目标图案上的垂直线是对齐的(误差控制在几个像素内),则针对选定分辨率报告的视野是准确的。
        • 如果没有对齐,则意味着所报告的视野不准确。要进行更正,请调整屏幕底部的滑块,直到叠加显示的垂直线尽可能与目标图案对齐。当叠加显示的垂直线和目标图案图片对齐时,所显示的视野将近似于正确的值。报告的视野与校准值的误差应在 +/- 1 度范围内。
      3. 按后退按钮,对 DUT 所支持的所有图片分辨率执行上述校准测试操作。

    导出结果
    完成所有测试后,您可以将结果另存为报告并下载到计算机上。报告名称会自动加上时间戳(基于 DUT 系统时间)。

    1. 点按**保存(磁盘)**图标。图 6. CTS 验证程序保存图标。

      注意:Android 7.0 及更高版本不包含预览功能。

    2. 等待弹出消息显示报告保存的路径(例如 /sdcard/verifierReports/ctsVerifierReport-date-time.zip),然后记录该路径。图 7. CTS 验证程序报告保存的路径。

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

    4. 通过在 Linux 计算机上安装的 Android SDK,使用 adb pull CTSVerifierReportPath 在已连接的设备中下载报告。

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

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

        adb pull /mnt/sdcard/ctsVerifierReports/
        
    5. 要清除通过/失败结果,请在 CTS 验证程序应用中选择这些结果,然后依次选择“菜单”>“清除”。

  • 音频框架

    这套新测试需要人为干预,并会用到一些外部硬件,包括音频环回加密狗、USB 参照麦克风和外部扬声器。对于没有 3.5 毫米 (⅛") 耳机接口的设备,用户可以跳过相应测试并将其标记为成功。有关详情,请参阅以下部分。

    • 环回插头延迟测试

      音频的往返延迟是指录制、处理并回放音频信号所需的时间。

      要使用 CTS 验证程序测量往返延迟,请将环回插头插入 3.5 mm (⅛") 耳机接口。(如果您没有环回插头,可以按照音频环回适配器中的说明轻松制作一个)。

      CTS 验证程序环回测试
      显示说明摘要
      设备是否具有耳机接口:
      如果被测设备具有物理耳机接口,则为 YES如果没有耳机接口,则为 NO
      上一步中的回答为 NO,则按测试底部的 通过(绿色的勾选按钮)完成测试
      上一步中的回答为 YES,请继续连接环回插头。
      将环回插头连接到耳机接口
      按 Loopback Plug Ready 按钮
      滑块,直到信号电平大于 60%
      按 TEST
      几秒,直到延迟测试完成
      完成后,屏幕上会显示显示结果 成功的测试,
      其置信水平 (Confidence Level) 不能低于 0.6
      延迟时间数值越低越好,但不强制要求达到某个数值
      过(绿色按钮,仅在测试通过时才可用)或失败(红色按钮)来记录结果。
    • 音频线路频响测试

      此测试使用环回插头来测试左/右音频线路的输出情况,然后使用来自环回插头的麦克风反馈来截取音频,并计算每个通道的频率响应。

      对于每个通道,我们会针对每个频段(四个中的一个)设置一个简单的最低能量标准。

      CTS 音频线路频响测试
      显示说明摘要
      设备是否具有耳机接口:
      如果被测设备具有物理耳机接口,则为 YES
      如果没有耳机接口,则为 NO
      上一步中的回答为 NO,则按测试底部的 通过(绿色的勾选按钮)完成测试
      上一步中的回答为 YES,请继续连接环回插头
      将环回插头连接到耳机接口(请参阅环回插头延迟测试)
      按 Loopback Plug Ready 按钮
      TEST
      几秒钟,直到频响测试完成
      结束后,屏幕上会显示结果
      过按钮(仅在测试通过时才可用)或失败按钮来记录结果。
    • 扬声器音频频响测试

      此测试使用外部 USB 参照麦克风捕获的信号来评估左路(和右路,如果存在)扬声器的频率响应。

      参照麦克风是指频响平缓、自然的麦克风,通常用于分析和测量设备。

      市面上有一些价格便宜的 USB 参照麦克风(例如,miniDSP USB 测量校准麦克风、Dayton 音频 UMM-6 USB 测量麦克风),主要供家庭影院爱好者用于校准其设置。

      推荐的最低参照麦克风规格:
      介于 100 Hz - 20 kHz 之间的平缓频响:+/- 2 dB
      信噪比为 70 dB(A 加权)
      频率为 1000 Hz,声压级为 127 dB 时,总谐波畸变率小于 1%

      CTS 扬声器音频频响测试
      显示说明摘要
      USB 参照麦克风(请参阅扬声器音频频响测试)
      按 USB REFERENCE MICROPHONE READY
      静的房间内设置 DUT(被测设备),<br并在距离屏幕 20 厘米处垂直于屏幕中心放置 USB 麦克风
      TEST
      几秒钟,直到频响测试完成
      结束后,屏幕上会显示结果
      过按钮(仅在测试通过时才可用)或失败按钮来记录结果。
    • 麦克风音频频响测试

      该测试涉及的硬件比前面的测试多。该测试需要使用以下两种硬件:用作白噪声声源的外部扬声器,以及用作声音参照的 USB 参照麦克风。尽管该测试涉及的硬件更多,但可以使用经济实惠、易于获得的硬件来执行。

      距设备 40 厘米处的外部扬声器用于提供白噪声声源。这些扬声器不需要具有“平缓”频率响应,但需要能够支持最低 100Hz 到最高 20Khz 的频率范围。通常便携式或中等尺寸的有源扬声器(例如 Sony SRS -X5 便携式扬声器)就可以满足要求。

      这里的关键在于使用 USB 参照麦克风执行校准步骤,以估算扬声器的实际频率响应,从而提供可靠的参照来和内置麦克风做比较。

      CTS 麦克风音频频响测试
      显示说明摘要
      静的房间内设置 DUT
      在距离 DUT 屏幕 40 厘米处垂直于屏幕中心放置扬声器(请参阅麦克风音频频响测试)
      设备是否具有耳机接口:
      如果被测设备具有物理耳机接口,则为 YES
      如果没有耳机接口,则为 NO
      上一步中的回答为 NO,则按测试底部的 通过(绿色的勾选按钮)完成测试
      上一步中的回答为 YES,请继续连接外部扬声器。
      使用耳机/线路输出接头连接外部扬声器(请记住要拔掉所有 USB 麦克风)
      按 EXTERNAL SPEAKERS READY
      TEST 1
      几秒钟,直到测试 1 完成。
      1 完成后,屏幕上会显示内置麦克风的结果。
      USB 参照麦克风(请参阅扬声器音频频响测试)
      按 USB REFERENCE MICROPHONE READY
      USB 参照麦克风放置在 DUT 中的内置麦克风旁边,使其朝向外部扬声器
      TEST 2
      几秒钟,直到测试 2 完成
      2 完成后,屏幕上会显示 USB 参照麦克风的结果。
      过按钮(仅在测试通过时才可用)或失败按钮来记录结果。
    • 音频频响未处理测试

      对于该测试,除 USB 参照麦克风和外部扬声器之外,还需要使用声压级电平表(SPL 表)。

      另外值得一提的是,在本测试中,每个测试的播放和测试部分都有自己的按钮。这样做是为了帮助测试不具备简便的播放功能但仍然可以测试未处理录音源的设备。

      CTS 频响未处理测试。
      显示说明摘要。
      静的房间内设置 DUT。使用耳机/线路输出接头连接外部扬声器(确保没有连接任何 USB 麦克风)。

      测试音调
      按 [PLAY] 并将 SPL 表移到扬声器的前面,直到声压级显示为 94 dB SPL。
      SPL 表自扬声器位置沿直线来回移动,直到屏幕上显示的声压级为 94 dB SPL。记下该位置。
      移动 DUT 并将麦克风放置在上一步中找到的位置。按 [TEST]。DUT 会截取一小段音频,然后自动停止播放。如有需要,也可以按 [STOP] 来停止播放。
      测试噪声
      在距离 DUT 屏幕 40 厘米处垂直于屏幕中心放置扬声器(请参阅麦克风音频频响测试)。
      按 [PLAY]。按 [TEST]。等待测试完成。系统会自动停止播放。
      如有需要,也可以按 [STOP] 来停止播放
      USB 背景噪声
      连接 USB 参照麦克风(请参阅扬声器音频频响测试)。将 USB 麦克风放置在 DUT 麦克风附近。
      按 [TEST]。
      此时系统会运行一个简短的测试,并在屏幕上显示结果。
      USB 噪声
      将 USB 麦克风保持在上个测试中的相同位置。

      按 [PLAY]。外部扬声器应播放宽带噪声。按 [TEST]。此时系统会运行一个简短的测试,并在屏幕上显示结果。

      .
      4 个部分的测试后,系统会将每个测试的通过/失败信息更新到总结果中。如有需要,可重复执行测试的各个步骤。
      过按钮(仅在测试通过时才可用)或失败按钮来记录结果。如果 DUT 未定义音频频响未处理功能,仍需要运行测试,但不强制要求每项测试都通过。
  • 近超声测试

    本文档包含执行近超声(以前称为高保真超声)麦克风和扬声器测试的步骤。请参阅音频部分,了解常规音频实施说明。

  • 旋转矢量交叉检验

    旋转矢量 CV 交叉检验

    图 1. 测试图案的缩略图。请下载上面给出链接的完整分辨率图片。

    本页面讲述了对旋转矢量传感器实现的兼容性进行正确测试的步骤。如果设备声明具有 TYPE_ROTATION_VECTOR 复合传感器功能,则应该运行该测试。要了解更多详情,请观看此视频教程。

    • 测试

    1. 在接受测试的 Android 设备上安装 OpenCV Manager。

    2. 从 SourceForge.net 下载 OpenCV-3.0.0-android-sdk.zip 软件包。

    3. 从下载内容中的 apk 文件夹中查找相关 APK。有关从计算机中将 APK 加载到 Android 设备的命令,请参阅安装应用。

    4. 如果存在登录到 Google Play 的有效帐号,则同时在 Google Play 中找到 OpenCV Manager,并在上下文菜单(“…”按钮触发的弹出菜单)中停用自动更新。
      图 2. 在 Google Play 中停用自动更新。

    5. 打印链接的测试图案,并在打印时停用任何缩放选项。横向的 US Letter 纸张应该可以完整打印出该图案,您也可以使用更大尺寸的纸张打印。

      注意:上面正文中的图片分辨率较低,仅用于说明。请勿直接将其作为图案进行打印。

    6. 将该图案放在水平面上。

    7. 在 CTS 验证程序应用中开始旋转矢量 CV 交叉检验。按照下面的指南开启飞行模式,关闭自动屏幕旋转,并调整自动调节亮度和位置信息(如果尚未进行这些更改)。

      图 3. 启动测试。

    8. 当视频预览出现时,将手机放置在图案上方三英尺(或一米)处,使主摄像头朝向图案且屏幕上的黄色标记与图案上的黄色标记在同一角落对齐。

      图 4. 放置测试图案。

    9. 使图案一直完全位于摄像头的取景范围内,同时围绕图案以三个不同的方向旋转 Android 被测设备 (DUT):按照旋转范围指示图的提示,逐个方向进行旋转(1、2,然后是 3,如下图所示)。请保持平稳移动,以达到最佳效果。

      图 5. 操控被测设备。

    10. 拍照后,摄像头预览将消失,且分析过程将开始。耐心等待分析完成;该过程通常需要一到五分钟,具体取决于手机的性能。分析完成后,手机会发出提示音并振动。如果分析成功,屏幕上会出现数值结果。

      图 6. 完成测试。

    11. 点击 NEXT 以转到通过/失败屏幕并查看结果。

      图 7. 通过测试。

    12. 按照以下提示进行操作以获得最佳效果:
      这是一个比较复杂的手动测试,因此您可能需要尝试多次以获得最佳效果。
      测试之前,应对加速度计、陀螺仪和磁力计进行校准,以获得良好效果。
      要了解更多详情,请观看此视频教程。

    • 问题排查

    1. 症状:启动测试用例时或视频录制刚刚完成后测试就崩溃了。
      原因:可能存在 OpenCV Manager 兼容性问题。请检查 logcat 以进行确认。如果确认是兼容性问题,则检查安装的 OpenCV Manager 的版本和架构。
    2. 症状:由于出现“太多无效帧”错误,测试频繁失败。
      原因:可能是由于视频质量较低所致。请确认以下条件:

      • 有足够的环境光用于测试。自然光线通常能实现最佳效果。但是,如果没有自然光线,来自多个角度且不会形成明显阴影的丰富光线也可达到效果。避免低角度光线,以减少眩光。
      • 在视频拍摄期间动作应保持平稳。抖动会导致画面变模糊,并使计算机视觉软件产生混淆。
      • 图案应始终完全位于视频预览范围内,并位于中心附近。图案的大小应为视频预览窗口大小的 1/4 〜 1/2。如果图案太小,则准确度会降低。如果图案太大,则镜头失真会更加明显,而且更难于将图案始终保持在视频录制取景范围内。
      • 摄像头能够很好地聚焦。某些设备在视频录制过程中难以聚焦。这通常是由于场景变化太少,例如纯色的光滑地板表面。通常,将测试图案移到具有纹理表面的位置或在测试图案周围放置物品可帮助解决该问题。
      • 防抖功能已关闭。
    3. 症状:Pitch 和 Roll 测试正常,但 Yaw 测试经常失败。
      原因:首先,确保磁场传感器校准良好。如果没有校准磁场传感器,则旋转矢量无法正常工作。
      此外,偏航轴也可能因拍摄视频而出现故障。对于 Yaw 测试,请让设备保持稳定,然后围绕测试图案行走/移动。用手旋转设备时很难保持视频质量。
    • 报告反馈

      如果上述步骤无法解决问题,请务必按照以下反馈步骤报告您的问题。

      请在报告错误时收集以下信息:

      1. Android 错误报告
      2. 屏幕截图(如果屏幕上有任何错误消息)。
      3. /sdcard/RVCVRecData/ 中的内容。该文件夹包含视频文件,因此如果已进行多次测试,则可能会非常大。清空该文件夹并再次执行测试将有助于减小大小。检查其中的视频文件,找出录制方面的明显问题。
      4. OpenCV Manager 应用的屏幕截图。
  • CTS 验证程序 MIDI 测试

    虽然大多数 CTS 测试活动都会在测试开始时自动进行,但 Android 10 CTS 验证程序中的 MIDI 测试功能需要人为干预,以将适当的外设连接到被测设备。

  • USB 音频 CTS 测试

    针对 Android USB 音频的几项 Android 兼容性测试套件 (CTS) 测试要求以物理方式连接 USB 音频外设。我们为此实现了额外的 CTS 验证程序测试。

    • 术语

    在本文档中,所用的术语“设备”和“外设”具有非常明确的指代含义:

    • “设备”是指 Android 设备。
    • “外设”是指连接到 Android 设备的外部 USB 音频外设。

  • CTS 验证程序专业音频测试

    Android 10及更高版本包括针对Pro Audio合规性的CTS Verifier测试,该测试可测试往返音频延迟。与许多自动运行的CTS Verifier测试不同,Pro Audio测试需要人工干预才能选择适当的外围设备并将其连接到被测设备(DUT)。

    注意: Android 11不推荐使用Dr. Rick O’Rang回送应用程序。

    • 选择音频外围设备

      适当的外围设备应具有足够的回放和记录功能,并且可以直接连接到DUT以准确测量通过音频路径的往返延迟。由于模拟,数字和蓝牙耳机无法直接连接到设备的输出和输入,因此这些外围设备不是合适的外围设备,不能用于Pro Audio测试。

      可接受的外围设备包括:

      • USB音频接口。该外设可以是任何USB音频接口,其输出和输入可以通过跳线直接连接到设备。 USB音频外围设备“播放或录制CTS验证程序”测试所需的所有必需的USB音频接口均满足此外围设备要求。


        图1.示例USB音频接口

        当使用带有输入电平控件的USB接口时,可能需要将控件调整为非零值;这通常在校准信号电平时完成。如果音频接口通过了USB Audio Peripheral Record测试,则该测试中使用的输入电平设置也应在Pro Audio测试中起作用。

      • 回送插头,USB-C数模转换器

        图2.带USB-C数模转换器的环回插头

      • 环回插头,3.5毫米模拟插孔
        图3.带3.5毫米模拟插孔的环回插头

    • 运行专业音频测试

      要运行CTS Verifier Pro音频测试:

      1. 将适当的音频外围设备直接连接到DUT。

      2. 在设备上,启动CTS Verifier应用程序。

      3. 在测试列表中,选择Pro Audio Test

      4. 在Pro Audio Test模块中,验证是否满足测试先决条件(值为true或N / A ),然后点击Round-Trip Test

        图4. CTS Verifier,Pro Audio测试模块

      5. 使用返回的值来验证是否满足所有CDD Pro音频要求。

        • 有关延迟标准,请参阅“专业音频” 。
        • 为了获得足够的置信度值,您可能需要多次运行测试。
      6. 点按
        表示合规。

  • 适用于免安装应用的 CTS 验证程序

    CTS Verifier for Instant Apps通过使用CTS Verifier测试由于OEM特定的UI(例如系统UI)而无法完全自动化的功能,从而增加了Instant Apps的Android兼容性测试范围。

这里写目录标题

  • 第三节 兼容性测试套件(CTS)
    • 概览
      • 工作流程
      • 测试用例的类型
      • 涵盖的领域
    • 设置CTS
      • 物理环境
        • 蓝牙 LE 信标
        • 相机
        • GPS/GNSS
        • WLAN 和 IPv6
        • Wi-Fi RTT(往返时间)
      • 台式机设置
        • ADB 和 AAPT
        • Java 开发套件 (JDK)
        • CTS 文件
        • 设备检测
      • Android 设备设置
        • 用户版本
        • 初始 API 级别版本属性
        • CTS Shim 应用
        • 示例小程序
        • 存储空间要求
        • 屏幕和存储空间
        • 开发者 UICC
      • Android 设备配置
    • 运行CTS (Android S)
      • 概览
        • CTS tradefed 使用入门
        • 使用 CTS v2 控制台
          • 选择计划
          • CTS v2 控制台命令参考
        • 使用 CTS v1 控制台
          • 选择计划
          • CTS v1 控制台命令参考
      • 在本地运行媒体测试
        • 资料下载
        • 设置CTS媒体测试
          • SD卡方法(仅适用于CtsMediaTestCases)
          • 本地服务器方法(仅适用于CtsMediaTestCases)
          • 主机方法(对于所有三个模块)
        • 运行CTS媒体测试
          • SD卡方法(仅适用于CtsMediaTestCases)
          • 本地服务器方式
          • 主机方法
    • 命令控制台
      • CTS v2 命令控制台
        • 使用CTS v2控制台
          • 选择计划
          • CTS v2控制台命令参考
      • CTS v1 命令控制台
    • 免安装应用
      • 免安装应用限制
      • 在免安装应用模式下运行的测试
      • 免安装模式下的测试失败情况
      • 问题排查
    • 运行CTS验证程序
      • 概览
        • 要求
        • 设置
        • 运行
          • 测试 USB 配件模式
          • 校准相机视野
      • 音频框架
        • 环回插头延迟测试
        • 音频线路频响测试
        • 扬声器音频频响测试
        • 麦克风音频频响测试
        • 音频频响未处理测试
      • 近超声测试
        • 近超声麦克风测试
        • 近超声扬声器测试
      • 旋转矢量交叉检验
        • 测试
        • 问题排查
        • 报告反馈
      • CTS 验证程序 MIDI 测试
        • 连接所需的外设
        • 环回测试
        • USB MIDI 环回测试
        • 虚拟 MIDI 环回测试
        • 蓝牙 MIDI 环回测试
      • USB 音频 CTS 测试
        • 术语
        • 指定外设
          • USB 音频接口
          • USB 耳机
        • 所需的其他硬件
        • 测试
          • 属性测试
          • 播放测试音轨
          • 录制(回环)测试
          • 耳机按钮测试
      • CTS 验证程序专业音频测试
        • 选择音频外围设备
        • 运行专业音频测试
      • 适用于免安装应用的 CTS 验证程序
        • 要求
        • 在DUT上安装Instant App
        • 运行
    • 相机测试(相机 HAL 测试核对清单)
      • 相机 HAL 测试
        • 相机 HAL3 规范
        • 相机测试类型
        • 供应商测试套件 (VTS) 测试
        • 兼容性测试套件 (CTS) 测试
          • 针对 android.hardware.Camera API 的 CTS 测试
          • 针对 android.hardware.camera2 API 的 CTS 测试
          • CTS 验证程序相机测试
        • 图像测试套件 (ITS) 测试
          • 场景 0-4 测试
          • 场景 5 测试
          • 传感器融合测试
        • 媒体框架测试
          • 运行媒体框架测试
          • 媒体设置功能测试
          • 媒体集成测试
          • 媒体性能测试
          • 媒体单元测试
          • 媒体压力测试
        • 手动 TestingCam 测试
          • 通过倾斜相机进行无限远对焦
        • 手动 TestingCam2 测试
          • JPEG 拍照
      • 相机盒装 ITS
        • 概览
          • 使用入门
        • 配置平板电脑
        • 运行测试
          • 运行场景 0-4
          • 重新运行场景
          • 运行场景 5
        • 获取结果
        • 针对平板电脑的要求
        • 常见问题解答 (FAQ)
          • 问题 1:如何确定我的设备需要哪些测试装置?
          • 问题 2:如何指定使用哪个测试装置?
          • 问题 3:如何控制平板电脑亮度?
          • 问题 4:如何调试单个测试?
          • 问题 5:为什么需要将失败的测试合并为一个整体场景运行,而不是单独重新运行每个测试?
          • 问题 6:如何运行单个场景或重新排列场景运行顺序?
          • 问题 7:场景 1 中的许多测试在采用平板电脑设置时会失败,但在采用纸质图表时会通过。这是怎么回事?
          • 问题 8:如何调试传感器融合测试?
          • 问题 9:报告测试错误时应提供哪些信息?
        • 常规视野盒装 ITS
          • 购买 RFoV 盒装 ITS
          • 组装 RFoV 盒装 ITS
          • 机械图纸
          • 所需工具
          • 第 1 步:贴乙烯基膜并粘贴支脚
          • 第 2 步:照明
          • 第 2 步:手机托架
          • 第 4 步:孔板
          • 第 5 步:平板电脑托架
          • 第 6 步:安装灯
          • 第 7 步:组装侧板、平板电脑托架和手柄
          • 第 8 步:最后的组装和设置
          • 注意事项
          • 修订历史记录
        • 宽视野盒装 ITS
      • 传感器融合盒
        • 传感器融合盒快速入门
        • 传感器融合盒详细信息
        • 机架式传感器融合控制器组装
    • 安全元件
    • 解读CTS 测试结果
      • 阅读测试结果
      • 查看 test_result.xml 以了解未完成的测试模块
    • CTS开发
      • 初始化您的 Repo 客户端
      • 构建和运行 CTS
      • 编写 CTS 测试
        • 测试命名和位置
        • 新建示例软件包
      • 修复或移除测试
      • 提交您的更改
        • 发布时间表和分支信息
        • 自动合并流程
    • 下载
      • Android 10
      • Android 9
      • Android 8.1
      • Android 8.0
      • Android 7.1
      • Android 7.0
      • Android 6.0
      • Android 5.1
      • Android 5.0
      • Android 4.4
      • Android 4.3
      • Android 4.2
      • Android 4.1
      • Android 4.0.3
      • Android 2.3
      • Android 2.2
      • Android 2.1
      • Android 1.6
      • CTS 媒体文件
      • 更早的 Android 版本
    • 版本说明

相机测试(相机 HAL 测试核对清单)

  • 相机 HAL 测试

    本文档列出了可用于评估 Android 相机硬件抽象层 (HAL) 的所有测试。本文档专供原始设备制造商 (OEM) 和应用处理器 (AP) 供应商参考,以帮助他们确保正确实现相机 HAL,并最大限度地减少问题。尽管这是 Android 兼容性测试套件 (CTS) 的自愿性补充测试,但它显著扩大了相机测试覆盖范围,并且确实能够发现一些潜在错误。

    原始设备制造商 (OEM) 可以通过执行这些测试来检验是否已正确集成 Android 相机硬件抽象层 (HAL) 3 接口。当满足核对清单中的所有要求时,即认为设备实现完全符合 Android 相机 HAL 接口规范。这反过来又会使设备能够正确支持构建相机应用所依赖的 android.hardware.camera2 软件包。

    以下是适用于最新 Android 相机的主要测试类型以及相关说明:

    • 供应商测试套件 (VTS):用于直接测试相机 HAL 接口的测试
    • 兼容性测试套件 (CTS):一套自动运行的标准 Android 测试,用来验证设备的兼容性。有关详情,请参阅 CTS 简介和 Trade Federation 概览
    • 图像测试套件 (ITS):手动运行的用于验证图像正确性的测试。有关设置说明,请参阅通用以及测试专用的 README 文件和 tutorial.py
    • 手动 TestingCam 测试:从 pdk/apps/TestingCamera/ 中的源代码运行
    • 手动 TestingCam2.1 测试:从 pdk/apps/TestingCamera2/ 中的源代码运行

    下面详细介绍所有这些测试类型。我们按照 OEM 执行这些测试时所遵循的先后顺序进行介绍。

    例如,如果设备未通过原生测试,那么也一定无法通过后续的兼容性测试套件 (CTS) 测试。如果设备未通过 CTS 测试,也就没有必要继续进行图像测试套件 (ITS) 测试。我们建议先解决每种测试中出现的问题,然后再继续进行下一组测试。

    • 供应商测试套件 (VTS) 测试

      Android 供应商测试套件 (VTS) 是在 HIDL 接口级运行的测试套件。要详细了解如何使用 VTS,请参阅供应商测试套件。

    • 兼容性测试套件 (CTS) 测试

      相机 Android 兼容性测试套件 (CTS) 测试重点测试设备的兼容性。要了解如何设置测试环境,请参阅设置 CTS。

      相机 CTS 测试的起始路径为:platform/cts

      在针对支持外部相机(如 USB 网络摄像头)的设备运行相机 CTS 时,必须插入外部相机设备,否则测试会自动失败。外部相机示例:Logitech HD Pro Webcam C920 和 Microsoft LifeCam HD-3000。

      有关运行 CTS 的一般说明,请参阅 CTS 简介及其子页面。

      • 针对 android.hardware.Camera API 的 CTS 测试

        这些相机测试位于 cts/tests/tests/ 中的以下位置:

        • hardware/src/android/hardware/cts/CameraTest.java
        • hardware/src/android/hardware/cts/CameraGLTest.java
        • hardware/src/android/hardware/cts/Camera_SizeTest.java
        • permission/src/android/permission/cts/CameraPermissionTest.java
      • 针对 android.hardware.camera2 API 的 CTS 测试

        这些相机测试位于 cts/tests/tests/ 中的以下位置:

        • hardware/src/android/hardware/camera2/cts/*
        • permission/src/android/permission/cts/Camera2PermissionTest.java
      • CTS 验证程序相机测试

        这些相机测试位于以下位置:cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

    • 图像测试套件 (ITS) 测试

      注意:由于相机 HAL1 已被弃用,因此对于搭载 Android 9 或更高版本的设备,强烈建议您使用相机 HAL3。另外,这样还可以顺利地逐步停用已弃用的 Camera API。

      相机图像测试套件 (ITS) 测试重点测试图像的正确性。要执行这类测试,请在工作站上对通过 USB 连接的 Android 设备运行 Python 脚本。

      相机 ITS 的基础架构和测试的相关文件位于 cts/apps/CameraITS 目录下。每个测试都位于一个单独的 tests/scene# 子目录中。

      要设置测试环境,请运行:

          extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zipcd android-cts-verifieradb install -r CtsVerifier.apkcd CameraITSsource build/envsetup.sh
      

      注意 :由于 ITS 是 CTS 验证程序的子测试,因此应该先启动 CTS 验证程序和 ITS 子测试,然后再运行 Python 脚本,以便这些脚本具有可与之通信的进程。

      要详细了解如何设置和运行测试,请参阅 cts/apps/CameraITS 中的 CameraITS PDF 文件。要查看有关如何使用这些脚本的指南,请参阅 tests 子目录中的 tutorial.py。

      ITS 静态测试(场景 0-5)可以在任何满足相关 Python 2.7 环境要求的操作系统中运行。但是,采用传感器融合盒的 sensor_fusion 测试必须在 Linux 操作系统中运行。

      相机盒装 ITS 中介绍了场景 0-4 的推荐设置。传感器融合盒快速入门指南中介绍了 sensor_fusion 场景的推荐设置。

      要手动运行 ITS,请准备一个具有可重复使用的特定测试用具的简单物理环境,比如白色墙面、灰色卡片和台灯。将 Android 设备安装在三脚架上,然后运行脚本来测试相机功能。大多数测试只会提示通过或失败,但有些测试会提供一些指标。

      这些脚本用于测试在 CTS 中没有测试的场景,是 HAL 3.2 测试计划的重要组成部分。

      ITS 测试结果可能为通过或失败。设备必须通过每个场景文件夹中的所有强制性测试。对于非强制性测试,即使结果为失败,在 CtsVerifier 中仍算作通过。

    • 媒体框架测试

      应通过 MediaFrameworkTest 中的所有与相机相关的媒体测试。请注意,运行这些测试需要在 Android 设备上安装 mediaframeworktest.apk。您需要 make mediaframeworktest,然后使用 adb 来安装生成的.apk。下面提供了一些命令示例。

      与相机相关的媒体框架测试的起始路径为:platform/frameworks/base

      这类测试的源代码位于以下目录:frameworks/base/media/tests/MediaFrameworkTest

      设置这类测试的命令如下:

        make mediaframeworktestadb install out/target/product/name/data/app/mediaframeworktest.apk
      

      其中,name 变量表示包含供应商产品的目录。

      可在以下目录或其子目录中找到所有这些测试:

       frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
      

      每个子目录都代表一个测试类:

      • functional/

      • integration/

      • prformance/

      • power/

      • stress/

      • unit/

      • 运行媒体框架测试

        查看所有可用测试的命令如下:

         adb shell pm list instrumentation
        

        这将会产生类似如下的结果:

           instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner(target=com.android.mediaframeworktest)instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner(target=com.android.mediaframeworktest)instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner(target=com.android.mediaframeworktest)instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner(target=com.android.mediaframeworktest)
        

        从每个测试行中识别并提取组件(在 instrumentation:(target=com.android.mediaframeworktest)之间)。组件的名称包含目标软件包名称(com.android.mediaframeworktest)和测试运行程序名称 (MediaFrameworkTestRunner)

        例如:

        com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
        com.android.mediaframeworktest/.MediaRecorderStressTestRunner
        com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
        com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
        

        然后,您可以将每个组件传递到 db shell am instrument,如下所示:

        adb shell am instrument -w component.name
        

        其中,component.name 即为上面提取的值。例如:

          adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
        

        请注意,虽然类路径是 Java 软件包加类名称,但插桩软件包不一定与 Java 软件包相同。连接组件名称时,请确保您使用的是 AndroidManifest.xml 软件包,而不是测试运行程序类所在的 Java 软件包。

        若要运行单个类所包含的测试,请传递 -e 类参数,如下所示:

        adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
        

        如果只想运行某个测试类中的单个方法,请将井号 (#) 和方法名称(本例中为 testConnectPro)附加到类名称,如下所示:

        adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
        
      • 媒体设置功能测试

        下面是运行功能测试的一个示例。该测试验证不同相机设置(包括闪光灯、曝光、白平衡、场景、照片大小和地理标记)组合的基本功能。

        运行以下测试命令:

          adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner
        
      • 媒体集成测试

        下面是运行集成测试的一个示例,本例中采用了 mediaframeworktest/integration/CameraBinderTest.java 和 mediaframeworktest/CameraStressTestRunner.java:

            adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'
        

        如果测试顺利通过,则会输出类似如下的结果:

          -----com.android.mediaframeworktest.integration.CameraBinderTest:...........Test results for CameraStressTestRunner=...........Time: 3.328OK (11 tests)-----
        
    • 媒体性能测试

      此预览内存测试将打开和关闭相机预览 200 次。系统会每进行 20 次迭代记录一次 ps mediaserver 的快照,并且会在 200 次迭代后比较内存使用量的差异。如果差异大于 150kM,测试就会失败。

      运行以下测试命令:

          adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
      

      更详细的输出信息可在以下文件中找到:/sdcard/mediaMemOutput.txt

      • 媒体单元测试

        用于运行单元测试的命令都很相似。例如,对于 CameraMetadataTest.java,命令如下:

            adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
        
      • 媒体压力测试

        该测试用于对相机进行拍照压力测试和视频录制压力测试。

        运行以下测试命令:

            adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
        

        您必须确保通过所有测试。

    • 手动 TestingCam 测试

      您必须手动运行 TestingCam 应用并执行以下检查。TestingCam 的源代码位于以下位置:pdk/apps/TestingCamera/

      • 通过倾斜相机进行无限远对焦

        启动 TestingCam,打开预览,并确保将自动对焦模式设置为无限远。使用拍照按钮,以水平、向上(接近垂直)和向下(接近垂直)三种角度,拍摄远处(至少 10 米远)的物体的照片。例如,向上拍摄可以是站在树下仰拍树高处的树叶或树枝,而向下拍摄则可以是从建筑物的屋顶俯拍下面的街道。在所有情况下,远处的物体都必须成像清晰且对焦准确。在图库视图中保存和查看照片,以便您可以放大照片,从而更轻松地检查清晰度。

        请注意,对于采用 VCM 致动器的相机,要通过此测试,将需要使用闭环自动对焦控制系统,或者需要使用加速度计数据来确定相机方向,并据此进行一些软件校正。此外,还需要对镜头的无限远位置进行可靠的出厂校准。

    • 手动 TestingCam2 测试

      您必须手动运行 TestingCam2 应用并执行以下检查。TestingCam2 的源代码位于以下位置:pdk/apps/TestingCamera2/

      • JPEG 拍照

        启动 TestingCam2,然后按 JPEG 按钮。显示在取景器图像右侧的图像应该与取景器图像相同,包括具有一致的方向。

  • 相机盒装 ITS

    • 概览

      Android 相机图像测试套件 (ITS) 是 Android 兼容性测试套件 (CTS) 验证程序的一部分,其中包含用于验证图像内容的测试。CTS 验证程序支持使用相机盒装 ITS 来自动执行 ITS 测试;支持对所有类型的 Android 设备进行手动测试。

      盒装 ITS 具有以下优势:

      • 自动化。在测试期间不需要人为干预。

      • 缩短测试时间。可以同时测试前置/后置摄像头,使测试周期时间缩短 50%。

      • 可以轻松排查问题。测试环境的一致性可以减少设置错误并提高问题可重现性。

      • 高效。能够针对单个相机/场景进行重试,提高测试执行效率。

      • 使用入门

        盒装 ITS 由一个根据计算机辅助设计 (CAD) 图纸激光切割而成的塑料盒、一部图表平板电脑和一部被测设备 (DUT) 组成。您可以使用宽视野 (WFoV) 盒装 ITS,也可以使用常规视野 (RFoV) 盒装 ITS。宽视野 (WFoV) 盒装 ITS 既能测试 WFoV (FoV > 90°) 相机,也能测试 RFoV (FoV < 90°) 相机。

        如需开始使用相机盒装 ITS,请执行以下操作:

        • 购买或组装 WFoV 或 RFoV 盒装 ITS。
        • 使用 CameraITS 软件配置平板电脑。
        • 运行测试。
        • 从 DUT 获取结果。
    • 配置平板电脑

      本部分详细介绍如何设置平板电脑,以用于 CameraITS 目录中的 相机 ITS 测试。这里以 Pixel C 平板电脑为例进行说明。如需了解有关平板电脑的要求和建议,请参阅平板电脑要求。

      注意:相机 ITS Python 脚本会自动在平板电脑上为您设置以下选项:
      设置 > 显示 > 休眠 > 无操作 30 分钟后
      自动调节亮度 > 关闭

      1. 为平板电脑接通电源并开机。如果系统提示您设置帐号,请跳过(相机 ITS 不需要与平板电脑配对任何帐号)。
      2. 将平板电脑更新为 Android 7.0 或更高版本。Android 6.x 及更低版本不支持相机 ITS。
      3. 启用开发者模式。
      4. 返回设置并选择开发者选项
        启用选项
        • 开启
        • 不锁定屏幕
        • USB 调试(这样可以允许主机在调试模式下运行平板电脑。当您首次将平板电脑连接到主机时,平板电脑会提示“是否允许 USB 调试?”。如果平板电脑没有显示该调试提示,请断开平板电脑的连接,然后再重新连接。)
        停用选项
        • 自动系统更新
        • 通过 USB 验证应用
      5. 通过运行 $ adb devices 列出可用设备来确定 DUT ID 和图表 ID。如需确定 device_idchart_id,请插上再拔下设备并观察连接和断开连接的设备。
      6. 执行三次测试,以隐藏可能会遮盖平板电脑屏幕上的图表的提示信息和用户提示。
        • 将平板电脑正面朝上放在桌子上(不要将平板电脑安装到盒子的后板)。

        • 运行以下命令:

          python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
          

          场景 2 和 3 要求平板电脑显示图像,因此平板电脑会提示您“是否允许云端硬盘访问您设备上的照片、媒体和文件?”。按允许以清除此提示(并防止以后再次显示提示)。

        • 再次运行该命令。平板电脑会提示您“是否保留此文件的副本?”,并建议保存到 Google 云端硬盘。按“云端硬盘”图标,然后按取消来拒绝上传到云端硬盘,以此清除此提示(并防止以后再次显示提示)。

        • 最后,运行 tools/run_all_tests.py 并确认当前场景会随着脚本循环自动变换为其他场景。虽然大多数测试都会失败(因为未将相机对准图表),但您可以验证平板电脑是否能正确地循环播放场景,而不会在屏幕上显示任何提示或其他弹出内容。

    • 运行测试

      在运行盒装 ITS 之前,请确保您的测试设置包含以下硬件和软件:

    • 获取结果

      您可以在测试期间查看结果,并将完成的结果另存为报告。

      • 查看结果。将相机 ITS 结果另存为报告:

        1. 通过按钮并保存报告。
          图 3. 相机 ITS 报告

        2. 从设备中提取报告:

          adb -s FA6BM0305016 pull /sdcard/verifierReports
          
        3. 解压缩报告文件并查看 test_result.xml
          图 4. 相机 ITS 报告

    • 针对平板电脑的要求

      平板电脑的显示屏尺寸必须为 10 英寸左右,并且屏幕分辨率必须大于 2000 x 1500 像素。必须根据平板电脑型号在 CameraITS/tools/wake_up_screen.py 中设置 DISPLAY_LEVEL 值。下表列出了建议用于 ITS 测试的平板电脑。

      设备 屏幕尺寸
      (英寸)
      分辨率
      (像素)
      平板电脑尺寸
      (英寸)
      显示级别 操作系统
      Asus ZenPad 3 9.7 2048 x 1536 9.47 x 6.44 x 0.28 192 Android 6.0
      Huawei MediaPad m5 10.8 2560 x 1600 10.18 x 6.76 x 0.29 192 Android 8.0
      Pixel C 10.2 2560 x 1800 9.53 x 7.05 x 0.28 96 Android 8.0
      Samsung S3 9.7 2048 x 1536 10.76 x 6.65 x 0.24 192 Android 7.0
      Sony Xperia Z4 10.1 2560 x 1600 10 x 6.57 x 0.24 192 Android 7.0
    • 常见问题解答 (FAQ)

      1. 通过在 tools/run_all_tests.py 中添加 scenes 标记来加载场景:

        python tools/run_all_tests.py device=# camera=# chart=# scenes=#
        
      2. 在场景被记录为已加载到 stdout 后,按 Ctrl+C 停止测试。

        如果屏幕上已经显示正确场景,请唤醒屏幕:

        python tools/wake_up_screen.py screen=#
        
      3. 运行单个测试。

        python tests/scene#/test_*.py device=# camera=#
        

        然后,系统会在本地目录下生成图片,并将 stdout 和 stderr 输出到屏幕上。

        如需了解有关调试的详细信息,请将 print 语句添加到脚本中。如需增加用于调试的测试输出,请添加 debug=True 标记。

        python tests/scene#/test_*.py device=# camera=# debug=True
        
      • 问题 5:为什么需要将失败的测试合并为一个整体场景运行,而不是单独重新运行每个测试?

        可以出于调试的目单独运行各个测试,但是只有运行整体场景时,系统才会将测试结果报告给 CtsVerifier.apk

        相机 ITS 确保第三方应用具有兼容的摄像头接口。与单元测试类似,每个测试侧重于相机的一项规范。为了捕获不可靠的行为,这些测试应在一个整体场景测试中全部通过。例如,虽然在重新运行整体场景时单个不可靠测试可能会通过,但多个不可靠测试却很难通过。

        以一种极端情况为例,假设某个场景中有 10 个测试,每个测试都有 50% 的概率返回 PASS。如果单独运行每个测试,则操作人员使相机通过相机 ITS 测试的概率会很高。但是,如果将这些测试作为一个场景整体运行,则整个场景通过测试的概率只有 0.1%。

      • 问题 6:如何运行单个场景或重新排列场景运行顺序?

        默认情况下,脚本tools/run_all_tests.py 按顺序运行所有场景。但是,也可以单独运行各个场景或按指定顺序运行场景,并将结果报告给 CtsVerifier.apk

        如需运行单个场景(例如场景 2),请运行以下命令:

        python tools/run_all_tests.py device=# camera=# chart=# scenes=2
        

        如需按特定顺序运行多个场景,请运行以下命令:

        python tools/run_all_tests.py device=# camera=# chart=# scenes=3,2
        
      • 问题 7:场景 1 中的许多测试在采用平板电脑设置时会失败,但在采用纸质图表时会通过。这是怎么回事?

        确保平板电脑和测试环境符合以下规范。

        平板电脑规范
        确保平板电脑符合以下规格要求:

        • 屏幕尺寸(英寸):10 英寸
        • 分辨率(像素):大于 2000 x 1400 像素

        如需了解更多详情,请参阅平板电脑要求。

        平板电脑亮度
        如果平板电脑显示屏亮度过低,测试可能会无法获得正确的结果。

        如需了解详情,请参阅如何控制平板电脑亮度?

        盒子的光照强度(需要照度计)
        确保平板电脑开口处的目标勒克斯值介于 100 到 300 之间。

        如果勒克斯值过高,scene1/test_param_flash_mode.py 会返回 FAIL。如果勒克斯值过低,多个测试会失败。

      • 问题 8:如何调试传感器融合测试?
        1. 确保您位于 dialout 组中。

          groups | egrep ‘dialout'
          
        2. 确定 Microchip Technology 是否连接到 USB 端口,以此来确保传感器融合控制器已连接。

          lsusb
          …
          Bus 003 Device 004: ID 04d8:fc73 Microchip Technology, Inc.
          …
          
        3. 使用以下命令多次运行测试,以获得测试尝试的分布情况:

          python tools/run_sensor_fusion_box.py device=A camera=0 num_runs=10 rotator=default
          

          运行输出将存储在 sensor_fusion_# 文件夹下的/tmp/tmp###文件夹中,其中#是指运行编号。常见的失败原因如下:

          1. 手机未准确位于中心位置。
          2. 未在图像中发现足够特征(通常是 FoV 或光线问题)。
          3. 返回的 FAIL 有效,必须纠正相机和陀螺仪之间的定时偏差。
      • 问题 9:报告测试错误时应提供哪些信息?

        报告测试错误时,请提供为测试生成的文件和图片。

        1. 如果您通过 tools/run_all_tests.py 运行测试,请将压缩后的/tmp/tmp###目录附加到错误信息中。
        2. 如果您单独运行测试,请将所有屏幕输出和生成的图片附加到错误信息中。

        此外,还应提供错误报告。相关测试失败后,请运行以下命令来生成错误报告,并将生成的 zip 文件附加到错误信息中。

        adb -s device_id bugreport
        
    • 常规视野盒装 ITS

      常规视野 (RFoV) 盒装 ITS(修订版 1a)由一个根据计算机辅助设计 (CAD) 图纸激光切割而成的塑料盒、一部图表平板电脑和一部被测设备 (DUT) 组成,用于测试视野 (FoV) 小于 90 度 (RFoV) 的设备。您可以购买盒装 ITS,也可以自行组装。

      注意:宽视野 (WFoV) 盒装 ITS(修订版 2)可用于测试 WFoV(视野大于 90 度)设备和 RFoV 设备。如需了解详情,请参阅宽视野盒装 ITS。

      • 购买 RFoV 盒装 ITS

        建议您通过以下任一合格供应商购买 RFoV 盒装 ITS(修订版 1a)。

        • Rahi Systems Inc.
          48303 Fremont Blvd, Fremont CA 94538, USA
          rahisystems.com/products/android-device-testing-equipment/
          androidpartner@rahisystems.com
          +1-510-319-3802

        • MYWAY Design
          台湾新北市新庄区福营路 163 号 4 楼
          twmyway.com
          sales@myway.tw
          +886-2-29089060

      • 组装 RFoV 盒装 ITS

        除了购买,您也可以自行组装 RFoV 盒装 ITS。本节将详细介绍相关的组装步骤。

        1. 收集齐照明组件的材料并放在一起,如图 5 所示。

          图 5.灯配件

          组装配件包括:LED 灯条、塑料挡光板、塑料灯座、LED 照明套件中包含的塑料或金属灯夹,以及四个 6-32 螺钉和盖形螺母。

        2. 用螺栓将灯夹固定在塑料挡光板上,如图 6 所示。 在挡光板的另一面,使用盖形螺母固定灯夹。

          图 6.安装了灯夹的塑料挡光板

        3. 如需组装灯,请使用灯夹将塑料挡光板连接到 LED 灯条的背面。

          图 7. 灯条(灯朝下,螺钉拧进灯夹)

          组装照明组件时,应使 LED 灯条朝下,并使塑料挡光板覆盖 LED 灯条背面闪亮的反光表面。

        • 第 2 步:手机托架

          组装手机托架:

          1. 收集齐所需的配件并放在一起,如图 8 所示。

            图 8.手机托架配件

          两个金属手机托架、两个柱塞、两个橡皮帽、四个 8-32 平头螺钉以及相应的螺母。

          1. 将橡皮帽剪得足够短,使其不会妨碍柱塞工作(大致剪短一半),然后将其套在柱塞的末端。
            图 9.套上橡皮帽的柱塞

          2. 使用平头螺钉组装手机托架,从而将柱塞装置固定在金属托架上。确保使用相应的螺母拧紧螺钉。
            图 10.组装好的手机托架

        • 第 4 步:孔板

          组装前孔板:

          1. 收集齐前孔板配件并放在一起,如图 11 所示。
            图 11.前孔板配件

            组装配件包括:组装好的手机托架、手机托架板、四个较短的尼龙螺钉和四个尼龙螺母(螺母的作用是防止螺钉从塑料板的背面伸出)。

          2. 使用螺钉和螺母将组装好的手机托架固定到手机托架板上。确保手机托架的方向正确,如图 12 所示。

            图 12.组装好的前孔板

        • 第 5 步:平板电脑托架

          要组装平板电脑托架,请执行以下操作:

          1. 收集齐平板电脑托架的组装配件并放在一起,如图 13 所示。

            图 13.平板电脑托架配件

            组装配件包括:后板、平板电脑托架、一个柱塞、一个像皮帽、两个 8-32 平头螺钉、两个较短的尼龙螺钉以及相应的螺母。

          2. 使用平头螺钉组装平板电脑托架,从而将柱塞装置固定在金属托架上。确保使用相应的螺母拧紧螺钉。

          3. 使用螺钉和螺母将组装好的平板电脑托架固定到后板上。确保手机托架的方向正确,如图 14 所示。

            图 14.组装好的平板电脑托架

        • 第 6 步:安装灯

          如需安装灯,请执行以下操作:

          1. 在顶板和底板上安装挡光板,如图 15 所示。

            图 15.安装在顶板和底板上的挡光板

          2. 将销钉插入从顶板和底板插槽处伸出的矩形卡舌上的小孔来固定挡光板,如图 16 所示。

            图 16.插入盒子外侧的 LED 灯安装卡舌中的销钉特写

            如需固定销钉,请轻轻按压销钉,直到销钉插入到位,您感觉到塑料片上有一点压力为止。

            图 17.用于安装销钉的钳子

          3. 按照图 18 所示的正确方向组装前板和侧板,然后从外部用胶带将它们粘在一起。

            图 18.灯的放置方向

          4. 将电源线连接到灯条电源,如图 19 所示。

            图 19.照明电源线

            将电源线穿过左侧板上的孔。电源线两端有两个不同的连接器:较窄的连接器连接到 LED 灯条,较大的连接器连接到电源适配器。

            图 20.电源线从测试装置的左侧穿出

          5. 用电缆将顶部的灯和底部的灯连接起来,并将电缆固定到左侧板上。

            图 21.固定在左侧板上的灯线

        • 第 7 步:组装侧板、平板电脑托架和手柄

          如需使用螺钉组装盒装 ITS 的侧板、平板电脑托架和手柄,请执行以下操作:

          1. 把各侧面板组装起来,然后用胶带将它们粘在一起,如图 22 所示。

            图 22. 用胶带粘在一起进行组装的盒装 ITS

          2. 用电钻根据现有的孔钻定位孔。确保定位孔足够穿过 4-40 螺钉,从而确保在插入螺钉时不会使 ABS 塑料破裂。

            图 23.钻出能够插入 4-40 螺钉的定位孔

          3. 使用 4-40 自攻螺钉将所有面板组装在一起。

            图 24.用于组装面板的 4-40 螺钉

          4. 收集齐手柄配件并放在一起,如图 25 所示。
            图 25.手柄配件

            组装配件包括:4 个矩形塑料件和 4 个 6-32 螺钉。

          5. 组装手柄,如图 26 所示。

            图 26.组装好的手柄

        • 第 8 步:最后的组装和设置

          进行盒装 ITS 的最终组装:

          1. 将平板电脑托架安装到后板上,然后根据平板电脑尺寸调整高度。

            图 27.放在盒子后板上的平板电脑托架中的平板电脑

          2. 使用 4-40 螺钉将不带手机托架的方形孔板安装到盒子的前板上,如图 28 所示。

            图 28.组装好的手机前板

          3. 插入 10x10 厘米的鳄鱼孔板以适配 DUT 的摄像头开孔。

            图 29.安装了鳄鱼孔板的盒装 ITS

          4. 安装手机,使摄像头与开孔对准。通过平板电脑开口检查对准情况。

            图 30.安装了一部手机的盒装 ITS

          5. 为摄像头开孔。您可以开一个孔(用于测试一部手机)或两个孔(用于测试两部手机)。Pixel 和 Pixel XL 前置摄像头和后置摄像头的开孔如图 31 所示:由于没有闪光灯或激光器,前置摄像头的开孔是圆形孔;而为了不挡住闪光灯和激光器,后置摄像头的开孔为矩形孔。

            图 31.前置摄像头和后置摄像头的开孔示例

            图 32.安装了两部手机的盒装 ITS

          6. 使用数字照度计测试 LED 灯的照度。本例中使用的是 Contempo Views 的 YF-1065。

            图 33.Contempo Views 的 YF-1065

          7. 将照度计放置在平板电脑一侧,然后将其调到 2000 勒克斯,以测量光照度。照度应在 100 到 300 勒克斯之间。对于该测试而言,如果照度值明显低于此范围,就说明太暗了,可能会导致测试失败。

            图 34.用照度计测量安装了平板电脑托架的后板上的光照强度

          8. 根据测得的照度值,执行相应的步骤:

            • 如果光照强度处于正确的水平,需要用螺钉将前板和后板固定到位。
            • 如果光照强度处于不正确的水平,需要检查 LED 和电源配件号是否正确。
        • 注意事项

          下面列出了一些常见的组装错误,这些错误会导致测试易出故障。

          • 安装平板电脑的后板上有刺穿孔。这会导致 find_circle 测试失败,因为螺钉孔会产生额外的圆圈。

            图 35.有刺穿孔的后板

          • 缺少固定销。这会导致挡光板在运输过程中松脱。

            图 36.挡光板上缺少固定销

          • 非 UL 认证电源。使用 UL 认证电源可确保电源不会断电。

            图 37.UL 认证电源示例

        • 修订历史记录

          下面介绍了 RFoV 盒装 ITS 的修订历史记录。

          修订版 1a

          • 将材料从聚甲醛树脂改成了 ABS。
          • 更改了灯座的设计,使其更加灵活并能够适配不同尺寸的 LED 灯条。
          • 统一了组装方法。
          • 简化了平板电脑托架的设计,使其更牢固。
          • 增加了手机托架的深度,以便安放更厚的手机。
          • 增加了前板上的安装方式,以便于安装可折叠型和坚固型手机。
    • 宽视野盒装 ITS

  • 传感器融合盒

安全元件

解读CTS 测试结果

CTS 测试结果位于以下文件中:

 $CTS_ROOT/android-cts/repository/results/<start_time>.zip

如果您自行编译了 CTS,则 $CTS_ROOT 将类似于路径 out/host/linux-x86/cts(但会因平台而异)。该路径取决于您解压缩从此网站下载的预编译官方 CTS 文件时所在的路径。

在 zip 压缩包中,testResult.xml 文件会包含实际的结果。在任何网络浏览器(推荐使用与 HTML 5 技术兼容的浏览器)中打开此文件,即可查看测试结果。

使用 Chrome 浏览器时,如果 testResult.xml 显示空白页,请更改浏览器配置,以启用 --allow-file-access-from-files 命令行标记。

  • 阅读测试结果

    测试结果的详细信息取决于您目前使用的 CTS 版本:

    • CTS v1 适用于 Android 6.0 及更早版本
    • CTS v2 适用于 Android 7.0 及更高版本

    注意:所提供的结果旨在帮助您确保软件在整个开发过程中始终兼容,并且可作为通用格式向其他方说明您的设备的兼容性状态。

    设备信息
    在 CTS v6.0 及更早版本中,选择“Device Information”(“Test Summary”上方的链接)可查看关于设备、固件(品牌、型号、固件版本号、平台)和设备硬件(屏幕分辨率、键盘、屏幕类型)的详细信息(CTS v7.0 不显示设备信息)。

    测试摘要
    “Test Summary”部分可提供已执行的测试计划的详细信息,例如 CTS 计划名称以及执行开始时间和结束时间。该部分还会提供通过、失败、超时或无法执行的测试数量的汇总摘要。

    图 1a. CTS v1 测试摘要示例

    图 1b. CTS v2 测试摘要示例

    测试报告
    下一部分为 CTS 测试报告,它会按文件包显示已通过的测试的摘要。

    接下来是所执行的实际测试的详细信息。该报告会列出测试包、测试套件、测试用例和执行的测试。它会显示测试执行结果:通过、失败、超时或未执行。如果测试失败,则该报告会提供详细信息以供诊断原因。

    此外,为了确保简洁性,失败的测试的堆栈跟踪信息会包含在 XML 文件中,但不会包含在报告中;使用文本编辑器查看 XML 文件可了解有关测试失败的详细信息(搜索与失败的测试对应的 标记,并在其中查找 标记)。


    图 2a. CTS v1 测试报告示例
    图 2b. CTS v2 测试报告示例

  • 查看 test_result.xml 以了解未完成的测试模块

    要确定某个测试会话中的未完成模块数量,请运行命令“list results”。系统会列出之前每个会话的“已完成模块数量”和“模块总数量”。要确定哪些模块已完成,哪些模块未完成,请打开 test_result.xml 文件,并读取结果报告中每个模块的“done”属性的值。“done”值为“false”表示模块尚未运行完毕。

CTS开发

下载

感谢您对 Android 兼容性计划的关注!您可以通过以下链接访问关于该计划的重要文档和信息。随着 CTS 的更新,此网页上会陆续添加新的版本。CTS 版本在链接名称中以 R 加数字表示。

版本说明

CTS 版本说明

AOSP>设计>测试>(第三节)兼容性测试套件CTS相关推荐

  1. 06- 移动端APP兼容性测试以及APP兼容性测试手机选择与云测试技术

    在开始测试APP之前,应该考虑什么问题?或者如何选择设备?多少部手机测试兼容性最佳? 兼容性测试手机数量:主测手机 1 ,2(根据人员),辅助测试手机:用于兼容性测试.(50-60台最佳,至少5-20 ...

  2. 软件测试体系学习及构建(21)测试专项丨兼容性测试

    (21)测试专项丨兼容性测试 1 定义 2 分类 3 测试点 4 测试工具 5 用例设计模板 6 举例 6.1 举例对象 6.2 测试要点 6.3 要点细节 6.4 测试说明 6.5 注意事项 1 定 ...

  3. 如何保证APP兼容性覆盖测试和手机APP测试如何进行兼容性测试?(学习笔记)

    1.背景 众所周知,APP兼容性覆盖测试一直以来被认为是一个高成本.耗时低效.耗人力的测试工作,且兼容性测试是一项必须要进行的测试项目,因为有不同的机型.系统平台.分辨率.网络.厂商.数据兼容以及不同 ...

  4. 【用例设计】浅谈兼容性测试

    说到兼容性测试,让我们先看看兼容性测试的定义是什么? 兼容性测试将验证软件与其所依赖的环境的依赖程度,包括对硬件平台的依赖和对软件平台依赖程度,即我们通常说的软件的可移植性 简单来说: 待测试项目在同 ...

  5. 测试android兼容性测试工具,Android兼容性测试工具Spoon

    android分布式测试工具. 简介 android众多的版本和机型给android app测试工作带来不小的挑战.Spoon通过将case分布式地执行.将执行结果更友好地展示出来,从而简化andro ...

  6. android apk兼容性测试工具,APP兼容性测试工具有哪些?

    有一句话说得好,巧妇难为无米之炊,这句话用来说到兼容性测试上面,可以说是比较应景了.因为做兼容性测试,离不开兼容各种手机硬件设备,并且需要借助一些平台和工具来辅助我们更容易和更有效率地完成兼容性测试. ...

  7. html5 网页兼容性测试工具,网页兼容性测试工具(MultiBrowser)

    网页兼容性测试工具(MultiBrowser) MultiBrowser就能够让你同时检查同一网页在chrome.firefox.ie等浏览器中显示是否正常,而其中的代码编辑器和开发者工具还能够大大提 ...

  8. 17款好用的跨浏览器测试神器,兼容性测试必备

    市面上有很多不同的浏览器,每种浏览器都有数百万用户.因此,在开发一个网站或 Web 应用程序时,就需要测试它与不同浏览器的兼容性.最好.最方便的方法是使用跨浏览器检查工具. 今天推荐一些可靠且全面的跨 ...

  9. 软件测试-------Web(性能测试 / 界面测试 / 兼容性测试 / 安全性测试)

    Web(性能测试 / 界面测试 / 兼容性测试 / 安全性测试) 一.Web性能测试:(压力测试.负载测试.连接速度测试) 1.压力测试:      并发测试 (如500人同时登录邮箱) 2.负载测试 ...

  10. No.10 兼容性测试,测试计划和测试报告的内容

    1.浏览器兼容性: 浏览器兼容性问题又被称为网页兼容性或网站兼容性问题,网页的浏览器兼容性指网页在各种浏览器上的显示效果尽量保持一致的状态: 浏览器兼容性问题产生的原因:不同浏览器使用的内核及所支持的 ...

最新文章

  1. CIIS 2020专题论坛丨机器智能产业发展蓝图初现
  2. 蓝桥杯: 基础练习 数列排序
  3. 0基础学python难吗-0基础学Python有多难?该怎么入门?
  4. Web项目开发性能优化解决方案
  5. ultra edit ftp帐号管理导入导出方法
  6. 把ASP应用中的Session传递给asp.net应用
  7. iphone新旧手机数据传输已取消_如何取消iPhone手机App自动扣费?三种方法让你不再被“偷”...
  8. Python中使用psutil查看内存占用的情况(内存)
  9. Java 1.1.1字符串之子串
  10. access 此程序未正确安装_SQLite简介与安装
  11. 百元百鸡 //构造结构体变量
  12. 鼠标键盘控制多台计算机,一个软件即可一套键盘鼠标控制多台电脑
  13. python打印九九乘法表代码
  14. 软件测试入门自学笔记(4)实战项目
  15. iOS 清理缓存方法
  16. Baklib知识库-企业知识库管理平台
  17. 计算机视觉论文doc,计算机视觉论文.doc
  18. JAVA计算机毕业设计房屋中介网络平台Mybatis+系统+数据库+调试部署
  19. Python - 删除print()中的空格
  20. django的分页机制

热门文章

  1. 一本书学会可视化设计 pdf_【推荐给设计师看的11本书】电子版PDF
  2. 好用的局域网共享工具有哪些?win10系统如何设置?
  3. xp系统计算机启动时灰色界面,windows xp系统下屏幕开始按钮变成灰色怎么处理
  4. 解决SQL数据库无法附加
  5. Bing翻译接口(V3版本)
  6. Unix/Linux入门篇
  7. 巴特沃斯低通滤波器 matlab,利用matlab设计巴特沃斯低通滤波器
  8. 图解通信原理与案例分析-33:传感器种类以及传感器工作原理详解
  9. 带视频加密功能的视频播放器
  10. sap销售发货的流程_SAP系统发货运输流程操作手册.pdf