AndroidTV XTS
名词定义
本文档及子文档中,将涉及以下名词术语:
| 名词 | 定义 |
|---|---|
| XTS | 包含CTS/CTS-on-GSI/VTS/GTS/TVTS/STS,这里用于Google Android认证的一系列测试工具的总称 |
| CTS | Compatibility Test Suite,测试设备对Android的兼容性 |
| CTS-on-GSI | 将system分区替换为GSI以后运行的CTS,使用跟CTS同样的测试套件 |
| GSI | General System Image,Google提供的通用系统映像 |
| STS | Security Test Suite,测试设备的安全特性,包括权限管理、数据加密、网络安全等方面 |
| VTS | Vendor Test Suite,测试Android 设备的核心硬件抽象层 HAL、库 Libraries 和底层软件系统(比如 Kernel、Fireware 等)的健壮性、兼容性和依赖性 |
| GTS | GMS/GTVS Test Suite,测试GMS/GTVS能否正常工作的测试工具 |
| GTVS | 谷歌一系列服务组件,TV上是GTVS,手机是GMS |
| TVTS | TV Test Suite,测试Android TV的功能和性能,如Netflix/Youtube/LauncherX等app的冷热启动及相互切换、Youtube/media的播放、Memory的压力测试等 |
| DUT | Device Under Test,被测试的设备,本文中一般指一台Android TV设备 |
| userdebug image | userdebug版本的image,可以root,可以用su权限进行操作 |
| user image | user版本的image,无法root,不可以用su权限进行操作 |
| Monitor | 和TV平台会有些许差异,比如没有Tunner等,外销出口的话也需要通过CTS认证 |
| bootcode | 引导程序,XTS测试,有需要在bootcode下面设定参数 |
| 串口 | Android TV硬件上开放出来的调试接口,通过串口连接到host端主机,允许host端直接通过串口输入shell命令 |
| ADB | Android Debug Bridge,允许host端主机连接到DUT,执行shell命令进行调试,XTS执行测试需要确保host端跟DUT的ADB是连接上的 |
对于Android版本,有两种表示方法:数字或者字母,不同的表示方法指向同一版本,本文档中提到的版本代号说明如下:
| 数字版本 | 字母版本 |
|---|---|
| Android 10 | Android P |
| Android 11 | Android R |
| Android 12 | Android S |
| Android 13 | Android T |
| Android 14 | Android U |
| Android 15 | Android V |
| Android 16 | Android B |
另外,文档中可能用"AN"作为"Android"的缩写。
Downloads
Google认证使用的是release版本的tool,下载链接如下:
当前通过验证需要使用的tool版本可以参考链接: XTS Tool Announcements
有时候测试套件本身会有BUG,导致一些测试无法通过,此时可以下载dev版本的tool来验证,dev版本XTS下载链接如下:
- 下载GSI Image时,在ci.android.com的页面,需要选择gsi_tv_arm这个type下的链接
- 下载TVTS时,type选择tvts_arm
- TVTS不区分Android版本
- GTS的type选择test_suite_arm64
简单教学
- 测试命令
-
跑测前提:假设DUT各设定都已ok,设备adb也都连着
-
以CTS为例,
- CTS/VTS/CTSGSI/GTS类似,其中CTSGSI用的是CTS tool
- cd android-cts/tools
- ./cts-tradefed,运行会进入cts console:cts-tf >
-
可以查阅相关命令:help all,更多命令参考:https://source.android.com/docs/compatibility/cts/command-console-v2?hl=en
-
单测module输入命令:run cts -s board_ip:5555 or usb device -m “module name” -t “testcase name”
-
fulltest(5片板子or..)命令:run cts -s board1_ip:5555 -s board2_ip:5555 -s board3_ip:5555 -s board4_ip:5555 -s board5_ip:5555 --shard-count 5
-
单测某个module/test or多个,可以连续加--include-filter迭代:--include-filter "module_name testname" --include-filter "module_name testname" ....
-
排除某个module/test or多个,可以连续加--exclude-filter迭代:--exclude-filter "module_name testname" --exclude-filter "module_name testname" ....
-
retry命令:
- l r,可以看到session id/pass/fail等相关信息

图上的BuildID和Product显示unknown:由于测试的时候加了--skip-device-info (单测加上这个可以适当提速)
- 1片run retry -s board1_ip:5555 --retry session_id
- 5片run retry -s board1_ip:5555 -s board2_ip:5555 -s board3_ip:5555 -s board4_ip:5555 -s board5_ip:5555 --shard-count 5 --retry session_id
- XTS retry命令:run retry,现阶段都是这个命令开始,包括CTS/VTS/GTS/CTSGSI/STS/TVTS
-
ex:一个failure module case:
- -m CtsHdmiCecHostTestCases //单测一个module
- -m CtsHdmiCecHostTestCases -t android.hdmicec.cts.tv.HdmiCecTvOneTouchPlayTest#cect_11_1_1_1_RespondToImageViewOn //单测一个testcase
- 下面是一个module,有三个fail,每个fail项的testcase,都可以用“-m -t”单测

-
-
CTS-on-GSI
- 烧录GSI system.img
- 和cts共用一套tool
- fulltest命令:run cts-on-gsi
- retry命令:run retry
- 其他命令参数参考CTS
-
TVTS要留意device发布版本带来的区别:
- devices发布IR版本:run tvts-full-cert
- devices发布MR版本:run tvts-maint-cert
- retry命令:run retry
- 其他命令参数参考CTS
-
GTS:
- fulltest命令:run gts
- retry命令:run retry
- 其他命令参数参考CTS
-
VTS:
- 烧录GSI system.img + vendor_boot-debug.img or boot-debug.img
- fulltest命令:run vts
- retry命令:run retry
- 其他命令参数参考CTS
-
STS:
- fulltest命令:run sts-dynamic-full
- retry命令:run retry
- 其他命令参数参考CTS
-
tradefed命令
命令 作用 l r 查看结果 l i 查看目前跑测中的invocations l d 查看连接中的DUT信息,只有available的DUT才能开始跑测 i n stop 发出将n号invocation停止的请求,会等待当前测试进程停止,测试卡死但是想出报告的时候可以使用
-