最近在完成android8.1版本cts测试时遇到的问题

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

 

21 关于sts测试

sts测试需要用userdebug测试,而实验室对报告的要求是所有报告的fingerprint必须相同,那么就意味着user版本和userdubug的fingerprint必须相同,有点矛盾,那么只能修改project.mk,将fingerprint写死。

 

22 Files Go的移植

google在推广Files Go,所有项目都必须用这个做文件管理应用。集成Files Go之后会出现一个问题:打开图片或视频的时候,会弹出选项,没法默认用google照片打开,这看起来不能满足google的要求。但是要默认用照片打开图片或视频,改动起来还蛮大。咨询了一下实验室,得到的回复是:“这两个都是google的应用,问题不大,google主要是对第三方应用有限制。”

你可能感兴趣的:(测试)