兼容性测试套件(CTS)是一个免费的商业级测试套件,可供下载。CTS代表兼容性的“机制”。
CTS在台式机上运行,并直接在连接的设备或仿真器上执行测试用例。CTS是一套单元测试,旨在集成到构建设备的工程师的日常工作流程(例如通过连续构建系统)中。其目的是尽早揭示不兼容性,并确保软件在整个开发过程中保持兼容性。
CTS是一个自动测试工具,包括两个主要的软件组件:
• CTS交易测试工具在您的台式机上运行,并管理测试执行。
• 单独的测试用例在被测设备(DUT)上执行。测试用例以Java作为JUnit测试编写,并作为Android .apk文件打包,以在实际的设备目标上运行。
兼容性测试套件验证器(CTS Verifier)是可供下载的CTS的补充。CTS Verifier为没有手动输入(例如音频质量,加速度计等)的固定设备上测试的API和功能提供测试。
CTS验证器是用于手动测试的工具,包括以下软件组件:
• 在DUT上执行的CTS验证程序应用程序,并收集结果。
• 在桌面计算机上执行的可执行文件或脚本,用于为CTS Verifier应用程序中的某些测试用例提供数据或附加控制。
该图总结了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 可用资源类型中所述。这包括以下测试:简单的值,可绘制,九补丁,动画,布局,样式和主题,以及加载备用资源。 |
蓝牙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运营商网络或VPN,以根据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 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。
除了官网提到的如上内容,还简单补充一下: