Android CTS指南 - hursion/Android-CTS GitHub Wiki

Android CTS指南

一.简介

CTS(Compatibility Test Suit)是Google为Android发布的一套兼容性测试用例。由于android是开源的,手机制造商及运营商可以在Android上打造,定制自己特有的手机操作系统,这势必会在源码级别上对Android系统进行代码的增删改。如果不规范,这些更改则会给上层的应用开发带来问题(届时可能会看到华为上跑的飞起的吃鸡在三星上跪了,导致每个应用都需要发布不同厂商的Android手机的版本)。因此,Google为Android提供了一套兼容性测试用例CTS,对手机的硬件,软件,接口,性能进行测试。只有通过CTS测试的Android手机系统,Google才会颁发许可,以保证不同生产商之间的Android系统的兼容。

工作原理

CTS 在桌面设备上运行,并直接在连接的设备或模拟器上执行测试用例,是一个自动化测试工具,其中包括两个主要软件组件:

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

CTS verifier是对 CTS的补充。为无法在没有手动输入(例如音频质量、加速度计等)的固定设备上进行测试的 API 和功能提供测试。是一款手动测试工具,包含以下软件组件:

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

工作流程

官方总结图

测试用例的类型

CTS 包含以下类型的测试用例:

  • 单元测试会测试 Android 平台中很微小的代码元素;例如 java.util.HashMap 等单个类。

  • 功能测试会通过较高级别的用例将 API 组合到一起进行测试。

CTS 的未来版本将包含以下类型的测试用例:

  • 稳健性测试会测试系统在压力下的耐久性。

  • 性能测试会根据定义的基准测试系统的性能,例如每秒渲染帧数。

在CTS测试结束以后,测试完成会生成相应logs和results,test_result.xml中有Junit TestRunner中所熟悉的状态条,绿色表示通过,红色表示此测试用例没通过,内容为测试结果简述以及各个测试包的测试详情,包括测试通过( Pass )的测试用例数和失败( Fail )的用例数。

Fail 的原因有两种,一种是客制化后的系统有问题,对于这种 Fail 需要检查并修改程序后重新测试。 另一种是 Android 系统本身的问题,这种 Fail 需要可以申请 Google 的豁免。

涵盖的领域

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

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

二. CTS Brance & tag & code

1、 CTS Branch CTS 有自己的开发分支,每个 Android 版本对应不同的 CTS 分支,具体可见下表 注意:该时间表是暂定的,可能会随着给定 Android 版本 CTS 的正式发布而不时更新

Android 版本 分支 频率
9 pie-cts-dev 每月
8.1 oreo-mr1-cts-dev 每月
8 oreo-cts-dev 每月
7.1 nougat-mr1-cts-dev 每月
7 nougat-cts-dev 每月
6 marshmallow-cts-dev 每月

对于 5.1、5.0、4.4、4.3 和 4.2,尚没有相应的版本发布计划。 版本发布当月的重要日期

  • 第一周的周末:代码冻结。此时,不再接受与当前分支有关的提交内容,并且提交内容不会包含在下一版本的 CTS 中。我们选择了候选版本后,分支将再次开放并接受新的提交内容。
  • 第二周或第三周:在 Android 开放源代码项目 (AOSP) 中发布 CTS。

2、 CTS Tag (1) CTS Tag 介绍 Google 每个月均会更新测试包,每次更新时,均会 release 一个 build tag 用于标识,便于查看相应 code, 具体可见 Google 的说明 https://source.android.com/compatibility/cts/downloads#android-81 例如,目前8.1测试包已经更新到8.1 R9版本,其对应的 TAG 为:android-cts-8.1_r9 (2) Tag 格式 CTS Tag 格式一般为:android-cts-aa_rb,其中,aa 代表 Android 版本号,b 代表测试包版本号,比如 android-cts-8.1_r1就代表8.1 R1测试包对应的 tag

3、CTS code 有两种方式可查看 CTS code 如果是为了 debug,建议采用方法1;如果只是单纯的查看 code,建议采用方法2

方法1:从平台代码获取 CTS code 平台版本的 CTS code 与 google release 的 CTS 测试包的 code 不完全一致 所以哪个测试包报出的问题,结合 code 分析时就需要将 code 切换到对应的版本上

(1) 获取 code

git clone https://android.googlesource.com/platform/cts

a. 获取特定分支的 code cts case 问题导致的 failure 需要向 google 提交修复 patch,patch 需提交到 cts 的开发分支 CTS 分支可参上 Branch 切换方法如下: 进入 CTS 仓库,执行如下命令: $ git fetch $ git branch -r | grep cts //获得 cts 的相应 branch $ git checkout -b nougat-cts-dev korg/ nougat-cts-dev 获得 nougat-cts-dev 分支的 cts code

b. 获取特定测试包的 code 即获取特定 tag 的 code Tag 切换方法如下: 进入 CTS 仓库,执行如下命令 $ git fetch $ git tag | grep cts //获得 cts 的相应 tag $ git checkout -b 7.0_r24 android-cts-7.0_r24 获得 android-cts-7.0_r24的 cts code

(2) 在 cts 中添加 log 将 code 切换到对应 tag 或者 branch 之后,为更方便定位问题,可以在 cts 代码中添加 log 来定位问题 1)在 cts code 中添加 log 并在对应的 package 中采用 mm 编译,生成相应的测试 apk; 2)将 apk 替换到 cts 测试包的 android-cts/testcases 中,测试时便会自动安装此 apk,执行相应方法 或者在 android 根目录下整体编译 cts:make cts 获取更多添加 log 的 apk

方法2:在 googlesource 查看 code (1) 查看特定 branch/tag 的 code 如果只是单纯的查看 code,并不打算 debug,可以直接进入以下地址来查看 https://android.googlesource.com/platform/cts/ 需要根据自己的需求,先从左边的 branches 或者 Tags 选择一个 (2) 查看两个 tag 之间的 code 差异 例如,android-cts-7.0_r23与 android-cts-7.0_r24之间的差异,可通过以下地址查看 https://android.googlesource.com/platform/cts/+log/android-cts-7.0_r23.android-cts-7.0_r24/?no-merges&n=1000 若想查看别的 tag 之间的差异,修改以上地址的 tag 即可

三.测试环境配置

物理环境

蓝牙 LE 信标

如果 DUT 支持蓝牙 LE 功能,则应在与 DUT 的距离不超过五米的范围内放置至少三个蓝牙 LE 信标,以进行蓝牙 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 针对 Wi-Fi RTT 功能增加了一个 API,此 API 允许设备测量自身与接入点之间的距离(误差幅度在 1 到 2 米内),从而显著提高室内位置信息精确度。以下是支持 Wi-Fi 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 工具。

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

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

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

Java 开发套件 (JDK)

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

在 Ubuntu 上,使用 OpenJDK 8。 在 Mac OS 上,使用 jdk 8u45 或更高版本。 如需了解详情,请参阅 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 属性应处于未设置状态 (removed);而对于所有后续版本,该属性应设置为正确的 API 级别值。通过这种方式,该属性可以正确标识新产品,而且我们不会丢失任何关于产品初始 API 级别的信息。如果标记处于未设置状态,则 Android 会将 Build.VERSION.SDK_INT 分配给 ro.product.first_api_level。

CTS Shim 应用

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

frameworks/base/packages/CtsShim/CtsShim.apk 该 apk 文件将复制到系统映像上的 /system/app/CtsShimPrebuilt.apk。 frameworks/base/packages/CtsShim/CtsShimPriv.apk 该 apk 文件将复制到系统映像上的 /system/priv-app/CtsShimPrivPrebuilt.apk。 CTS 会使用这些应用来测试特权和权限。要通过测试,您必须将应用预加载到系统映像上的相应目录下,但不能对它们重新签名。

示例小程序

Android 9 引入了 Open Mobile API 测试用例,用于检查安全元件底层实现是否符合标准。这些测试用例需要安装可供 CTS 应用用于与之通信的专用小程序。用户可以使用提供的示例小程序。

这个小程序适用于配有 eSE(嵌入式安全元件)、SIM 或 SD 的设备。要详细了解 Open Mobile API 测试用例和访问控制测试用例,请参阅安全元件的 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: 98MB 720x480: 193MB 1280x720: 606MB 1920x1080: 1863MB

屏幕和存储空间

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

如果设备具有 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

四.CTS错误形式

  1. assert fail
  2. 显示5min或者10min超时

五.调试技巧

[QUESTION] 调试CTS测试不过时,CTS的源代码中有很多控制的调试信息,如何打开输出更多的调试信息

[ANSWER]

比如这样的CTS代码,如何让CTS代码执行到红色部分,这样可以输出更多的调试信息

public class ImageWriterTest extends Camera2AndroidTestCase {

private static final String TAG = "ImageWriterTest";

private static final boolean VERBOSE = Log.isLoggable(TAG, Log.VERBOSE);

private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);



         outputImage = listenerForWriter.getImage(CAPTURE_IMAGE_TIMEOUT_MS);

         mCollector.expectTrue("ImageWriter 1st output image should match 1st input image",

                isImageStronglyEqual(cameraImage, outputImage));

         if (DEBUG) {

             String img1FileName = DEBUG_FILE_NAME_BASE + "/" + maxSize + "_image1_copy.yuv";

             String outputImg1FileName = DEBUG_FILE_NAME_BASE + "/" + maxSize

                    + "_outputImage2_copy.yuv";

            dumpFile(img1FileName, getDataFromImage(cameraImage));

            dumpFile(outputImg1FileName, getDataFromImage(outputImage));

        }

        ….

    mReaderForWriter = createImageReader(maxSize, format, MAX_NUM_IMAGES, listenerForWriter);

    if (VERBOSE) {

        Log.v(TAG, "Created ImageWriter output ImageReader");

     }

先注意看前面的TAG名字是ImageWriterTest,设置这个tag的debug log level就可以了

在测CTS之前

运行这个命令就可以

adb shell setprop log.tag.ImageWriterTest D

运行这个命令就可以打开VERBOSE

Verbose打开了debug自然也打开了

adb shell setprop log.tag.ImageWriterTest V

[QUESTION] android7.0 cts测试常用命令有哪些?

[ANSWER] 以下总结的是针对7.0 cts测试常用命令,其它android产品可能有差异

若想了解更多的cts测试指令,可以在cts命令行模式中输入:help或者run cts --help-all(比help命令更详细)来了解

1、整测命令:run cts

2、单module测试命令:run cts -m module

3、单class测试命令:run cts -m module -t class

4、单case测试命令:run cts -m module -t class#method

5、对所有fail和未执行case复测命令

首先,会有一份整测报告,然后执行以下操作 (1)输入 l r来查看所有报告的session id 例如: cts-tf > l r Session Pass Fail Not Executed Modules Complete Result Directory Test Plan Device serial(s) Build ID Product
0 2 0 0 2 of 2 2017.04.24_15.06.55 cts SC98602G10067010341 NRD90M sp9860g_2h10_native
1 2 0 0 2 of 2 2017.04.24_15.10.51 cts SC98602G10067010341 NRD90M sp9860g_2h10_native
2 324 8 0 2 of 2 2017.04.24_19.51.49 cts CVH7N15C14006805 N4F26T angler
(2)输入run cts --retry session_id会对所有的fail和未执行项重新进行测试 例如: cts-tf > run cts --retry 2 08-03 20:04:38 I/TestInvocation: Starting invocation for 'cts' on build '3863512' cts --retry 2 Compatibility Test Suite 3863512 CTS 1501761878616 /home/local/SPREADTRUM/juanjuan.hou/cts/7.0/8/arm/android-cts/tools/./../.. 7.0_r8 cts https://androidpartner.googleapis.com/v1/dynamicconfig/suites/CTS/modules/{module}/version/{version}?key=AIzaSyAbwX5JRlmsLeygY2WWihpIJPXFLueOQ3U 2017.08.03_20.04.38 on device SP7731C11005C130691

6、对多个module进行测试方法 A. 如果是针对已经跑过的进行整合测试,则需要执行以下操作 (1)输入 l r来查看fail项所在报告的session_id (2)输入a s --session session_id --name subplan_name --result-type status来生成一个subplan xml文件

其中subplan_name就是这个subplan的名字,可以随意起;result-type 可选择三种状态:passed、failed、not_executed,即选择的就是session_id报告中的所有pass、fail、not_executed项

这时会在android-cts/subplans中生成subplan名字的xml文件,里面主要定义了所有的module,也可以对subplan xml文件进行随意编辑。其中exclude标签的表示,不需测试的;include标签的表示需要进行测试的 例如: cts-tf > a s --session 2 --name fail --result-type failed 08-03 20:14:12 I/SubPlanCreator: Created subplan "fail" at /home/local/SPREADTRUM/juanjuan.hou/cts/7.0/8/arm/android-cts/tools/./../../android-cts/subplans/fail.xml

(3)输入run cts --subplan subplan_name命令便会开始进行测试

B.没有整测报告,只是需要对特定module、case进行测试

可以自行在android-cts目录下新建subplans文件夹;并自定义subplan的xml文件

跑测命令为:run cts --subplan subplan_name

C.可以采用命令--include-filter 进行多module测试 比如:若想测试CtsAadbHostTestCases和CtsAbiOverrideHostTestCases module,命令如下 run cts --include-filter CtsAadbHostTestCases --include-filter CtsAbiOverrideHostTestCases

7、增加 host log/device log 信息 CTS 在 PC 端生成的 log 只留最后20MB,CTS 全测试时前面的 log 会被冲掉,有时候需要保留完整的测试信息,便于分析问题,可采用下面命令 --max-tmp-logcat-file The maximum size of tmp logcat data to retain, in bytes. Only used if --enable-logcat is set Default: 20971520.单位为byte

例如:

run cts --max-tmp-logcat-file 2000000000 表示支持log最大2G

8、在 fail 时截屏 --screenshot-on-failure

例如:run cts --screenshot-on-failure

9、对于偶现问题,验证时一般需要循环测试所在module,命令如下: --loop –min-loop-time time 其中time是循环的间隔时间,中间可输入 l r 查看测试结果

例如:run cts -m CtsAadbHostTestCases --loop –min-loop-time time 3000

10、跳过预置条件的检查 因为在测试开始时,CTS 会进行预置条件的检测,若有预置条件没设置,则会停止测试.但是若你只是想测试某些 case,且这些 case 不需要翻墙 wifi/gps,则可以在测试方法最后添加如下参数来逃过预置条件的检测。 run cts *** --skip-precondition

⚠️ **GitHub.com Fallback** ⚠️