【前言】
Google Android Compatibility Test包含有 CTS、VTS、GTS、STS等(统称为XTS),另外还有TVTS及Smoke Test等等。通常开发人员要参与SOC适配的前期开发、SQA阶段(包括XTS的主观)及XTS客观测试等,这些阶段也是可以并行的。
【atest简介】Android AOSP Code里已经包含有CTS和VTS,为atest的使用奠定基础(GTS/STS不适用),module developer在commit方案之前,可以在本地用atest跑下对应CTS/VTS的module/class/method是否pass,不用等到SQA阶段CTS/VTS fulltest去扫是否有fail,缩短bug上报-debug-解决-验证-关闭等SQA测试周期,方便module developer自己跟进check问题,Atest | Android 开源项目 | Android Open Source Project
本地AOSP code环境里,source build/envsetup.sh; lunch 之后,adb connect device,即可准备运行atest测试:
- atest -s “device_ip:5555" moduleName
- atest -s “device_ip:5555" className
- atest -s “device_ip:5555" className#methodName
更多使用方法参考如上链接。通常第一次运行测试的话需要时间较长,要编译出atest相关tool及testcase apk等,后面在跑的话就比较快了。
【atest使用】
基于CTS/VTS Compatibility Test,还是很方便的。参考:https://source.android.google.cn/compatibility/tests/development/atest?authuser=0&hl
通常使用atest -s "device_ip:5555" “test-to-run”就可以跑起来,也还有其他更多选项参考:
选项 | 长选项 | 说明 |
---|---|---|
-b | --build | 构建测试目标。(默认) |
-i | --install | 在设备上安装测试工件 (APK)。(默认) |
-t | --test | 运行测试。(默认) |
-s | --serial | 在指定设备上运行测试。 一次可以测试一台设备。 |
-d | --disable-teardown | 停用测试拆解和清理。 |
--info | 显示指定目标的相关信息并退出。 | |
--dry-run | 模拟运行 Atest,不实际构建、安装和运行测试 | |
-m | --rebuild-module-info | 强制重新构建 module-info.json 文件。 |
-w | --wait-for-debugger | 在执行之前等待调试程序。 仅用于插桩测试。 |
-v | --verbose | 显示 DEBUG 级别日志记录。 |
--iterations | 循环运行测试,直至达到最大迭代次数。(默认情况下为 10 次) | |
--rerun-until-failure [COUNT=10] | 重新运行所有测试,直至出现失败的情况或达到最大迭代次数。 (默认情况下为 10 次) | |
--retry-any-failure [COUNT=10] | 重新运行失败的测试,直至测试通过或达到最大迭代次数。(默认情况下为 10 次) | |
--start-avd | 自动创建 AVD 并在该虚拟设备上运行测试。 | |
--acloud-create | 使用 acloud command. 创建 AVD | |
--[CUSTOM_ARGS] | 为测试运行程序指定自定义参数。 | |
-a | --all-abi | 针对所有可用的设备架构运行测试。 |
--host | 在没有设备的情况下完全在主机上运行测试。 (注意:使用 --host 运行需要设备的主机测试将失败。) | |
--flakes-info | 显示包含不稳定信息的测试结果。 | |
--history | 按时间顺序显示测试结果。 | |
--latest-result | 输出最新测试结果。 |
1、您可以使用 -b
、-i
和 -t
选项指定要运行的步骤。如果未指定选项,则运行所有步骤。
注意:您可以单独运行 -b
和 -t
,但 -i
需要 -t
才能运行。
- 仅构建目标:
atest -b test-to-run
- 仅运行测试:
atest -t test-to-run
- 安装 APK 并运行测试:
atest -it test-to-run
- 构建并运行,但不安装:
atest -bt test-to-run
Atest 可以强制测试跳过清理/拆解步骤。许多测试(例如 CTS)会在运行完测试后清理设备,因此如果没有 --disable-teardown
参数,尝试使用 -t
重新运行测试将失败。请在使用 -t
之前先使用 -d
跳过测试清理步骤以便进行循环测试。
atest -d test-to-run
atest -t test-to-run
注意:-t
既不执行设备设置/安装操作,也不执行设备拆解/清理操作,因此您可以使用 atest -t test-to-run
重新运行测试任意次数。
2、以迭代方式运行测试
如需以迭代方式运行测试,只需传递 --iterations
参数。无论测试通过还是失败,在达到最大迭代次数之前,Atest 都不会停止测试。
默认情况下,Atest 会迭代 10 次,提供一个整数可以更改迭代的次数。
atest test-to-run --iterations
atest test-to-run --iterations 5
【atest的优缺点】
- 优点:使用简单,基于本地code,容易debug,不用去配置测试环境和下载CTS/VTS tool。
- 缺点:基于AOSP code,通常soc拿到的是初版aosp的code,后续更新的话,CTS/VTS这部分可能很少更新到,所以CTS/VTS就会比较旧。Google 发布的Compatibility Test Tool都是基于最新的代码编译的,所以atest会落后Google发布的CTS/VTS release tool(有些问题是Tool的issue,就需要用最新的Tool来测)。GTS/STS不能使用atest,因为没有sourcecode。