一、简介
VTS 全称是 Vendor Test Suite,官方的简介如下:
Project Treble aims to do what CTS did for apps, for the Android OS framework. The core concept is to separate the vendor implementation — the device-specific, lower-level software written in large part by the silicon manufacturers — from the Android OS Framework.
This is achieved by the introduction of a new vendor interface between the Android OS framework and the vendor implementation. The new vendor interface is validated by a Vendor Test Suite (VTS), analogous to the CTS, to ensure forward compatibility of the vendor implementation.
大概意思是 Project Treble 中引入 Vendor Interface 的目的是将 Android Framework 与 HAL 分开,并通过 VTS 测试来对这些 Vendor Interface 进行测试以确保 HAL 的向前兼容。
VTS 类似 CTS,通过对 Vendor Interface 进行测试,确保同一个版本的 Android Framework 可以运行在不同 HAL 上,或不同 Android Framework 可以运行在 同一个 HAL 上。
通过这样的 Framework / HAL 分离设计和接口一致性保证,也使得 8.0 版本之后的 Android 系统在进行升级时,可以直接对 Framework 进行升级而不用考虑 HAL 层的改动,从而缩短了用户手上设备得到系统升级 OTA 推送的时间。
结构如下图:
采用新架构之后的 Android 系统升级过程则是直接对 Framework 进行替换,如下图:
二、测试环境搭建和测试步骤
需要的东西与组件:
1.64-bit Ubuntu Linux
2. Java 8
3.Python 2.7
4.ADB 1.0.39
具体的搭建步骤:
1) 安装 Python 开发包
$ sudo apt-get install python-dev
2) 安装 Protocol Buffer 工具
$ sudo apt-get install python-protobuf
$ sudo apt-get install protobuf-compiler
3) 安装 Python 虚拟环境相关工具
$ sudo apt-get install python-virtualenv
$ sudo apt-get install python-pip
4) 在设备上启用开发者模式并打开 USB 调试功能
5) 检查设备是否能被 ADB 探测到
$ adb devices
6) 使用 ADB 登录设备
$ adb shell
如果以上步骤你都执行成功了,那么 VTS 测试环境就搭建好了。
然后我们还需要先编译 VTS 测试工具。在 Android 源码根目录下执行以下命令可以生成测试工具:
$ source build/envsetup.sh
$ lunch <productName>
$ make vts -j20
其中 < product > 的值需要根据你想要进行测试的产品来给定。
编译完成后,我们可以在out/host/linux-x86/vts/android-vts.zip
目录下找到 VTS 测试包,解压之后,进入android-vts/tools/
目录,执行以下命令即可进行默认的全局 VTS 测试:
$ vts-tradefed
> run vts
也可以只对某个模块进行测试:
$ vts-tradefed
> run vts -m VtsHalAudioV2_0Target
还可以只对某个模块中的某一项用例进行测试:
$ vts-tradefed
> run vts -m VtsHalAudioV2_0Target -t RecommendedOutputStreamConfigSupport
剩下的就是耐心等待。测试完成后我们可以在android-vts/results/
目录下找到测试报告,可以在android-vts/logs/
目录下看到测试日志。