新書

速遞

吳老的java版《selenium webdriver 實戰寶典》和python版《selenium Webdriver 3.0 自動化測試框架實戰指南》出版了,代碼拿來就能用。

文 | 小學生   

來源 | 微信公眾號:Qtest之道

前言

前段時間有產品提到,業務方在使用我們push SDK的時候,流量和電量的消耗非常大,想看下是什麼原因導致的。背景就是這樣。那麼測試推送類的SDK功耗情況,要注意哪些重要的點呢?下面就從測試前的準備、測試過程以及測試結果的分析,來講述下整個過程的測試要點。

A B C D 排除法

因為PUSH SDK裡面不僅包括我們自家的SDK:A 同時也攜帶了B、C、D等第三方的SDK。所以測試前期,就要設計好,把自己SDK與其他幾家的第三方SDK分開。這樣在測試結束後,我們就可以分別得到各自的一個功耗消耗的情況,這樣就可以找到導致功耗消耗如此之大的罪魁禍首了。

哪些操作會產生功耗

我們使用demo來測試SDK時,打開demo後,會產生功耗的操作大概有以下三點:

1. SDK與PUSH伺服器每隔幾分鐘,會有一次維持心跳的操作(確認SDK與服務端的鏈接)

2. SDK產生數據後,會實時上報給qdas

3. PUSH伺服器推送消息給SDK時 

如何獲取SDK所產生的功耗

這裡我以

獲取流量

來舉例(電量可以使用adb命令來直接獲取到,相對簡單一些)

1. 獲取應用的進程ID(procID)

2. 通過進程ID獲取UID

3. 通過UID獲取手機目錄下,對應應用的上行和下行流量消耗情況

腳本實現

如下圖,是通過UID來獲取上行流量(tcp_snd)和下行流量(tcp_rcv)的部分代碼。我們只需要打開應用後,通過adb命令獲取進程ID,然後通過進程ID獲取UID,把UID以參數的方式傳到這個方法中,就可以得到上下行流量。

測試重點

1. 每隔幾分鐘,SDK與伺服器維持心跳時,流量消耗的情況

2. 後台推送PUSH消息時,SDK上行流量和下行流量的變化情況以及二者之間的關係

3. 上行流量(tcp_rcv)+下行流量(tcp_snd)=應用消耗的總流量,最後對比相同條件下,各家SDK消耗流量的情況

4. 獲取到的流量值是已位元組為單位,大家要記得轉換成KB或者M

測試時遇到的問題

1. 測試過程中,會提示無法訪問設備的UID以及下面的tcp_rcv和tcp_snd目錄

問題分析

:有些廠商隱藏或者禁止用戶訪問此目錄,所以唯一的辦法只能是通過其他手機來進行測 試。我在測試過程中,使用的是360手機,這款手機是允許我們來檢測應用的流量使用情況的。

如下圖:就是某款手機廠商,不允許用戶訪問之後給的提示信息

2. 維持心跳的過程,消耗的流量非常少

,大概幾個位元組的大小,

要注意否則容易忽略這裡的消耗

(如下圖,下面的是維持心跳後的上下行流量,相較於上一次流量統計,只增加了8個位元組。可見這裡的消耗是很少的)

3. 後台推送PUSH消息時,出現SDK消耗的上行流量>下行流量。

正常來講,後台推送消息,應該是SDK去下載然後查看,沒有什麼請求操作,理應是下行流量大於上行流量。但是確確實實出現了上行流量大於下行流量的情況。

問題分析

:最後多方確認後發現,SDK產生的數據 會實時上報給qdas,這樣產生的一部分請求數據

會同步到上行流量中。導致上述問題的出現。所以實際上,PUSH SDK在每次接收消息時,消耗的流量是要略少於當前所測數據。所以大家在平時測試此類SDK時,一定要注意是否有其他的操作會影響到SDK本身的流量消耗。

4. 殺掉進程或者重新裝包後,啟動應用,檢測到的啟動流量消耗特別大,不正常。

後來經過排查,發現同一個應用,無論是殺進程還是重新裝包,再次啟動時,流量還是存放到之前的UID下。所以這時監控到的流量就包含了歷史數據量。

解決辦法

有兩個方案:1. 重啟機器後重新裝包,這時之前的UID就不見了,打開應用後會

重新生成UID,不包含任何歷史數據。 2. 在代碼中加上去除歷史數據的方法,每次監控時保存歷史數據,然後最後再去除歷史數據即可。

??

小灶時間

問:

平時在聊微信的時候,當切換到後台時,別人給你發送消息,這個消息會在手機頂部彈出來,大家知道頂部彈出的消息是由誰來負責的嗎~

IOS:

當微信切到後台後,微信的伺服器會把收到的消息先推送給APNS(蘋果自己的伺服器),然後再由APNS把消息以彈窗的形式在手機頂部彈出。

Android:

當微信切到後台後,微信的伺服器會調用微信的客戶端,然後微信的客戶端再調用Android系統的API,把消息以彈窗的形式在手機頂部彈出。

以上我在測試推送相關SDK的時候,總結的一些知識點。大家有什麼想法趕快提出來吧~

實戰:微信小程序+appium測試實例

實戰:微信公眾號+appium測試實例

使用LR編寫windows sockets協議xml報文格式腳本

Python實戰:file tell()返回的指針怎麼就不一樣?

互聯網架構的演變

草根在測試行業如何殺出一條血路(2)

2018web測試開發培訓一年期周六班!

喜馬拉雅

app搜索並

收聽「

光榮之路

」電台

光榮之路

招聘|徵稿|合作

|QQ群

[email protected]

python群:457561756

性能群:415987441

招聘群:203715128

感謝認真閱讀的你!

?

推薦閱讀:

相关文章