Android之GMS自我总结

离职一段时间了,一直想写这篇博客,但是没有时间,最近有空,正好总结一下在上家公司一个开发做着一部分测试工作内容,当时也是没办法Google查得越来越严,公司岗位分工还将GMS认证划分为一个岗位,开发自己的项目只能自己跑GMS认证,因此我又多掌握一项技能嘿嘿 ,虽然没什么用:(。

GMS操作文档

1、GMS 本来只有三种测试 CTS、GTS、CTS-Verifier
2、但是在Android O版本之后,Google新加了两种测试VTS、GSI。
3、据说最近Google又增加了一项测试STS(Google还真是搞人啊哈哈),CVE安全测试,看了内部文档,据说10月1日,所有项目送测STS报告是必须的了。
4、以上除了CTS-Verifier是手动测试之外,其他的都是自动化执行工具脚本测试。

GMS测试工具

根据项目送测时间选择一个适合工具版本,这个一般SPM会给到测试。规定用什么版本工具

  • CTS-Verifier

这个测试可以看mtk online视频,没有的可以根据手机上APK英文流程自己解读操作,对于新手来说最繁琐麻烦的就是这个,多做几个项目熟练熟练,这样测试的周期会大大缩短。

https://onlinesso.mediatek.com/_layouts/15/mol/topic/ext/TopicHome.aspx

账号:...
密码:虽然离职,但也不能透露哈哈


快速入门.png

搜索CTS快速入门,有waiver(豁免)项,以及Verifier视频等等。

CTS、GTS、VTS、GSI这四个测试大同小异,只不过VTS、GSI测试,手机需要刷system。

  • CTS

(各种测试包括(需要IPV6)网络、camera、蓝牙、wifi 、sensor等等等等) (这个单台手机测试一般比较久两三天,建议三台机器一起跑,其中高通(64位和32位)和MTK的还不一样,高通测试项是MTK的2倍)

手机端环境:

1、设置手机好环境,官方文档有,不再赘述。
2、写好IMEI号、MAC(连WIFI)地址号、Google key
3、(Ubuntu系统)电脑连接手机拷贝media和image文件,进入到改目录命令行模式。

执行红框两个脚本,“-s 设备序列号”表示拷贝到指定的手机设备上,很多命令都可以利用-s 来指定手机设备,例如:”adb -s 设备序列号 install a.apk”为指定设备来安装a这个apk应用,之后的运行cts命令也可以看到-s这个命令,来指定某台设备跑这个命令。(当然电脑上面只连接一台设备也就没必要用-s来指定设备)
./copy_images.sh -s 设备序列号(adb devices可查询)
./copy_media.sh all -s 设备序列号(adb devices可查询)


拷贝文件命令.png

低存储设备,自己在手机新建文件夹,然后复制部分分辨率的,然后下次retry再复制之前没有的。

手机端准备完成就在Ubuntu电脑终端进入指定的cts工具的tools目录


CTS目录.png

进入到对应的tools目录的终端大致是这样的,然后运行脚本./cts-tradefed


执行cts脚本.png

在这个目录下运行完脚本就正式完成了跑cts所有准备工作,之后就是运行cts命令了

  • 运行cts命令:

run cts --plan CTS 运行cts
run cts --plan CTS --shards 3 三台手机同时跑增加速度
run cts --plan CTS --shards 3 -s 设备序列号1 -s 设备序列号2 -s 设备序列号3
有时候一台电脑上有很多机器又要同时跑三台,就用上面这条命令,三台同时跑,并且利用 -s 指定三台需要跑的三台机器。
不知道设备序列号可以在已经运行cts脚本下的终端插拔USB线来查看自己想要的设备序列号

如下图就是指定 123456654321这个序列号的设备跑CTS


cts运行命令.png

一般执行这种非Verifier的GMS认证,跑完一遍会有很多fail以及很多没有执行完的模块,这时候就需要在之前报告基础上retry,每次跑完CTS、GTS等等都会生成报告(中途不中断,可以通过拔掉手机中断生成报告,中断脚本是不能生成报告的,即使你只有一项了)。

这时候cts目录就变成这样的results和logs就是对应的结果以及log。


结果目录.png

这时候报告名称就是对应的测试执行开始的时间。(一个压缩包和文件夹)


结果目录.png

如下图通过 l r (list results的缩写)命令可以查看报告的信息,有对应的报告信息.


lr运行结果.png

★ l r信息解读:

图中有(0-6)7个报告,每一行就是一个报告信息,不断增大sessionid就是在每个之前报告基础上retry的

红框表示pass项、fail项以及执行模块数和总共模块数

弄清楚了这些报告信息,这时候就需要retry命令,(retry之前最好恢复出厂设置,重新设置手机端环境)

run cts --retry session_id(如上图通过l r查询对应要retry的报告session id) -s 设备序列号

多retry几次之后发现fail项并没有减少,说明这就是软件问题,有可能有时候手机的外界环境也会影响(如室内亮度、IPV6网络、GPS信号等等)一些test项fail。

之前mtk online cts快速入门上也提过waiver项,意思是跑完之后有些fail项是不用管了,google提供豁免id,交给SPM把waiverid代理就OK了

  • GTS

(主要和网络有关,一般网好一个下午就OK,不好,一项要执行很久,还不pass,这是最悲催的)

GTS与CTS基本一样把执行脚本的命令改成./gts-tradefed
GTS不需要IMEI和拷贝media和image这一步,主要和网络有关
以及运行的命令run cts改成run gts就行了
有时候会遇到特殊情况


报错.png

如上图,就需要在命令后面加上红框内容,来忽略一些条件

  • GSI (与CTS差不多,运行比较久,所以也建议3台机器跑)

I.VTS和GSI与CTS和GTS除了使用的工具不同之外,就是需要刷system.img


压缩包.png

上图对应32位机器和64位机器的包。

解压.png

解压完成之后里面大概就是对应日期的system.img。这里只会用到一个,
具体刷哪一个就需要通过about_phone 查看对应google patch日期。
注意:在刷system之前需要把IMEI、MAC、Google key都写上,刷完之后就不能写了。

II.打开对应目录的终端,打开手机开发者模式下的Unlock OEM,然后连接手机执行下面命令,这个可能要问人操作

adb reboot bootloader  (adb命令重启进入bootloader,刷system要进入)
fastboot flashing unlock   
fastboot oem unlock    (执行完这一条命令,手机屏幕会有选项,按Volum +)
fastboot flash system system-aosp_arm_a-2018-04-05.img(这个就是该目录对应的文件,看googlepatch刷几月几号的)
fastboot reboot  (fastboot模式下手机重启)

重启完之后就是一个已经刷完system手机,和原生一样,会发现少了很多第三方的app,按照CTS配置运行命令。

GSI和VTS都是统一脚本下,所以是 ./vts-tradefed
命令把 cts改成cts-on-gsi就行了
有时候运行没成功会报preconditions错误,意思是一些先决条件检查不正确
这时候如GTS 的ingore错误在命令后面加上--skip-preconditions就能运行起来了。
(同时跑几台机器、retry等等和cts一样不在赘述)

  • VTS(一般3个小时就Ok了,比较快)

./vts-tradefed执行脚本,命令cts改成vts

以上像--shards、--retry、-s等命令都是共用的,不分工具,分工具的就是有cts、vts、gts、cts-on-gsi,这四个字符串了。

拓展

1、有时候SW更新软件需要验证某一个单项是否OK,以cts为例,通过result看报告


报告test项.png
run cts -m CtsLegacyTest26ApiSignatureTestCases -t android.signature.cts.api.SignatureTest#testSignature

上面命令就是运行cts单项 : run cts -m 模块 -t test项

2、run cts --help 查看某个命令意义,这里只截取一部分,


--help.png

3、下面这个命令就是要retry(retry的意思是只想这个报告里面的fail项)某个报告,然后跳过某个模块的命令

run cts --retry session_id(需要retry的某个报告) --exclude-filter 模块

4、有时候需要在别的电脑上retry已经有的报告

这时候就需要把报告拷贝的results目录下,然后再运行脚本之后的终端上

l r 查看你拷贝到results目录下(刚解压的工具一般没有,自己新建results目录拷贝进去)的报告,执行retry命令

5、当跑起来时候,最好是看到有pass,然后在运行脚本的终端下用 l d(list devices缩写)查看该脚本中运行的设备,最后应该就可以溜了:D。

其他

1、据说工具包cts 8.1-r6(包括8.1-r6)之后的运行cts 命令变了,没试过

run cts-suite --shard-count 3

Cts变成cts-suite , --shards 变成--shard-count

2、工具GTS 6.0-r1(包括)的retry命令也变了

run retry --retry session_id(l r可以查询已经完成跑完结果的报告)

原retry命令:run gts --retry session_id

总结

四个脚本工具测试中,

1、所有手机端设置大致都是一样的
2、CTS、GSi要拷贝media、image文件到手机中
3、GSI和VTS是用同一个工具,并且都要刷对应google patch日期的system
4、CTS和GSi时间比较久,三台一起跑的话大概一天完成、GTS、VTS比较短。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • 一,环境准备工作 1, jdk环境 a,cts上:在android n之前需要jdk 1.7环境即可,在andro...
    Winterfell_Z阅读 885评论 0 0
  • GMS认证包括三个部分:CTS、GTS、CTS Verifier;Android8.0以后,增加了两个新的测试,分...
    Darkt阅读 8,522评论 5 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,600评论 18 139
  • 这篇文章我列了一下常用的CTS命令: 1.查看帮忙信息 help 2.退出终端 exit: 3.进行plan为te...
    android之子阅读 6,973评论 0 1
  • 丙申年冬月十六 夜 独自坐在空旷的办公室,机械式的敲打着键盘上每一个字母,对应着文件上冰冷的数字就这么坐...
    先生姓晓阅读 338评论 0 0