1 adb版本过低导致大量错误
有时不管如何修改环境变量,都无法按照要求使用指定版本的adb工具,这可能是因为在bin路径下安装了adb,输入“which adb”可以看到当前使用的adb工具的路径,可以直接将bin下的adb替换为指定版本。
2 --shards 3
多台机器同时测试,3可以改为机器的数量
3 --skip-preconditions
跳过预置条件检测,如果遇到类似这样的错误:
02-27 08:57:09 E/ModuleDef: TargetSetupError in preparer: com.android.compatibility.common.tradefed.targetprep.MediaPreparer
02-27 08:57:09 E/ModuleDef: Precondition class com.android.compatibility.common.tradefed.targetprep.MediaPreparer failed
02-27 08:57:09 E/TestInvocation: Unexpected exception when running invocation: java.lang.RuntimeException: Failed preconditions on 7982d228
02-27 08:57:09 E/TestInvocation: Failed preconditions on 7982d228
java.lang.RuntimeException: Failed preconditions on 7982d228
at com.android.compatibility.common.tradefed.testtype.CompatibilityTest.run(CompatibilityTest.java:423)
at com.android.tradefed.invoker.TestInvocation.runTests(TestInvocation.java:796)
at com.android.tradefed.invoker.TestInvocation.prepareAndRun(TestInvocation.java:471)
at com.android.tradefed.invoker.TestInvocation.performInvocation(TestInvocation.java:322)
at com.android.tradefed.invoker.TestInvocation.invoke(TestInvocation.java:984)
at com.android.tradefed.command.CommandScheduler$InvocationThread.run(CommandScheduler.java:558)
02-27 08:57:09 W/ResultReporter: Invocation failed: java.lang.RuntimeException: Failed preconditions on 7982d228
多半是cts-media测试文件有问题,我试过将自己下载的文件放到tmp\路径下,还是遇到了这样的错误,如果通过跳过预置条件检测可以继续测试,那么还是让cts自己下载cts-media测试文件包吧。
4 --exclude-filter CtsBackupTestCases
测试中如果发现某个模块如“CtsBackupTestCases”错误较多,或者超时较多,可以跳过这个模块
5 https://source.android.google.cn/compatibility/
这个网站目前国内可以访问。
6 将失败项或未通过项打包成一个子任务
add subplan --name test3 --result-type not_executed --session 1
查看session的命令是“l r”。
注意名字不要用test,cts等。result-type的关键字是唯一的,通过查看help add来确认。
执行测试的时候直接“run test3”
7 查询是否支持64位系统
在device路径下找到工程对应的project.mk文件。
搜索 MTK_K64_SUPPORT,来确认是否64位系统。
搜索MTK_AB_OTA_UPDATER,如果没有,那就不是AB版本。
这个在测试vts确认需要刷的gis包需要。
8 vts测试环境
sudo apt-get install python-dev
sudo apt-get install python-protobuf
sudo apt-get install protobuf-compiler
sudo apt-get install python-virtualenv
sudo apt-get install python-pip
在能测cts的基础上,还需要安装这些应用。并且确保adb版本最新。
9 vts刷入gis包
1 在user版本,最好是过cts的那个版本,打开开发者选项,开启调试模式和OEM解锁。
2 重启进入fastboot模式。
3 在fastboot操作OEM解锁,根据提示操作。
4 fastboot flash system system.img (找到对应的img:是64位或32位系统、支持AB或A、安全补丁时间需要一致)
5 fastboot reboot
6 如果开机后发现无法正常启动,或者存储空间大小与正常版本不一致,可以双清或恢复出厂设置解决。
10 vts8.1中adb充电模式连接不上问题
这个问题linux环境的问题,android-8.1机器仅充电时adb调试会提示权限不够,只能切换到MTP模式,但vts测试的时候会反复重启,测试会被中断,解决方法如下:
一,查找usb设备
手机开机后连接电脑,设备USB连接选项为仅充电(不同的连接选项可能取到的设备ID是不一样的,注意选择正确)
执行命令: lsusb , 找到自己的usb设备,如: Bus 001 Device 014:ID 2207 : 0006
其中 2207就是设备的 idVendor, 0006是 idProduct。
二,添加配置文件
执行命令: sudo vi /etc/udev/rules.d/51-Android.rules , 创建51-android.rules配置文件。
输入下面的内容:
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0006", MODE="0600", OWNER="XXXXX"
OWNER="XXXXX"中的XXXXX是登录linux的用户名
保存退出后,将51-android.rules的权限设置为666
三,添加配置文件
行命令, vi ~/.android/adb_usb.ini 创建 adb_usb.ini,把刚才找到的设备的idVendor添加进去,如下:
0x2207
完成上面三步后,重启adb或者重启电脑,就可以在仅充电下正常连接adb了。
11 Ubuntu版本
VTS在Ubuntu1.6或者1.8上都可以测试,而且环境比较容易安装,1.4版本上很多环境的版本太低了。
12 imei
测试时的imei必须是合法的,所谓的合法是指数据正确,可以随便写个imei,但是不要输入最后一位,让写号工具自己算出来,这样一般情况下都是合法的。写号工具可以用sn工具。
13 补测
可以retry,这样最终只有一个测试报告,整理起来也方便,log也只有一份,注意不同测试命令可能不一样,比如gts就是run retry --retry session,cts,vts或者cts-on-gsi就是run cts --retry session
14 cts-v的USB Accessory Test
USB Accessory Test并不要求被测机器支持OTG,只要辅助测试的机器支持OTG功能并且已经通过了google认证测试就可以了。
15 fastboot -w
烧写google system之前可以通过fastboot进行wipe操作,指令是fastboot -w,这样可以确保烧写后正常开机。烧写完成一定要确认一下存储空间的大小是否正常,如果变得很小,恢复一下出厂设置就可以了。
16 sim卡
cts测试要求sim卡能显示本机号码。
17 型号
申请google key的时候,需要一个测试报告,这份报告会包含device info,这些信息一定要与客户核对清楚,如果其中一项进行了修改,都可能导致写入的google授权失效。型号尽量不要有空格,处理起来会麻烦。
18 TEE
google key要求存储在TEE里,无论是否支持指纹都应该支持TEE,申请到的google key是原始文件,需要使用工具转换,可以要求TEE的供应商来转换。
19 测试项申请豁免
需要申请豁免的项目最好找到google发布的bug id,这样实验室比较容易操作。一些看起来需要申请豁免的问题,可能更新了gms包或测试环境后就可以测试通过了。
20 外置存储卡,sd卡
sd卡或T卡,要求是质量较好的高速T卡,至少是class110的,容量8-16G