Skip to main content

AndroidTV XTS

名词定义

本文档及子文档中,将涉及以下名词术语:

名词定义
XTS包含CTS/CTS-on-GSI/VTS/GTS/TVTS/STS,这里用于Google Android认证的一系列测试工具的总称
CTSCompatibility Test Suite,测试设备对Android的兼容性
CTS-on-GSI将system分区替换为GSI以后运行的CTS,使用跟CTS同样的测试套件
GSIGeneral System Image,Google提供的通用系统映像
STSSecurity Test Suite,测试设备的安全特性,包括权限管理、数据加密、网络安全等方面
VTSVendor Test Suite,测试Android 设备的核心硬件抽象层 HAL、库 Libraries 和底层软件系统(比如 Kernel、Fireware 等)的健壮性、兼容性和依赖性
GTSGMS/GTVS Test Suite,测试GMS/GTVS能否正常工作的测试工具
GTVS谷歌一系列服务组件,TV上是GTVS,手机是GMS
TVTSTV Test Suite,测试Android TV的功能和性能,如Netflix/Youtube/LauncherX等app的冷热启动及相互切换、Youtube/media的播放、Memory的压力测试等
DUTDevice Under Test,被测试的设备,本文中一般指一台Android TV设备
userdebug imageuserdebug版本的image,可以root,可以用su权限进行操作
user imageuser版本的image,无法root,不可以用su权限进行操作
Monitor和TV平台会有些许差异,比如没有Tunner等,外销出口的话也需要通过CTS认证
bootcode引导程序,XTS测试,有需要在bootcode下面设定参数
串口Android TV硬件上开放出来的调试接口,通过串口连接到host端主机,允许host端直接通过串口输入shell命令
ADBAndroid Debug Bridge,允许host端主机连接到DUT,执行shell命令进行调试,XTS执行测试需要确保host端跟DUT的ADB是连接上的

对于Android版本,有两种表示方法:数字或者字母,不同的表示方法指向同一版本,本文档中提到的版本代号说明如下:

数字版本字母版本
Android 10Android P
Android 11Android R
Android 12Android S
Android 13Android T
Android 14Android U
Android 15Android V
Android 16Android B

另外,文档中可能用"AN"作为"Android"的缩写。

Downloads

Google认证使用的是release版本的tool,下载链接如下:

Tool/GSI下载链接
CTSFor R:https://ci.android.com/builds/branches/aosp-android11-tests-release/grid?legacy=1
S/T/U:https://source.android.com/docs/compatibility/cts/downloads
GTShttps://docs.partner.android.com/gms/testing/gts?authuser=1&hl=en
VTShttps://docs.partner.android.com/gms/testing/vts?authuser=1&hl=en
TVTShttps://docs.partner.android.com/tv/test/tvts/release-notes?authuser=1&hl=zh-tw
STShttps://docs.partner.android.com/security/test-suite/latest-sts-binary
https://drive.google.com/drive/folders/1so3747UNlBIB-rwVb2VRPO8-ytpBo3f7?usp=drive_link
GSIhttps://docs.partner.android.com/tv/test/android/gsi?authuser=3

当前通过验证需要使用的tool版本可以参考链接: XTS Tool Announcements

有时候测试套件本身会有BUG,导致一些测试无法通过,此时可以下载dev版本的tool来验证,dev版本XTS下载链接如下:

Tool/GSI下载链接
CTS/VTSR: https://ci.android.com/builds/branches/aosp-android11-tests-dev/grid?
S: https://ci.android.com/builds/branches/aosp-android12-tests-dev/grid?
U: https://ci.android.com/builds/branches/aosp-android14-tests-dev/grid?
GSIR: https://ci.android.com/builds/branches/git_rvc-tv-gsi-release/grid
S: https://ci.android.com/builds/branches/git_sc-tv-gsi-release/grid
U: https://ci.android.com/builds/branches/git_udc-tv-gsi-release/grid
GTSAN10~13: https://ci.android.com/builds/branches/git_tm-gts-release/grid?
AN14+: https://ci.android.com/builds/branches/git_udc-gts-release/grid?legacy=1
TVTShttps://ci.android.com/builds/branches/git_main-throttled-tv/grid?legacy=1
注意
  • 下载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停止的请求,会等待当前测试进程停止,测试卡死但是想出报告的时候可以使用

Android14

Android16