android cts测试方法及步骤 Android gts测试方法与步骤

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/capeng https://blog.csdn.net/capeng/article/details/79876677

CTS 是一个兼容性性测试工具。是Android TV 的必备条件。

CTS 是一个自动化测试工具,其中包括两个主要软件组件:

  • CTS tradefed 自动化测试框架会在桌面设备上运行,并管理测试执行情况。
  • 单独的测试用例会在被测设备 (DUT) 上执行。测试用例采用 Java 语言编写为 JUnit 测试,并打包为 Android .apk 文件,以在实际目标设备上运行。

CTS的主要测试模型如下:

这个图是官网上面来的。是CTS运行的主要流程。

在我做CTS测试的过程中,大概是遵照如下一个流程去测试的:

1、准备好你要测试的Android 系统

2、下载CTS 测试工具包

3、下面media测试包

4、配置好测试环境,测试用的服务器

5、进行CTS测试。根据报告重试fail项目。直到你得到一个干净的报告。

这个是一个比较费时的过程,Android 8.0的测试项目有74万多项。测试时间理论时间需要87个小时的样子。但实际上没有一个星期基本上得不到一个结果。测试时间会受到VPN网络的影响。机器跟服务器中断的影响等。

Android system的需求

首先你得拿到google的 认证。成为google partner。这样你会得到google的一个指引等等。这是另外一个话题。这里只说一下system的大概需求:首先必须是user模式编译。系统必须有一个device的usb口。需要有widewine playready hdcp2 的drm 等。

固件准备好了之后,你必须到google官网下载CTS 测试工具。这个是开放的。谁都能下载到:

https://source.android.com/compatibility/cts/downloads

cts测试工具之外还需要从官网下载media包。大概有4个g的样子,这样能节省你在跑CTS时候的时间。提前内置media,就不需要由盒子在测试过程中去下载媒体了。

这里比较重要的一点是服务器的搭建:

CTS currently supports 64-bit Linux and Mac OS host machines

google 推荐使用 ubuntu14.04系统。事实证明这个版本的Ubuntu跑起来也是最顺利的。其他版本都有各种中断或者其他小问题。

1、安装 Ubutnu 14.04

2、安装openjdk

3、安装Android SDK 可以参考:https://developer.android.com/studio/command-line/sdkmanager.html

4、配置adb的环境变量。这个比较重要。

google 有比较详细的说明:

参考网站:https://source.android.com/compatibility/cts/setup

服务器搭建好,接下来就是进行测试:

1、机器必须有唯一标识 也就是deviceID。

2、打开开发者模式,打开usbdebug 保持屏幕wake

3、把下载好的media包推进机器里面:进入media包 tools目录下面

运行拷贝脚本 ./copy_media.sh all

4、进入CTS 测试套件目录:进入tools目录 :

./cts-tradefed 运行进入cts测试命令行

然后:run cts 进行全模块测试

这样一个流程就可以进行cts 测试。在测试过程中有几个比较重要的命令可能会使用到:

help all

Display the complete list of available commands

这个是最重要的,这个命令可以让你看到所有的cts 命令帮助。一开始的时候,我就是通过这个了解到这些命令的

–retry

Retry all tests that failed or were not executed from the previous sessions. Use list results to get the session id.

run cts -r 0

cts 一定会中断,测试不会中断的肯定是上一百辈子都拯救了整个宇宙一万次。我跑过最顺利的一次cts用了一个星期,因为只跑了32bit的测试。最正常的加上调试一个多月没跑完的。

–module/-m [–module/-m …]

Run the specified test module or modules.

run cts -m module

这个命令也比较重要,因为cts测试过程中,可能会涉及到一些软件的更改。修改软件之后,验证是否成功,这个命令就比较有用个,他可以单独测试一个模块。

–abi

Force the test to run on the given ABI, 32 or 64. By default CTS runs a test once for each ABI the device supports.

这个命令简直是一个神一样的存在,对于一些64bit的机器。你跑直接run cts 他是需要跑 64bit 跟32bit的两份测试的。但是你加上 -abi 可以指定单独跑32bit 或者64bit的测试,相当于只需要一半的时间可以跑完cts的测试。

可能有些没有vpn的没有办法看到google上面的资料,下面是我从google网站上面抄下来的关于环境配置的一些东西:

设置 CTS

物理环境

蓝牙 LE 信标

如果 DUT 支持蓝牙 LE 功能,则应在与 DUT 的距离不超过五米的范围内放置至少三个蓝牙 LE 信标,以进行蓝牙 LE 扫描测试。这些信标可以为任何类型,不需要进行配置或发射任何特定信号,并且可以包括 iBeacon、Eddystone,甚至模拟 BLE 信标的设备。

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 隧道代理列表

台式机设置

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

ADB 和 AAPT

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

要安装 ADB,请下载适用于您的操作系统的 Android SDK 工具包,打开它,然后按照附带的 README 文件中的说明进行操作。要了解问题排查相关信息,请参阅安装独立 SDK 工具

确保 adb 和 aapt 位于您的系统路径下。以下命令假定您已在主目录中打开了软件包归档文件:


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

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

Java 开发套件 (JDK)

安装正确版本的 Java 开发套件 (JDK)。对于 Android 7.0 -

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

CTS 文件

下载并打开与您设备的 Android 版本以及您的设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 包。

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

设备检测

请按照相应的步骤设置您的系统以检测设备,例如为 Ubuntu Linux 创建 udev 规则文件。

Android 设备设置

用户版本

兼容的设备被定义为具有 user/release-key 签名版本的设备,因此您的设备应运行基于代号、标签和版本号中已知兼容的用户版本(Android 4.0 及更高版本)的系统映像。

注意:使用 CTS 确认最终系统映像的 Android 兼容性时,您必须在具有用户版本的设备上执行 CTS。

初始 API 级别版本属性

某些 CTS 要求取决于设备最初搭载的版本。例如,如果设备最初搭载的是较低的版本,则不一定需要遵循适用于搭载较高版本的设备的系统要求。

为了保证 CTS 可读取到这些信息,设备制造商可以定义编译时属性:ro.product.first_api_level。该属性的值是对该设备进行商业化发布时所采用的初始 API 级别。

OEM 可以将 PRODUCT_PROPERTY_OVERRIDES 添加到其 device.mk 文件以设置这项属性,具体如以下示例所示:

#ro.product.first_api_level indicates the first api level, device has been commercially launched on.
PRODUCT_PROPERTY_OVERRIDES +=\
ro.product.first_api_level=21

注意:对于产品的第一个版本,ro.product.first_api_level 属性应未设置 (0);而对于所有后续版本,该属性应设置为正确的 API 级别值。通过这种方式,该属性可以正确标识新产品,而且我们不会丢失任何关于产品初始 API 级别的信息(值为 0 意味着 ro.product.first_api_level = Build.VERSION.SDK_INT)。

CTS Shim 应用

Android 7.0 包含以下预编译的应用(根据此处的源代码编译),这些应用不包含除清单以外的任何代码:

CTS 会使用这些应用来测试特权和权限。要通过测试,您必须将应用预加载到系统映像上的相应目录下,但不能对它们重新签名。

存储空间要求

CTS 媒体压力测试要求将视频剪辑存放在外部存储设备 (/sdcard) 上。大部分剪辑来自 Big Buck Bunny,其版权归 Blender Foundation 所有并采用 Creative Commons Attribution 3.0 许可

所需空间取决于设备支持的最高视频播放分辨率(要查看所需分辨率的平台版本,请参阅兼容性定义文档中的第 5 部分)。请注意,被测设备的视频播放功能将通过 android.media.CamcorderProfile API(针对早期 Android 版本)和 android.media.MediaCodecInfo.CodecCapabilities API(针对 Android 5.0)进行检测。

以下是按最大视频播放分辨率列出的存储空间要求:

  • 480x360:98 MB
  • 720x480:193 MB
  • 1280x720:606 MB
  • 1920x1080:1863 MB

屏幕和存储空间

  1. 任何没有嵌入式屏幕的设备一律需要连接到屏幕。
  2. 如果设备具有存储卡插槽,请插入空的 SD 卡。请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或使用至少具有 Class 10 速度的 SD 卡,以确保设备能够通过 CTS。

    警告:CTS 可能会修改/清空插入设备的 SD 卡上的数据。

  3. 如果设备具有 SIM 卡插槽,请将激活的 SIM 卡插入每个插槽。如果设备支持短信,则应填充每个 SIM 卡的号码字段。

开发者 UICC

为了执行 CTS 运营商 API 测试,该设备需要使用运营商授权的 SIM 卡。请参阅准备 UICC

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

猜你喜欢

转载自blog.csdn.net/capeng/article/details/79876677