一,環(huán)境準(zhǔn)備工作
1事期, jdk環(huán)境
a滥壕,cts上:在android n之前需要jdk 1.7環(huán)境即可,在android n上需要使用jdk 1.8
b兽泣,在gts4.1-r1之后都需要使用jdk 1.8的環(huán)境
可以使用導(dǎo)入臨時(shí)環(huán)境變量的方法將當(dāng)前窗口的jdk環(huán)境配置成jdk 1.8绎橘,使用如下命令即可:
export JAVA_HOME=(此處填寫jdk所在路徑例如:/usr/lib/jvm/jdk1.8.0_121)
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH=JAVA_HOME/bin:PATH
2,cts,gts 工具包
從google官網(wǎng)上獲取當(dāng)前最新的cts以及gts工具包
https://source.android.com/compatibility/cts/downloads
[圖片上傳失敗...(image-be2f95-1530601444956)]
如上圖所示称鳞,先選擇android 版本號(hào)涮较,在進(jìn)行下載最新的工具,正常我們都下載ARM的工具包
由于google的cts工具有截止時(shí)間冈止,故需要經(jīng)常上該網(wǎng)站查看最新的版本狂票,在該網(wǎng)站下載的工具都是最新的
3,media 包
跑cts的時(shí)候熙暴,需要在手機(jī)中導(dǎo)入media的包以支持跑media相關(guān)的case闺属,該media資源包也在https://source.android.com/compatibility/cts/downloads 進(jìn)行下載,下載解壓后只要運(yùn)行其中的copy_media.sh腳本即可自動(dòng)拷貝進(jìn)手機(jī)了(需要賦予該腳本執(zhí)行權(quán)限之后才可以執(zhí)行)周霉,若需要拷貝至多個(gè)手機(jī)在一臺(tái)電腦上掂器,只需要在腳本后面加all例如:
./copy_media.sh all
這樣就可以將media包分別拷貝到當(dāng)前連接的所有手機(jī)中
4,手機(jī)設(shè)置
基本電腦環(huán)境配置好之后俱箱,需要進(jìn)行手機(jī)上的配置唉匾,具體詳細(xì)的可以查詢?nèi)缦戮W(wǎng)站:
https://source.android.com/compatibility/cts/setup
也可以進(jìn)行查看附件的文檔 [圖片上傳失敗...(image-5b0c2e-1530601444956)] ,建議去網(wǎng)站上查看匠楚,因?yàn)榫W(wǎng)站上比較準(zhǔn)確,而且實(shí)時(shí)更新
二 執(zhí)行CTS/GTS的一些命令
1厂财,整跑
整跑cts的命令非常簡(jiǎn)單如下:
run cts
當(dāng)前只有一臺(tái)手機(jī)的時(shí)候直接使用該命令即可芋簿,若多臺(tái)手機(jī)直接使用
run cts -s devicename (devicename 為使用adb devices 后查看到的devices name)
若使用多臺(tái)手機(jī)跑cts 則需要使用shards 進(jìn)行跑,如下:
run cts --shards n -s devicesname1 -s devicesname2 ....
shards 后面跟隨的參數(shù)為參與整跑的手機(jī)數(shù)量
2璃饱,retry 未完成的報(bào)告
使用l r查看需要retry的報(bào)告的session id 与斤,如下:
[圖片上傳失敗...(image-6adf8b-1530601444956)]
使用如下命令:
run cts --retry sessionid -s devicesname
其中需要注意:
1),retry的手機(jī)必須為之前報(bào)告的手機(jī)或者手機(jī)之一
2),跑的兩個(gè)版本必須一樣(fingerprint必須一致)
3,單跑的命令
例如報(bào)告如下:
[圖片上傳失敗...(image-1ecd47-1530601444956)]
我們跑該case的命令如下:
run gts -m GtsMediaTestCases -t com.google.android.media.gts.WidevineGenericOpsTests#testL1
若我們需要跑單包荚恶,則
run cts -m modoulesname即可撩穿,moudlesname 在報(bào)告的上可以查看
具體的詳細(xì)命令可以通過終端help命令查看,如下:
[圖片上傳失敗...(image-33bcb0-1530601444956)]
gts的命令和cts基本一致谒撼,只是需要將cts改成gts即可食寡,如下:
run gts -m modulesname
三,送測(cè)需求
1廓潜,asus android N的送測(cè)抵皱,需要如下文件:
1),CTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
2),GTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
3),CTS-V報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
4),AFW報(bào)告
5),check list報(bào)告(該checklist為asus特有的,滿足要求后可以大概率獲得google 的approve)
2辩蛋,聯(lián)想的送測(cè)和asus的不太一致呻畸。具體文件清單如下:
1),CTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
2),GTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
3),CTS-V報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
4),AFW報(bào)告
5),FRP (該需求為聯(lián)想特有,主要為開機(jī)向?qū)Ы貓D):
[圖片上傳失敗...(image-dcd3c0-1530601444956)]
6),手機(jī)prop屬性的文件
其中1-4的文件為google需求的文件悼院,后續(xù)為客戶特有的一些文件
3伤为,關(guān)于cts,gts報(bào)告送測(cè)規(guī)則:
由于android 升級(jí)到N之后据途,cts的case大大的增加了绞愚,在M上只有十幾萬(wàn)條case(6.0-r12上127000+條左右)叙甸,然而在N上有430000+條的case,導(dǎo)致整跑的難度也大大的增加了爽醋,導(dǎo)致目前送測(cè)規(guī)則也發(fā)生了變化:
M的送測(cè)規(guī)則:由于M的工具不支持retry的命令蚁署,故需要重新建立plan進(jìn)行retry
ps:M的整跑命令為run cts --plan CTS ,CTS代表整跑的plan蚂四,之后需要將上一次的fail項(xiàng)重新建立一個(gè)plan光戈,然后進(jìn)行跑該plan,且最多只能建立三個(gè)plan就不能建立了(由于超過三個(gè)plan會(huì)有大概率被google reject)遂赠。
N的送測(cè)規(guī)則:android N支持retry的命令久妆,故直接將最后一份retry 全pass的報(bào)告送測(cè)即可,由于asus需要確認(rèn)報(bào)告的可靠性跷睦,故他們需要完整的retry報(bào)告
四筷弦,關(guān)于本次ZQL1516 CTS送測(cè)的一些問題
1,CTS
本次cts送測(cè)過程十分曲折抑诸,原計(jì)劃2017/4/4需要將首輪全pass的報(bào)告給到asus烂琴,由于種種原因,導(dǎo)致最后5/15才將首輪報(bào)告送測(cè)出去蜕乡,下面詳細(xì)列舉本次cts報(bào)告的問題:
1),整跑卡住奸绷,并卡在asus卡機(jī)界面,cts卡在同一個(gè)包內(nèi)
該問題最終花費(fèi)十個(gè)工作日左右才解決层玲,最終判斷出根因是由于asus simcontact.apk以及在frameworks/base/中的修改導(dǎo)致無(wú)法繼續(xù)整跑
2),camera相關(guān)問題
由于camera的HAL1以及HAL3的切換問題号醉,導(dǎo)致camera的相關(guān)fail項(xiàng),最終我們將camera切換至HAL1辛块,同步關(guān)閉一批問題畔派,然后剩下幾個(gè)問題同步解決
3),media相關(guān)的問題
在最終MP版本軟件上,修改硬解碼相關(guān)配置文件润绵,導(dǎo)致cts media相關(guān)的fail
總結(jié):在重要版本發(fā)布的關(guān)鍵節(jié)點(diǎn)上线椰,我們對(duì)camera,media相關(guān)的修改尘盼,需要將camear以及media相關(guān)的包都跑一遍士嚎,以防止影響重要版本發(fā)布
2,GTS
本次送測(cè)過程中悔叽,GTS遇到的重大問題就是widevine相關(guān)的問題莱衩,由于導(dǎo)致secboot,widevine相關(guān)的文件需要進(jìn)行單獨(dú)簽名導(dǎo)致的相關(guān)fail
最終將對(duì)應(yīng)的文件進(jìn)行單獨(dú)簽名后娇澎,導(dǎo)入手機(jī)即可pass
3笨蚁,CTS-V
CTS-V的fail項(xiàng)主要和測(cè)試手法相關(guān),關(guān)于測(cè)試手法,我們需要詳細(xì)閱讀工具給的操作步驟括细,正常解決的cts-v的問題非常少伪很,只有一兩個(gè),大部分的問題都是由于測(cè)試手法造成的奋单,具體測(cè)試手法可以查看附件[圖片上傳失敗...(image-c3a3ac-1530601444956)]
4锉试,Checklist
由于之前和asus合作較少,導(dǎo)致我們一開始忽略了Checklist相關(guān)的內(nèi)容览濒,該項(xiàng)內(nèi)容主要是為了提升google approve 的概率而需要檢查的測(cè)試項(xiàng)呆盖,符合該checklist的東西之后能夠大概率的通過google approve,例如:
[圖片上傳失敗...(image-1c9b8f-1530601444954)]## 一,環(huán)境準(zhǔn)備工作
1贷笛, jdk環(huán)境
a应又,cts上:在android n之前需要jdk 1.7環(huán)境即可,在android n上需要使用jdk 1.8
b乏苦,在gts4.1-r1之后都需要使用jdk 1.8的環(huán)境
可以使用導(dǎo)入臨時(shí)環(huán)境變量的方法將當(dāng)前窗口的jdk環(huán)境配置成jdk 1.8株扛,使用如下命令即可:
export JAVA_HOME=(此處填寫jdk所在路徑例如:/usr/lib/jvm/jdk1.8.0_121)
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH=JAVA_HOME/bin:PATH
2,cts汇荐,gts 工具包
從google官網(wǎng)上獲取當(dāng)前最新的cts以及gts工具包
https://source.android.com/compatibility/cts/downloads
[圖片上傳失敗...(image-b08b5c-1530601446496)]
如上圖所示洞就,先選擇android 版本號(hào),在進(jìn)行下載最新的工具掀淘,正常我們都下載ARM的工具包
由于google的cts工具有截止時(shí)間奖磁,故需要經(jīng)常上該網(wǎng)站查看最新的版本,在該網(wǎng)站下載的工具都是最新的
3繁疤,media 包
跑cts的時(shí)候,需要在手機(jī)中導(dǎo)入media的包以支持跑media相關(guān)的case秕狰,該media資源包也在https://source.android.com/compatibility/cts/downloads 進(jìn)行下載稠腊,下載解壓后只要運(yùn)行其中的copy_media.sh腳本即可自動(dòng)拷貝進(jìn)手機(jī)了(需要賦予該腳本執(zhí)行權(quán)限之后才可以執(zhí)行),若需要拷貝至多個(gè)手機(jī)在一臺(tái)電腦上鸣哀,只需要在腳本后面加all例如:
./copy_media.sh all
這樣就可以將media包分別拷貝到當(dāng)前連接的所有手機(jī)中
4架忌,手機(jī)設(shè)置
基本電腦環(huán)境配置好之后,需要進(jìn)行手機(jī)上的配置我衬,具體詳細(xì)的可以查詢?nèi)缦戮W(wǎng)站:
https://source.android.com/compatibility/cts/setup
也可以進(jìn)行查看附件的文檔 [圖片上傳失敗...(image-b92e0f-1530601446496)] 叹放,建議去網(wǎng)站上查看,因?yàn)榫W(wǎng)站上比較準(zhǔn)確挠羔,而且實(shí)時(shí)更新
二 執(zhí)行CTS/GTS的一些命令
1井仰,整跑
整跑cts的命令非常簡(jiǎn)單如下:
run cts
當(dāng)前只有一臺(tái)手機(jī)的時(shí)候直接使用該命令即可,若多臺(tái)手機(jī)直接使用
run cts -s devicename (devicename 為使用adb devices 后查看到的devices name)
若使用多臺(tái)手機(jī)跑cts 則需要使用shards 進(jìn)行跑破加,如下:
run cts --shards n -s devicesname1 -s devicesname2 ....
shards 后面跟隨的參數(shù)為參與整跑的手機(jī)數(shù)量
2俱恶,retry 未完成的報(bào)告
使用l r查看需要retry的報(bào)告的session id ,如下:
[圖片上傳失敗...(image-57921e-1530601446495)]
使用如下命令:
run cts --retry sessionid -s devicesname
其中需要注意:
1),retry的手機(jī)必須為之前報(bào)告的手機(jī)或者手機(jī)之一
2),跑的兩個(gè)版本必須一樣(fingerprint必須一致)
3,單跑的命令
例如報(bào)告如下:
[圖片上傳失敗...(image-7cbe2e-1530601446495)]
我們跑該case的命令如下:
run gts -m GtsMediaTestCases -t com.google.android.media.gts.WidevineGenericOpsTests#testL1
若我們需要跑單包合是,則
run cts -m modoulesname即可了罪,moudlesname 在報(bào)告的上可以查看
具體的詳細(xì)命令可以通過終端help命令查看,如下:
[圖片上傳失敗...(image-6dd95f-1530601446495)]
gts的命令和cts基本一致聪全,只是需要將cts改成gts即可泊藕,如下:
run gts -m modulesname
三,送測(cè)需求
1难礼,asus android N的送測(cè)娃圆,需要如下文件:
1),CTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
2),GTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
3),CTS-V報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
4),AFW報(bào)告
5),check list報(bào)告(該checklist為asus特有的,滿足要求后可以大概率獲得google 的approve)
2鹤竭,聯(lián)想的送測(cè)和asus的不太一致踊餐。具體文件清單如下:
1),CTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
2),GTS報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
3),CTS-V報(bào)告以及waive link(若有fail項(xiàng)且wailve的情況)
4),AFW報(bào)告
5),FRP (該需求為聯(lián)想特有,主要為開機(jī)向?qū)Ы貓D):
[圖片上傳失敗...(image-60327c-1530601446495)]
6),手機(jī)prop屬性的文件
其中1-4的文件為google需求的文件臀稚,后續(xù)為客戶特有的一些文件
3吝岭,關(guān)于cts,gts報(bào)告送測(cè)規(guī)則:
由于android 升級(jí)到N之后吧寺,cts的case大大的增加了窜管,在M上只有十幾萬(wàn)條case(6.0-r12上127000+條左右),然而在N上有430000+條的case稚机,導(dǎo)致整跑的難度也大大的增加了幕帆,導(dǎo)致目前送測(cè)規(guī)則也發(fā)生了變化:
M的送測(cè)規(guī)則:由于M的工具不支持retry的命令,故需要重新建立plan進(jìn)行retry
ps:M的整跑命令為run cts --plan CTS 赖条,CTS代表整跑的plan失乾,之后需要將上一次的fail項(xiàng)重新建立一個(gè)plan,然后進(jìn)行跑該plan纬乍,且最多只能建立三個(gè)plan就不能建立了(由于超過三個(gè)plan會(huì)有大概率被google reject)碱茁。
N的送測(cè)規(guī)則:android N支持retry的命令,故直接將最后一份retry 全pass的報(bào)告送測(cè)即可仿贬,由于asus需要確認(rèn)報(bào)告的可靠性纽竣,故他們需要完整的retry報(bào)告
四,關(guān)于本次ZQL1516 CTS送測(cè)的一些問題
1茧泪,CTS
本次cts送測(cè)過程十分曲折蜓氨,原計(jì)劃2017/4/4需要將首輪全pass的報(bào)告給到asus,由于種種原因队伟,導(dǎo)致最后5/15才將首輪報(bào)告送測(cè)出去穴吹,下面詳細(xì)列舉本次cts報(bào)告的問題:
1),整跑卡住,并卡在asus卡機(jī)界面嗜侮,cts卡在同一個(gè)包內(nèi)
該問題最終花費(fèi)十個(gè)工作日左右才解決刀荒,最終判斷出根因是由于asus simcontact.apk以及在frameworks/base/中的修改導(dǎo)致無(wú)法繼續(xù)整跑
2),camera相關(guān)問題
由于camera的HAL1以及HAL3的切換問題代嗤,導(dǎo)致camera的相關(guān)fail項(xiàng),最終我們將camera切換至HAL1缠借,同步關(guān)閉一批問題干毅,然后剩下幾個(gè)問題同步解決
3),media相關(guān)的問題
在最終MP版本軟件上,修改硬解碼相關(guān)配置文件泼返,導(dǎo)致cts media相關(guān)的fail
總結(jié):在重要版本發(fā)布的關(guān)鍵節(jié)點(diǎn)上硝逢,我們對(duì)camera,media相關(guān)的修改绅喉,需要將camear以及media相關(guān)的包都跑一遍渠鸽,以防止影響重要版本發(fā)布
2,GTS
本次送測(cè)過程中柴罐,GTS遇到的重大問題就是widevine相關(guān)的問題徽缚,由于導(dǎo)致secboot,widevine相關(guān)的文件需要進(jìn)行單獨(dú)簽名導(dǎo)致的相關(guān)fail
最終將對(duì)應(yīng)的文件進(jìn)行單獨(dú)簽名后革屠,導(dǎo)入手機(jī)即可pass
3凿试,CTS-V
CTS-V的fail項(xiàng)主要和測(cè)試手法相關(guān),關(guān)于測(cè)試手法似芝,我們需要詳細(xì)閱讀工具給的操作步驟那婉,正常解決的cts-v的問題非常少,只有一兩個(gè)党瓮,大部分的問題都是由于測(cè)試手法造成的详炬,具體測(cè)試手法可以查看附件[圖片上傳失敗...(image-3a097-1530601446494)]
4,Checklist
由于之前和asus合作較少寞奸,導(dǎo)致我們一開始忽略了Checklist相關(guān)的內(nèi)容呛谜,該項(xiàng)內(nèi)容主要是為了提升google approve 的概率而需要檢查的測(cè)試項(xiàng),符合該checklist的東西之后能夠大概率的通過google approve枪萄,例如:
[圖片上傳失敗...(image-26f8bd-1530601446494)]
該項(xiàng)測(cè)試檢查的是手機(jī)的dppi值以及屏幕的屬性隐岛,需要和cts工具讀取的手機(jī)參數(shù)一致才能pass,故該測(cè)試項(xiàng)fail需要驅(qū)動(dòng)屏幕的owner進(jìn)行修改
該項(xiàng)測(cè)試檢查的是手機(jī)的dppi值以及屏幕的屬性呻引,需要和cts工具讀取的手機(jī)參數(shù)一致才能pass,故該測(cè)試項(xiàng)fail需要驅(qū)動(dòng)屏幕的owner進(jìn)行修改