在進(jìn)行BQB測(cè)試時(shí)茉盏,實(shí)驗(yàn)室會(huì)反饋一些fail項(xiàng),需要我們分析原因隔披。而實(shí)驗(yàn)室提供給我們的信息往往不多赃份,通常只是一個(gè)測(cè)試case id,外加一句簡(jiǎn)單的現(xiàn)象描述奢米。單從這兩點(diǎn)信息來(lái)分析抓韩,我們完全不知道實(shí)驗(yàn)室是怎么樣去測(cè)試這條case,該條case的Pass verdict是什么鬓长?
例如:
PAN
TP/PAN/IP/APP/BV-05-I:
提示問(wèn)題:Wrong ICMP response received
當(dāng)我們拿到這樣一個(gè)fail項(xiàng)時(shí)谒拴,應(yīng)該怎樣去分析呢?
首先涉波,明確測(cè)試步驟和要求
BQB所有測(cè)試項(xiàng)英上,在藍(lán)牙開(kāi)發(fā)者門戶網(wǎng)站上都有測(cè)試說(shuō)明文檔炭序。
https://www.bluetooth.com/zh-cn/specifications/qualification-test-requirements
需要注意的是,一些BT Profile存在多個(gè)版本苍日,像上圖的OPP就有3個(gè)不同的版本:OPP惭聂、OPP 1.2 、OPP 1.2.1易遣。所以彼妻,還需要先確認(rèn)在申請(qǐng)BQB測(cè)試時(shí)填寫的Profile對(duì)應(yīng)支持的是哪一個(gè)版本。
要下載這些文檔豆茫,必需先使用公司郵箱注冊(cè)賬戶加入Bluetooth SIG
注冊(cè)成功以后侨歉,下載PAN的測(cè)試說(shuō)明文檔,在文檔中搜索case id " TP/PAN/IP/APP/BV-05-I"揩魂,可以看到一個(gè)詳細(xì)的測(cè)試步驟說(shuō)明幽邓,Pass verdict和Fail verdict
實(shí)際案例分析
BQB測(cè)試步驟我們已經(jīng)知道了,接下來(lái)以實(shí)際的例子火脉,介紹常見(jiàn)的測(cè)試失敗的原因牵舵,和分析思路。
Case 1. PTS(實(shí)驗(yàn)室測(cè)試BQB的工具)本身的Bug
PAN
TP/PAN/IP/APP/BV-05-I:
提示問(wèn)題:Wrong ICMP response received
Step 1. 首先倦挂,你得大概知道這個(gè)BT Profile是干嘛的畸颅?
PAN(Personal Area Network Profile)和個(gè)人局域網(wǎng)相關(guān)的藍(lán)牙服務(wù)。根據(jù)PAN測(cè)試文檔的描述方援,看上去是ping不通導(dǎo)致失敗的没炒。
Step 2. 嘗試模擬現(xiàn)象
可以用你進(jìn)行BQB測(cè)試的Android手機(jī),去連下PAN這個(gè)Profile犯戏,然后再去Ping下送火,觀察下是什么現(xiàn)象?能否復(fù)現(xiàn)Ping不通的情況先匪。
我找了一個(gè)藍(lán)牙適配器插到電腦上种吸,并安裝了BlueSoleil在我的電腦上,方便連接各種BT profile呀非。
使用測(cè)試手機(jī)連接上PAN坚俗,再電腦上嘗試去Ping 192.168.44.1, 果然是Ping不通。那么問(wèn)題來(lái)了岸裙,為什么要去Ping 192.168.44.1呢坦冠?因?yàn)镻anService里面設(shè)置地址就是192.168.44.1。
Step 3. 使用ifconfig查看手機(jī)上網(wǎng)絡(luò)設(shè)備的狀態(tài)哥桥,發(fā)現(xiàn)沒(méi)有192.168.44.1相關(guān)的信息
Step 4 . 檢查手機(jī)上和網(wǎng)絡(luò)相關(guān)的設(shè)置菜單辙浑,發(fā)現(xiàn)有一個(gè)Bluetooth tethering開(kāi)關(guān)
Step 5. 將Bluetooth tethering開(kāi)關(guān)打開(kāi)以后,再次嘗試ping拟糕,總算是ping通了判呕。
Step 6. 再次使用ifconfig查看手機(jī)上網(wǎng)絡(luò)設(shè)備的狀態(tài)倦踢,發(fā)現(xiàn)多了一項(xiàng)bt-pan,里面對(duì)應(yīng)的地址正是:192.168.44.1
Step 7 . 請(qǐng)實(shí)驗(yàn)室在測(cè)試PAN前侠草,打開(kāi)Bluetooth tethering開(kāi)關(guān)辱挥,復(fù)測(cè)還是失敗
Step 8 . 再次分析log
state : 2 ----> CONNECTED = 2 //表示PAN已經(jīng)連接成功
local_role:2 ----> LOCAL_PANU_ROLE = 2 //The local device is acting as a PAN User
remote_role :1 ----> REMOTE_NAP_ROLE = 1 //The local device is acting as a Network Access Point
結(jié)論
根據(jù)local_role和remote_role的值,說(shuō)明是相機(jī)主動(dòng)發(fā)起的PAN連接边涕,那么在進(jìn)行PAN測(cè)試時(shí)晤碘,必需保證PTS的bt-pan已經(jīng)激活,并且PTS配置的相機(jī)ip是正確的功蜓。而我們之前模擬的情況是PTS作為了PAN User园爷,手機(jī)作為Network Access Point,和實(shí)驗(yàn)室的剛好相反式撼。
Step 9 . 再次模擬
為了保證和實(shí)驗(yàn)室測(cè)試條件一樣童社,使用兩臺(tái)手機(jī)進(jìn)行PAN連接,其中一臺(tái)作為Network Access Point著隆,一臺(tái)作為PAN User扰楼,分別在兩臺(tái)手機(jī)上嘗試PING,均可以PING通美浦。證明我們的手機(jī)上網(wǎng)功能是OK的弦赖,怎么在實(shí)驗(yàn)室就PING不通了呢?
Step 10 . 在bluetooth.org官網(wǎng)上搜索PTS issue
bluetooth.org官網(wǎng)上提供了一個(gè)平臺(tái)用來(lái)上報(bào)BQB測(cè)試中遇到的問(wèn)題浦辨,并提供解決方法腾节,網(wǎng)址如下:
搜到一條:TC_IP_APP_BV_05_I: non-ICMP packets are treated by PTS as "wrong ICMP response". 和我們的現(xiàn)象和類似,PTS從6.0上存在一個(gè)issue荤牍,會(huì)導(dǎo)致TC_IP_APP_BV_05_I測(cè)試失敗。
Step 11 . 和實(shí)驗(yàn)室溝通庆冕,更換PTS為5.3版本康吵,總算復(fù)測(cè)通過(guò)了。
Case 2. 測(cè)試條件不滿足
HID
TP/DAT/BV-02-C:
彈出下面對(duì)話框后選Send_report(long)
fail信息提示
提示:Received a report smaller than the MTU, please send a larger report
Step 1. HID(Human Interface Device Profile)可支持鼠標(biāo)访递、鍵盤功能晦嵌,和藍(lán)牙鍵盤、鼠標(biāo)相關(guān)的一個(gè)Profile拷姿。
Step 2. 在HID測(cè)試文檔中搜索case id "TP/DAT/BV-02-C".
大概說(shuō)的是手機(jī)要發(fā)一個(gè)超長(zhǎng)的report給MTU惭载,并且長(zhǎng)度要超過(guò)MTU規(guī)定的長(zhǎng)度,該項(xiàng)才能pass响巢。
Step 3. 確定我們發(fā)送的report長(zhǎng)度描滔,和MTU要求的長(zhǎng)度。
實(shí)驗(yàn)室抓取了測(cè)試該項(xiàng)fail時(shí)的log踪古,在log里面搜索關(guān)鍵字HID含长,發(fā)現(xiàn)還真有SEND_REPORT_LONG這么一條券腔,看上去和測(cè)試文檔說(shuō)的一樣,是在BluetoothHidActivity里面調(diào)用的拘泞。
Step 4. 確認(rèn)測(cè)試方式
搜索了整個(gè)工程里面的代碼纷纫,沒(méi)發(fā)現(xiàn)BluetoothHidActivity相關(guān)的代碼。和實(shí)驗(yàn)室確認(rèn)陪腌,他們使用的是BluetoothHidActivity.apk來(lái)進(jìn)行SEND_REPORT_LONG測(cè)試的忙上。
Step 5. 開(kāi)始模擬現(xiàn)象
找一個(gè)藍(lán)牙鍵盤連接上手機(jī)酸茴,并手機(jī)上安裝BluetoothHidActivity.apk,點(diǎn)Send_report(long),可以打印出同樣的SEND_REPORT_LONG相關(guān)log娄蔼,證明我們的操作是正確的。
Step 6. 反編譯APK & 修改smail代碼
由于沒(méi)有apk源碼遇汞,只能對(duì)BluetoothHidActivity.apk進(jìn)行反編譯软驰,然后查看點(diǎn)Send_report(long)時(shí),發(fā)送的report是5700请唱,而發(fā)送的“5700”的字符串弥咪,對(duì)應(yīng)log為:
而實(shí)驗(yàn)室要求的長(zhǎng)度為48,明顯長(zhǎng)度不夠十绑。
下圖為反編譯出來(lái)的smail代碼聚至,增加5700的長(zhǎng)度。
Step 7. 重新打包&簽名apk本橙,驗(yàn)證效果
通過(guò)抓取的log分析扳躬,report值已經(jīng)改變,證明修改已經(jīng)生效甚亭。
Step 8. 將修改后的apk發(fā)給實(shí)驗(yàn)室贷币,復(fù)測(cè)通過(guò)
Case 3. 申請(qǐng)BQB時(shí),PICS填寫不正確
HFP
TP/ECC/BI-03-I
測(cè)試過(guò)程中出現(xiàn)如下提示亏狰,按照提示接通第一個(gè)和第二個(gè)電話役纹,并點(diǎn)擊OK,測(cè)試結(jié)束暇唾,錯(cuò)誤提示如下所示
HFP test fail.png
Step 1. 下載HFP測(cè)試文檔
發(fā)現(xiàn)有好幾個(gè)版本促脉,我們申請(qǐng)的是1.5版本,所以下載“免提配置文件1.5”就好了策州。
下載后瘸味,發(fā)現(xiàn)文件名稱叫HFP.TS.1.7.1.1.pdf,明明下的是1.5版本够挂,怎么又變成1.7了旁仿?打開(kāi)HFP.TS.1.7.1.1.pdf,從標(biāo)題可以看出1.5-1.7都通用1.7的測(cè)試文檔孽糖。
Step 2. 搜索case id "TP/ECC/BI-03-I" 丁逝,找到測(cè)試步驟描述汁胆。
大概的意思是HF發(fā)送一條AT指令給AG(我們的手機(jī)),AG收到指令后霜幼,需要回復(fù)ERROR嫩码,測(cè)試才能pass。
乍一看會(huì)覺(jué)得很奇怪罪既,其他測(cè)試項(xiàng)都是回復(fù)OK才算pass铸题,怎么回復(fù)ERROR才能pass了?
仔細(xì)閱讀測(cè)試說(shuō)明琢感,發(fā)現(xiàn)有這么一句:
AG does not support Enhanced Call Control features.
而TP/ECC/BI-03-I測(cè)的就是Enhanced Call Control Not Supported-Release Call丢间,既然不支持Enhanced Call Control,那返回ERROR就可以理解了驹针。
Step 3. 分析實(shí)驗(yàn)室提供的HCI log
從實(shí)驗(yàn)室提供的HCI log來(lái)看烘挫,AG在收到HF發(fā)送的AT+CHLD=12后,返回的是OK柬甥,同時(shí)check代碼饮六,發(fā)現(xiàn)我們是支持Enhanced Call Control功能的。
Step 4. 確認(rèn)PICS中Enhanced Call Control的支持情況
和實(shí)驗(yàn)室確認(rèn)苛蒲,由于我們填寫的PICS里面Enhanced Call Control寫的是不支持卤橄,導(dǎo)致該fail,修改Enhanced Call Control為支持臂外,測(cè)試通過(guò)窟扑。