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:如何确定我的设备需要哪些测试装置/li>
- 问题 2:如何指定使用哪个测试装置/li>
- 问题 3:如何控制平板电脑亮度/li>
- 问题 4:如何调试单个测试/li>
- 问题 5:为什么需要将失败的测试合并为一个整体场景运行,而不是单独重新运行每个测试/li>
- 问题 6:如何运行单个场景或重新排列场景运行顺序/li>
- 问题 7:场景 1 中的许多测试在采用平板电脑设置时会失败,但在采用纸质图表时会通过。这是怎么回事/li>
- 问题 8:如何调试传感器融合测试/li>
- 问题 9: 告测试错误时应提供哪些信息/li>
- 常规视野盒装 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 验证程序应用中的某些测试用例提供数据或额外控制的可执行文件或脚本。
-
工作流程
图 1.如何使用 CTS上图总结了 CTS 工作流程。有关详细说明,请参阅本部分从设置开始的子页面。
-
测试用例的类型
CTS 包含以下类型的测试用例:
- 单元测试用于测试 Android 平台中微小的代码元素;例如 java.util.HashMap 等单个类。
- 功能测试用于通过较高级别的用例将 API 组合到一起进行测试。
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
物理环境
-
蓝牙 LE 信标
如果被测设备 (DUT) 支持蓝牙 LE 功能,为了对 DUT 进行蓝牙 LE 扫描测试,应在距离 DUT 不超过五米的范围内放置至少三个蓝牙 LE 信标。可以放置任何类型且不需要进行配置或发射任何特定信 的信标,这些信标可以是 iBeacon、Eddystone 或者模拟 BLE 信标的设备。
-
相机
在运行相机 CTS 时,建议您使用正常光照条件,并且测试图案图表(例如棋盘图案)不要与镜头靠得太近(具体距离取决于设备的最小焦距)。
如果 DUT 支持外部相机(如 USB 络摄像头),则在运行 CTS 时必须将外部相机接上电源,否则 CTS 测试将失败。
-
GPS/GNSS
如果 DUT 支持全球定位系统 (GPS)/全球导航卫星系统 (GNSS) 功能,则应该以合适的信 电平向 DUT 提供 GPS/GNSS 信 (GPS 部分符合 ICD-GPS-200C 标准),以便其接收到相应信 并计算 GPS 位置。GPS/GNSS 信 源的种类不限(可以是卫星模拟器,也可以是室外 GPS/GNSS 信 中继器),只需将 DUT 放在距离窗口足够近的位置以使其可以直接接收到足够强的 GPS/GNSS 信 即可。
请注意:在进行 GPS 测试时,请确保互联 连接设置未屏蔽 supl.google.com 的 7276 端口的连接。该端口将用于下载 GPS 辅助数据,以便在本地设备上测试位置计算。
-
WLAN 和 IPv6
CTS 测试需要满足以下要求的 WLAN 络:支持 IPv6,可以将被测设备 (DUT) 视为隔离客户端,并可以连接到互联 。隔离客户端是一种配置,可使 DUT 无法接收子 络上的广播/多 消息;这种配置可通过 WLAN AP 配置或通过在未连接其他设备的隔离子 络上运行 DUT 来实现。
如果您无法访问原生 IPv6 络、IPv6 运营商 络或 IPv6 VPN,以致无法通过基于 IPv6 的一些测试,则可以改为使用 WLAN 接入点和 IPv6 隧道。请参阅维基百科 IPv6 隧道代理列表。
-
Wi-Fi RTT(往返时间)
Android 9 针对 WLAN RTT 功能增加了一个 API,此 API 允许设备测量自身与接入点之间的距离(误差幅度在 1 到 2 米内),可以显著提高室内位置信息精确度。下面推荐两款支持 WLAN RTT 的设备:Google Wifi 和 Compulab 的 Filet2 接入点 (带宽为 40MHz,频段为 5GHz)。
接入点应接通电源,但无需连接到任何 络。接入点无需紧挨着测试设备,但建议放置在距离 DUT 40 英尺的范围内。通常情况下,一个接入点就足够了。
台式机设置
注意:CTS 目前支持 64 位 Linux 和 Mac OS 主机。CTS 无法在 Windows 操作系统上运行。
-
ADB 和 AAPT
运行 CTS 之前,请确保已安装最新版本的 Android 调试桥 (adb) 和 Android 资源打包工具 (AAPT),并已将这两个工具的位置添加到计算机的系统路径中。
要安装 ADB,请下载适用于您的操作系统的 Android SDK 工具包,打开它,然后按照附带的 README 文件中的说明进行操作。要了解问题排查相关信息,请参阅安装独立 SDK 工具。
确保 和 位于您的系统路径下。以下命令假定您已在主目录中打开了软件包归档文件:
注意:请确保起始路径和目录名称均准确无误。
-
Java 开发套件 (JDK)
安装正确版本的 Java 开发套件 (JDK)。对于 Android 7.0 –
- 在 Ubuntu 上,使用 OpenJDK 8。
- 在 Mac OS 上,使用 jdk 8u45 或更高版本。
如需了解详情,请参阅 JDK 要求。
-
CTS 文件
下载并打开与您设备的 Android 版本以及您的设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 包。
下载并打开最新版本的 CTS 媒体文件。
-
设备检测
请按照相应的步骤设置您的系统以检测设备,例如为 Ubuntu Linux 创建 规则文件。
Android 设备设置
-
用户版本
兼容的设备被定义为具有 user/release-key 签名版本的设备,因此您的设备应运行基于代 、标签和版本 中已知兼容的用户版本(Android 4.0 及更高版本)的系统映像。
注意:使用 CTS 确认最终系统映像的 Android 兼容性时,您必须在具有用户版本的设备上执行 CTS。
-
初始 API 级别版本属性
某些 CTS 要求取决于设备最初搭载的版本。例如,如果设备最初搭载的是较低的版本,则不一定需要遵循适用于搭载较高版本的设备的系统要求。
为了保证 CTS 可读取到这些信息,设备制造商可以定义编译时属性:。该属性的值是对该设备进行商业化发布时所采用的初始 API 级别。
如果选择在现有产品中重复使用常用的底层实现,设备制造商可以将新产品作为同一设备组中现有产品的升级版来发布。设备制造商可以选择将现有产品的 API 级别设置为 ,以对 CTS 和 Treble/VTS 应用升级要求。
设备制造商可以将 添加到其 device.mk 文件中以设置此属性,具体如以下示例所示:
Android 9 及更高版本的初始 API 级别
如果设备搭载的是 Android 9 或更高版本,请将属性 设置为代 、标记和细分版本 上提供的有效值。Android 8.x 及更低版本的初始 API 级别
对于搭载 Android 8.x 或更低版本的设备,请为产品的第一个版本取消设置(移除)属性 。对于所有后续版本,请将 设置为正确的 API 级别值。这样一来,该属性便可以正确标识新产品,关于产品初始 API 级别的信息也将得以保留。如果标记处于未设置状态,则 Android 会将 分配给 。 -
CTS Shim 应用
Android 7.0 包含以下预编译的应用(根据此处的源代码编译),这些应用不包含除清单以外的任何代码:
- frameworks/base/packages/CtsShim/CtsShim.apk
该 apk 文件将复制到系统映像上的 。 - frameworks/base/packages/CtsShim/CtsShimPriv.apk
该 apk 文件将复制到系统映像上的 。
CTS 会使用这些应用来测试特权和权限。要通过测试,您必须将应用预加载到系统映像上的相应目录下,但不能对它们重新签名。
- frameworks/base/packages/CtsShim/CtsShim.apk
-
示例小程序
Android 9 中引入了 Open Mobile API。如果设备计划基于多个安全元件生成 告,为了验证 Open Mobile API 的行为,CTS 会添加相应的测试用例。使用这些测试用例时,需要在被测设备 (DUT) 的嵌入式安全元件 (eSE) 或 DUT 所使用的 SIM 卡中安装一次示例小程序。可以在 AOSP 存储库中找到 eSE 示例小程序和 SIM 示例小程序。
要详细了解 Open Mobile API 测试用例和访问控制测试用例,请参阅安全元件的 CTS 测试。
-
存储空间要求
CTS 媒体压力测试要求将视频剪辑存放在外部存储设备 (/sdcard) 上。大部分剪辑来自 Big Buck Bunny,剪辑版权归 Blender Foundation 所有并采用知识共享署名 3.0 许可。
所需空间取决于设备支持的最高视频播放分辨率(要查看所需分辨率的平台版本,请参阅兼容性定义文档中的第 5 部分)。请注意,被测设备的视频播放功能将通过 API(针对早期 Android 版本)和 API(针对 Android 5.0 及更高版本)进行检测。
以下是按最大视频播放分辨率列出的存储空间要求:
- 480×360: 98MB
- 720×480: 193MB
- 1280×720: 606MB
- 1920×1080: 1863MB
-
屏幕和存储空间
-
任何没有嵌入式屏幕的设备一律需要连接到屏幕。
-
如果设备具有存储卡插槽,请插入空的 SD 卡。请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或使用至少具有 Class 10 速度的 SD 卡,以确保设备能够通过 CTS。
警告:CTS 可能会修改/清空插入设备的 SD 卡上的数据。
-
如果设备具有 SIM 卡插槽,请将激活的 SIM 卡插入每个插槽。如果设备支持短信,则应填充每个 SIM 卡的 码字段。
-
-
开发者 UICC
为了执行 CTS 运营商 API 测试,该设备需要使用运营商授权的 SIM 卡。请参阅准备 UICC。
Android 设备配置
-
将设备恢复出厂设置:设置 > 备份和重置 > 恢复出厂设置
警告:这将清空设备中的所有用户数据。
-
将设备的语言设置为英语(美国):设置 > 语言和输入法 > 语言
-
如果设备具有 GPS 或 WLAN/移动 络功能,则打开位置信息设置:设置 > 位置信息 > 开启
-
连接到满足以下要求的 WLAN 络:支持 IPv6、可以将被测设备 (DUT) 视为隔离客户端(请参阅上文的物理环境部分),并可连接到互联 。连接 络的具体操作方法为:设置 > WLAN
-
确保设备上未设置锁定图案或密码:设置 > 安全 > 屏幕锁定 > 无
-
在设备上启用 USB 调试:设置 > 开发者选项 > USB 调试。
注意:在 Android 4.2 及更高版本中,默认情况下会隐藏开发者选项。要显示这些选项,请依次转到设置 > 关于手机,然后点按版本 七次。返回上一屏幕以查找开发者选项。要查看其他详细信息,请参阅启用设备上的开发者选项。
-
确保将时间设置为 12 小时格式:设置 > 日期和时间 > 使用 24 小时制 > 关闭
-
依次选择:设置 > 开发者选项 > 不锁定屏幕 > 开启
-
依次选择:设置 > 开发者选项 > 允许模拟位置 > 开启
注意:此模拟位置设置仅适用于 Android 5.x 和 4.4.x。
-
依次选择:设置 > 开发者选项 > 通过 USB 验证应用 > 关闭
注意:此验证应用步骤在 Android 4.2 中为必需步骤。
-
启动浏览器并关闭任何启动/设置屏幕。
-
使用 USB 数据线连接用于测试设备的台式机
注意:将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。选择“允许 USB 调试”。
-
在设备上安装和配置帮助程序应用。
注意:对于 CTS 2.1 R2 – 4.2 R4 的版本,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:
在设备上,依次启用:设置 > 无障碍 > 无障碍 > Delegating Accessibility Service
注意:对于 7.0 之前的 CTS 版本,请在声明 android.software.device_admin 的设备上设置您的设备,以使用以下命令执行设备管理测试:
依次点击“设置”>“安全”>“选择设备管理器”,然后启用两个 设备管理器。确保 和任何其他预加载的设备管理器均保持停用状态。
-
将 CTS 媒体文件复制到设备上,如下所示:
注意:对于 CTS 2.3 R12 及更高版本,如果设备支持视频编解码器,则必须将 CTS 媒体文件复制到设备上。
- 导航 (cd) 到下载并解压缩媒体文件的目标路径。
- 更改文件权限:
- 运行 :
- 要复制分辨率不超过 720×480 的剪辑,请运行:
- 如果您不确定最大分辨率,请尝试运行 ,以便复制所有文件。
- 如果 adb 下有多个设备,请将 -s(序列 )选项添加到末尾。例如,要将分辨率不超过 720×480 的文件复制到序列 为 1234567 的设备,请运行:
运行CTS (Android S)
概览
-
CTS tradefed 使用入门
您可以参阅 Trade Federation 概述,了解有关 Trade Federation(简称 tradefed 或 TF)持续测试框架的说明。
运行测试计划的操作如下:
-
至少连接一个设备。
-
在开始运行 CTS 时,按主屏幕按钮将设备设置为显示主屏幕。
-
当设备在运行测试时,不能执行任何其他任务,并且必须保持静止状态(以免触发传感器活动),同时要让相机指向某个可以聚焦的对象。
-
在运行 CTS 时,不要按设备上的任何键。按测试设备上的键或触摸其屏幕会干扰正在运行的测试,并且可能导致测试失败。
-
通过运行解压缩 CTS 包所得文件夹中的 cts-tradefed 脚本(例如 )启动 CTS 控制台。
-
通过附加以下命令启动默认测试计划(包含所有测试包):。这将启动测试兼容性所需的所有 CTS 测试。
- 对于 CTS v2(Android 7.0 及更高版本),您可以输入 list modules 来查看测试模块列表。
- 对于 CTS v1(Android 6.0 及更低版本),您可以输入 list plans 来查看存储区中的测试计划列表,也可以输入 list package 来查看存储区中的测试包列表。
-
或者,您也可以使用以下命令,从命令行中运行所选的 CTS 计划:cts-tradefed run cts –plan
注意:您可以通过使用 run cts-dev 命令(而非 run cts)来缩减在 Android 7.0 (Nougat) 及更高版本中的运行时间。此命令会跳过前提条件、设备信息收集和所有系统状态检查工具。它还仅在单个 ABI 上运行测试。对于设备验证,请忽略此优化操作并添加所有前提条件和检查。
-
查看控制台中 告的测试进度和结果。
-
如果您的设备搭载的是 Android 5.0 或更高版本,并且声明支持 ARM 和 x86 ABI,则 ARM 和 x86 CTS 包都应运行。
-
(可选)利用套件重试功能重新运行测试的以前会话:
-
使用以下命令查看以前的会话:
-
确定您需要的会话编 ,并将其代入以下命令中:
cts-tradefed run retry --retry session-numbe
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
-
-