Android XTS测试简述
XTS 简述
XTS 是一个统称,包含VTS、CTS、GTS,如果是TV类型产品,还要做netflix 认证,简称NTS,其余TS含义如下:
元素 | 说明 |
---|---|
VTS | Vendor Test Suite |
CTS | Compatibility Test Suite |
GTS | Google Mobile Services Test Suite |
NTS | Neflix Test Suite |
下面来分别介绍这几个测试:
CTS
CTS 测试简介
Android的CTS测试,意为兼容性测试;只有通过CTS测试的设备才有可能获得Android的商标和享受Android Market的权限
Android CTS 通过运行和安装一系列 dex 和 APK文件,通过模拟不同的场景,测试Android 标准的接口是否正常返回,以此来保证不同版本APP的兼容性
CTS test.png
CTS测试包括CTS基本测试和CTS Verifier测试两部分,后者是前者的补充,CTS检查的是API和功能,而CTS Verifier是测试在静态设备上测试无法自动测试的API和功能,例如音频质量,触摸屏,加速度计,相机等等
CTS 更多信息可以参考Google 官方网站:
兼容性测试套件
CTS标准测试方法
-
下载cts 测试包
CTS测试包下载
也可以通过编译Android源代码的方式获得,在android源代码目录下输入make cts命令来编译CTS,之后会在out/host/linux-x86/cts/下生成android-cts文件夹。这个文件夹就是 Compatibility Test Suit -
进入cts 命令行
-
运行CTS需要在宿主机上,一般宿主机使用 Linux 内核的操作系统;
-
准备好要测试的设备,刷上要自己要测试的版本,进入开发者模式设置stay awake,宿主机安装adb,adb device 确保能识别到 adb设备;
-
进入目录android-cts,该目录是通过上面那两种方法解压获得的,在android-cts目录下会有3个文件夹,其中一个是tools;进入tools目录,输入./startcts 来启动CTS
- 运行相应的测试plan
-
ls --plan 命 令显示google自带的测试方案,如:Java、Signature、Android、CTS、VM、RefApp、Performance、 AppSecurity。其中Performance这个方案是google暂不要求的 Java、Signature、Android、VM、 RefApp、Appsecurity方案都是CTS方案的子集
-
用命令ls -d 来查看已连接的设备,CTS测试之前我们必须保证至少有一个设备连接上
-
输入命令start --plan CTS 来执行CTS测试方案,该方案有两万多条测试项目,需要很长时间,我们做的都是针对某些包的测试;如果连接了多个设备的话需加上-d 参数,后面跟上设备id来告诉CTS需要测试的设备
-
对单独一个包进行测试的方法:start --plan CTS -p 包名 ;推荐用这种方法来进行针对性的测试。需要知道有哪些包名,可以输入命令:ls --plan CTS
CTS简要验证方法
windows 下使用下面的bat 脚本,同时准备一个case.txt
@echo off
adb root
echo Testing start... > results.txt
set casename=''
set pkg=android.display.cts. #根据需要修改
setlocal enabledelayedexpansion
for /f %%i in (cases.txt) do (
set casename=%%i
set classname=!pkg!!casename!
echo Testing !classname!
adb shell am instrument -w -r -e newRunListenerMode true -e class !classname! -e timeout_msec 900000 android.display.cts/androidx.test.runner.AndroidJUnitRunner >> results.txt
)
pause
该脚本会读取case.txt中case名而后运行,case.txt 的内容示例如下:
BrightnessTest
DisplayTest
VirtualDisplayTest
可以在cts 源代码中找到自己需要的测试case 名称:
/cts/tests/tests/display/src/android/display/cts/
每个测试case 都是以xxxTest.java 命名的,具体测试case 中的内容可以参考xxxTest.java 的源代码
Instant 的测试bat脚本:
@echo off
echo Testing start... > results_instant.txt
set casename=''
set pkg=android.display.cts.
setlocal enabledelayedexpansion
for /f %%i in (cases.txt) do (
set casename=%%i
set classname=!pkg!!casename!
echo Testing !classname!
adb shell am instrument -w -r -e newRunListenerMode true -e notAnnotation android.platform.test.annotations.AppModeFull,com.android.compatibility.common.util.CtsDownstreamingTest -e class !classname! -e timeout_msec 900000 android.display.cts/androidx.test.runner.AndroidJUnitRunner >> results_instant.txt
)
pause
VTS
VTS 简介
CTS 是对Android 上层标准接口进行测试,VTS是针对下面内容进行的测试:
- 内核
- 硬件抽象层 (HAL)
VTS 在桌面设备上运行,并直接在所连接的设备或模拟器上执行测试用例,与 CTS类似,VTS 是一个自动化测试套件
VTS标准测试方法
TBD
VTS简要验证方法
VTS测试代码都是native 层代码,因为可以直接编译在测试机上运行;
找到cts souce code 目录,直接mmm + code url 编译生成vts测试档案,adb push 到测试机的 data 目录下运行即可;