CTS 环境搭建及注意事项

如下内容来自官网翻译:

兼容性测试套件

CTS如何工作?


兼容性测试套件(CTS)是一个免费的商业级测试套件,可供下载。CTS代表兼容性的“机制”。
CTS在台式机上运行,并直接在连接的设备或仿真器上执行测试用例。CTS是一套单元测试,旨在集成到构建设备的工程师的日常工作流程(例如通过连续构建系统)中。其目的是尽早揭示不兼容性,并确保软件在整个开发过程中保持兼容性。

CTS是一个自动测试工具,包括两个主要的软件组件:
• CTS交易测试工具在您的台式机上运行,并管理测试执行。
• 单独的测试用例在被测设备(DUT)上执行。测试用例以Java作为JUnit测试编写,并作为Android .apk文件打包,以在实际的设备目标上运行。
兼容性测试套件验证器(CTS Verifier)是可供下载的CTS的补充。CTS Verifier为没有手动输入(例如音频质量,加速度计等)的固定设备上测试的API和功能提供测试。

CTS验证器是用于手动测试的工具,包括以下软件组件:
• 在DUT上执行的CTS验证程序应用程序,并收集结果。
• 在桌面计算机上执行的可执行文件或脚本,用于为CTS Verifier应用程序中的某些测试用例提供数据或附加控制。

工作流程


该图总结了CTS工作流程。请参阅本节的子页面,从安装程序开始,了解详细说明。
CTS 环境搭建及注意事项

测试用例的类型


CTS包括以下类型的测试用例:
• 单元测试测试Android平台中的原子代码单位; 例如单个类,如java.util.HashMap。
• 功能测试在较高级别的用例中将API的组合测试结合在一起。
未来版本的CTS将包括以下类型的测试用例:
• 鲁棒性测试测试系统在应力下的耐久性。
• 性能测试根据定义的基准测试系统的性能,例如每秒渲染帧数。

覆盖域


单元测试用例涵盖以下几个方面,以确保兼容性:

描述
签名测试 对于每个Android版本,都有XML文件描述版本中包含的所有公共API的签名。CTS包含一个实用程序,用于根据设备上可用的API检查这些API签名。签名检查的结果记录在测试结果XML文件中。
平台API测试 测试SDK 类索引中记录的平台(核心库和Android应用程序框架)API,以确保API的正确性,包括正确的类,属性和方法签名,正确的方法行为和否定测试,以确保不正确的参数处理的预期行为。
达尔维克测试 测试重点是测试Dalvik可执行格式。
平台数据模型 CTS测试核心平台数据模型,通过内容提供商暴露给应用程序开发人员,如SDK android.provider软件包中所述:联系人,浏览器,设置等。
平台意图 CTS测试核心平台意图,如SDK 可用意图中所述。
平台权限 CTS测试核心平台权限,如SDK 可用权限中所述。
平台资源 CTS测试正确处理核心平台资源类型,如SDK 可用资源类型中所述。这包括以下测试:简单的值,可绘制,九补丁,动画,布局,样式和主题,以及加载备用资源。

设置CTS

物理环境


蓝牙LE信标

如果DUT支持蓝牙LE功能,则至少有三个蓝牙LE信标应放置在DUT的五米内,用于蓝牙LE扫描测试。这些信标可以是任何类型的,不需要配置或发出任何具体的信号,并且可以包括iBeacon,Eddystone,甚至模拟BLE信标的设备。

GPS / GNSS

如果DUT支持全球定位系统(GPS)全球导航卫星系统(GNSS)功能,那么应该以合适的信号水平向DUT提供符合ICD-GPS-200C的GPS部分的GPS / GNSS信号接收和GPS位置计算。GPS / GNSS信号源可以是任何类型的,从卫星模拟器到室外信号的GPS / GNSS中继器,简单地将DUT的位置靠近窗口,使得它可以直接接收足够的GPS / GNSS信号。

Wi-Fi和IPv6

CTS测试需要支持IPv6的Wi-Fi网络,可将被测设备(DUT)视为隔离客户端,并具有互联网连接。一个孤立的客户端是指一个配置,其中DUT不能通过Wi-Fi AP配置或通过在隔离子网上运行DUT而无法连接其他设备的子网上的广播/多网消息的可见性。

如果您无法访问本机IPv6网络,IPv6运营商网络或v*n,以根据IPv6通过一些测试,则可以使用Wi-Fi接入点和IPv6隧道。请参阅*的IPv6隧道代理列表。

台式机设置


CTS目前支持64位Linux和Mac OS主机。

adb和AAPT

在运行CTS之前,请确保您已安装Android Debug Bridge(adb)和Android Asset Packaging Tool(AAPT)的最新版本,并将这些工具的位置添加到计算机的系统路径中。

要安装ADB,请下载 适用于您的操作系统的Android SDK Tools软件包,将其打开并按照附带的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 Media Files。

设备检测

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

Android设备要求


用户版本

兼容设备被定义为具有用户/释放**签名构建的设备,因此您的设备应该基于已知的兼容用户构建(Android 4.0及更高版本)从代码名称,标签和构建号码运行系统映像。
注意:当用于确定最终系统版本的Android兼容性时,必须在user版本的设备上执行CTS。

第一个API级构建属性

某些CTS要求取决于最初发货的设备。例如,最初与早期版本一起提供的设备可能会被排除在适用于稍后生成的设备的系统要求中。

为了向CTS提供此信息,设备制造商可以定义构建时属性:ro.product.first_api_level。该属性的值是设备商业化启动的第一个API级别。

OEM可以添加PRODUCT_PROPERTY_OVERRIDES到其device.mk文件中以设置此属性,如以下示例所示:

#ro.product.first_api_level表示第一个api级别,设备已经在商业上启动。
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包含以下预构建的应用程序(源自此源代码),该应用程序不包含清单以外的任何代码:

frameworks/base/packages/CtsShim/CtsShim.apk
该apk文件被复制到/system/app/CtsShimPrebuilt.apk 系统映像上。
frameworks/base/packages/CtsShim/CtsShimPriv.apk
该apk文件被复制到/system/priv-app/CtsShimPrivPrebuilt.apk 系统映像上。
CTS使用这些应用来测试权限和权限。要通过测试,您必须将应用程序预加载到系统映像上的相应目录中,而无需重新签名。

存储要求

CTS媒体压力测试需要视频剪辑在外部存储(/sdcard)上。大部分剪辑均来自Big Buck Bunny,受到“ 知识共享署名3.0”授权的Blender Foundation版权所有 。

所需的空间取决于设备支持的最大视频播放分辨率(有关所需分辨率的平台版本,请参阅兼容性定义文档中的第5节。)请注意,被测设备的视频播放功能将通过android.media.CamcorderProfileAPI适用于早期版本的Android和android.media.MediaCodecInfo.CodecCapabilitiesAndroid 5.0 的API。

以下是最高视频播放解析度的存储要求:

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

屏幕和存储

任何没有嵌入式屏幕的设备需要连接到屏幕。
如果设备有存储卡插槽,请插入空的SD卡。使用支持SDHC或SDXC容量的超高速(UHS)总线的SD卡或至少具有10级以上速度的SD卡,以确保它能通过CTS。
警告: CTS可能会修改/删除插入设备的SD卡上的数据。
如果设备有SIM卡插槽,请将**的SIM卡插入每个插槽。如果设备支持短信,则每个SIM卡应该有自己的号码字段填充。

开发者UICC

为了运行CTS运营商API测试,该设备需要具有载体特权规则的SIM卡。请参阅准备UICC。

Android设备设置


  1. 工厂数据重置设备:设置>备份和重置>出厂设置复位
    警告:这将清除设备中的所有用户数据。
  2. 将设备的语言设置为英语(美国):设置>语言和输入>语言
  3. 如果设备上有GPS或Wi-Fi /蜂窝网络功能,请打开位置设置:设置>位置>开
  4. 连接到支持IPv6的Wi-Fi网络,可以将被测设备(DUT)视为隔离客户端(请参阅上面的物理环境部分),并具有Internet连接:设置> Wi-Fi
  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
    在设备上,启用:设置>辅助功能>辅助功能>委托辅助功能服务
    注意:对于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(serial)选项添加到末尾。例如,要使用串行1234567将设备复制到720x480,请运行:./copy_media.sh 720x480 -s 1234567

注意事项:

除了官网提到的如上内容,还简单补充一下:

  • 可以用CTS Verifier的Bluetooth测试模拟BLE信号
  • 关于网络和IPv6前面的博客写了
  • 最好使用Ubuntu 14 ,方便安装32位依赖库
  • 关于强制安装32位依赖,参考一下:http://www.cnblogs.com/cartsp/p/5308604.html
  • 将adb和aapt复制到/bin目录下比较方便,
  • 可以在Ubuntu安装一下Android Studio。顺便用它配置adb以及下载SDK,用来debug也方便
  • android 7.0之后的CTS tool ,需要使用OpenJDK8,。
    安装命令:
    sudo add-apt-repository ppa:openjdk-r/ppa
    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
    配置命令:
    sudo update-alternatives –config java
    sudo update-alternatives –config javac
    验证命令:
    java -version
  • media文件要及时更新哦
  • 国内需要使用联通SIM卡来测试
  • 关于UICC SIM卡需要定制