1,概述

虽然我起的标题叫做XTS,但是实际上这只是一个总称,在本文中,我将会将我目前学习的心得写下来,以供日后学习。

XTS其实是CTS,GTS,VTS,STS的总称,后面我将会详细的讲解

1.1,CTS介绍

这个叫做(兼容性测试套件),在我看的文档中,我对这个测试的理解是这样子的:

市面上现在有很多安卓系统,但是我们如何保证相同的一个app能在不同的系统上成功运行呢?这就需要我们这个CTS测试了,我们知道app应用层是在Framework层上面,而这个CTS测试就是为了测试这两个层之间的接口,保证了兼容性。

其次我们要知道这个套件测试了哪些方面:

  • 签名测试

    每个 Android 版本中都包含一个 XML 文件,用于描述这一版本所含的所有公开 API 的签名。CTS 包含一个实用工具,该实用工具用于根据设备上可用的 API 检查这些 API 签名。签名检查的结果会记录在测试结果 XML 文件中。

  • 平台API测试

    按照 SDK 类索引所述内容来测试平台(核心库和 Android 应用框架)的 API,以确保 API 的正确性,包括正确的类、属性、方法签名以及正确的方法行为;此外还需进行负面测试,以确保不正确的参数处理产生预期行为。

  • Dalvik 测试

    这类测试侧重于测试 Dalvik 可执行格式的文件。

  • 平台数据模型

    CTS 会测试通过 content provider(如 SDK android.provider 软件包中所述)提供给应用开发者的核心平台数据模型:通讯录、浏览器、设置等。

  • 平台 Intent

    CTS 会测试核心平台 Intent(如 SDK 可用 Intent 中所述)。

  • 平台权限

    CTS 会测试核心平台权限(如 SDK 可用权限中所述)。

  • 平台资源

    CTS 会测试核心平台资源类型(如 SDK 可用资源类型中所述)的处理是否正确。这包括针对以下资源的测试:简单值、可绘制对象、九宫格、动画、布局、样式和主题,以及加载备用资源。

1.2,CTS测试前准备

我根据官方文档的描述,将测试前准备分为了物理环境测试台式机被测安卓设备

1.2.1, 物理环境准备

  • 蓝牙LE信标

    如果被测设备支持蓝牙LE。把至少三个蓝牙信标放到周围不到5米的地方,不用设置什么特殊配置或发射信号,信标类型无所谓,可以是iBeacon、Eddystone,甚至是模拟BLE信标的设备。

  • 超宽带

    如果支持超宽带,则必须将另一个支持 UWB 的设备放置在足够近的位置,并确定其方向,以避免出现天线和无线电盲区。对于距离精确度测试,有特定的放置和方向要求。如需详细了解设置,请参阅 UWB 要求。UWB 测试必须手动运行,在命令行中指定相距一米的两个设备。如需详细了解此测试所需的分片,请参阅本地分片

  • 摄像头

    运行相机 CTS 时,请使用正常的照明条件和一个测试图案(如棋盘图案)。根据 DUT 的最小焦距放置测试图案,避免与镜头靠得太近。

    让相机传感器对准光线充足的场景,使被测相机传感器达到并维持在 CONTROL_AE_TARGET_FPS_RANGE 中配置的最高目标每秒帧数 (FPS)。这适用于 getCameraIdList 报告的所有相机传感器,因为测试会循环访问列出的所有设备并逐个测评其性能。

    如果 DUT 支持外部相机(如 USB 摄像头),请在运行 CTS 时插上外部相机。否则 CTS 测试将失败。

  • GPS/GNSS

    如果 DUT 支持全球定位系统/全球导航卫星系统 (GPS/GNSS) 功能,应该以合适的信号电平向 DUT 提供 GPS/GNSS 信号,以便其接收到相应信号并计算 GPS 位置。GPS 部分必须符合 ICD-GPS-200C 标准。除此之外,GPS/GNSS 信号种类不限(可以是卫星模拟器或者室外 GPS/GNSS 信号中继器),也可以将 DUT 放在距离窗口足够近的位置,使其可以直接接收到足够强的 GPS/GNSS 信号。

  • Wi-Fi 和 IPv6

    CTS 测试需要一个支持 IPv4 和 IPv6 的 Wi-Fi 网络,可以连接到互联网且具有适用于 IPv4 和 IPv6 的有效 DNS,支持 IP 多播,并且可以将 DUT 视为独立客户端。独立客户端是指一种配置,可使 DUT 无法接收该子网上的广播/多网络消息。可以通过 Wi-Fi 接入点 (AP) 配置或通过在未连接其他设备的隔离子网上运行 DUT 来实现独立客户端。

    如果您无法访问原生 IPv6 网络、IPv6 运营商网络或 VPN,导致无法通过某些基于 IPv6 的测试,您可以使用 Wi-Fi 接入点和 IPv6 隧道。

    为通过 CTS 测试,DUT 需要 Wi-Fi 接口设有 UPBROADCASTMULTICAST 标志。Wi-Fi 接口需要分配有 IPv4 和 IPv6 地址。请使用 adb shell ifconfig 检查 Wi-Fi 接口属性。

    对于支持 Wi-Fi STA/STA 并发的设备,需要多个 Wi-Fi 网络(至少 2 个)。为了能够顺利通过 CTS 测试,Wi-Fi 网络必须在具有不同 SSID 的不同频段上运行,或在具有不同 BSSID 的同一 SSID 上运行。

  • Wi-Fi RTT

    Android 包含 Wi-Fi RTT API,用于提供 Wi-Fi 往返时间 (RTT) 功能。此 API 允许设备测量自身与接入点之间的距离(误差在 1 到 2 米内),从而显著提高室内位置信息的准确性。我们推荐两款支持 Wi-Fi RTT 的设备:Google WifiCompulab 的 Fitlet2 接入点(使用 5 GHz 频段,带宽设为 40 MHz)。

    接入点应接通电源,但不需要网络连接。接入点无需紧靠测试设备,但建议距离 DUT 不超过 40 英尺。通常,一个接入点就足够了。

1.2.2,测试电脑准备

CTS只支持64位的Linux系统。

  • FFMPEG

    在主机上安装 ffmpeg 5.1.3 版(或更高版本)的软件包。

    FFmpeg是一个开源的跨平台多媒体处理工具,可以用于录制、转换和流式传输音频和视频文件。它包含一组强大的音视频处理工具和库,可以处理几乎所有流行的音频和视频格式。FFmpeg可以用来实现音频和视频的编解码、转码、剪切、合并、过滤、流媒体处理等功能。

  • 主机升级

    官方建议将 CTS 主机 RAM 升级到 128GB,将 HDD 升级到 256GB。这是为了适应 CTS 测试用例数量的增加以及 tradefed 中 Java 堆空间预留的增加。

  • adb和AAPT2

    注意:对于 CTS 8.0,请使用 1.0.39 版本的 adb。

    运行 CTS 之前,请确保已安装最新版本的 Android 调试桥 (adb)Android 资源打包工具 (AAPT2),并已将这两个工具的位置信息添加到计算机的系统路径中。

    如需安装 adb 和 AAPT2,请从 Android Studio 的 SDK 管理器或从 sdkmanager 命令行工具下载最新的 Android SDK 平台工具Android SDK 构建工具

    确保 adbaapt2 位于您的系统路径下。以下命令假定您已将软件包归档下载到主目录中名为 android-sdk 的子目录:

     export PATH=$PATH:$HOME/android-sdk/platform-tools:$HOME/android-sdk/build-tools/<tools version number>

    注意:请确保起始路径和目录名称准确无误。

  • 用于Ubuntu的Java开发套件

    安装正确版本的 Java 开发套件 (JDK)

    • 对于 Android 11,请安装 OpenJDK11。

    • 对于 Android 9 和 Android 10,请安装 OpenJDK9。

    • 对于 Android 7.0、7.1、8.0 和 8.1,请安装 OpenJDK8。

    如需了解详情,请参阅 JDK 要求

  • CTS文件

    兼容性测试套件下载页面下载与您设备的 Android 版本以及您设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 软件包,并将其打开。

    下载并打开最新版本的 CTS 媒体文件

  • 设备检测

    其实就是进入开发者模式,启用usb调试,当然也可以使用Wifi无线调试,但是建议还是使用Usb调试。

  • 内存限制

    可能需要在 cts-tradefed 脚本中增加测试运行期间可用的最大内存。

1.2.3, Android设备设置准备

  • 用户build

  • 初始化API级别build属性

  • 根据Android版本进行参数的调整

  • CTS shim 软件包

  • 存储空间要求

  • 屏幕和存储空间

  • 开发者UICC

  • Android设备配置

  • 文件安装

1.3,运行CTS

之后输入命令就可以进行测试,更细节的命令我们可以在使用的时候翻阅文档进行了解使用。

我们一般使用Android Test Station 去运行CTS或者使用Trade Federation。

1.4,GTS介绍

GTS的全称是谷歌移动服务测试套件,他是用于测试谷歌移动服务组件的测试工具。谷歌移动服务组件包括了一系列谷歌开发的闭源服务和应用,主要就是有:Gmail,Google Maps, YouTube,Google Play等,因为这些东西在海外来说,已经是一个不可缺少的东西,就好像微信支付宝一样常用

1.5,GTS运行

在使用流程方面,是和CTS的流程一致的,但是在测试的时候,我们一定要保证手机通过VPN连接了IPV6,可以访问Google。

1.5,VTS介绍

全称叫做(供应商测试套件)是谷歌用于测试Android设备的核心硬件抽象层HAL,库Libraries和底层软件系统(Kernel,Fireware等)的健壮性,兼容性和依赖性的测试工具。

我们为什么要做这个测试呢?

因为在以往,Android的版本迭代是很麻烦的,所以在以前,出厂后版本就固定了,也不会升级,但是在8之后引入了project treble项目,在该项目中涉及了Vender Interface 和VTS的概念,也就是说是为了确保同一个Framework可以运行在不同的HAL上,这样多加一层的好处就在于,以后OTA升级的时候,我们就可以关注于Framework的迭代,让用户可以尽快使用全新的Android的版本。

1.6,STS介绍