百度影片在Android和iOS端效能測試方法

testingbang發表於2020-12-07

背景介紹

  一直以來, 效能測試 是被一部分人遺忘,又讓另一部分人無可奈何的東西。在絕大部分的創業公司,效能測試基本上都是被遺忘的,他們認為 功能測試 和穩定性測試才是重點,而在中等規模的公司中一部分測試人員考慮進行效能測試,卻無從下手。

  這個系列,從 baidu 測試工程師的 工作 實踐出發,介紹 移動 端效能測試的通用方法和結合產品特點的不同側重。

  隨著流量費用的降低,越來越多的人開始在公交地鐵等移動場景使用影片應用。影片類的應用會更多關注播放流暢度、下載等效能指標,下面介紹的是 百度 影片的效能 測試方法

  百度影片是第三方影片資源聚合類產品,主要提供使用者線上播放、離線下載各種影片服務,提供 PC 、  Android  、 iOS 三端入口,使用者體驗、流暢度、下載速度、檢索影片資源等是目前產品線最關注的層面。

  一款優秀的娛樂類應用,必須具有卓越的效能,超越同類競品,同時兼具良好的使用者體驗。

   APP效能分析維度

  App 型別眾多,根據具體型別劃分,效能指標的維度和優先順序各不相同。影片類 App 歸屬於娛樂遊戲型的 App ,因此效能測試維度優先順序排序為:流暢度、 crash 、記憶體、流量、響應時長、功耗、 CPU 。

  表徵不同維度指標的量化單位如圖 21 所示。比如流暢度是 FPS (幀率),記憶體是兆比等等。

百度影片在Android和iOS端效能測試方法

  因為 Android 平臺底層是由 linux 系統改良而來,不同維度的指標絕大部分都可以透過命令來取不同的指標(具體方法可以參加後面工具)

  在 iOS 平臺上,效能的獲取,必須使用 Xcode 裡面 instruments 下的相應元件,不像開源的 Android 那樣靈活,但 技術 上是可以做到各平臺的效能指標獲取測試。

   APP效能指標獲取手段

  Android系統指標獲取

   · CPU

  CPU 的測試方法分為幾類

  a. 使用 Android 提供的方法

  adbshell dumpsyscpuinfo |grep packagename >/address/cpu.txt 來獲取

  b. 使用 top 命令

  adbshell top |greppackagename>/address/cpu.txt 來獲取

   · 記憶體

  記憶體消耗,這個測試節點的設計目標是為了讓應用不佔用過多的系統資源,且及時釋放記憶體,保障整個系統的穩定性,當然關於記憶體測試,在這裡我們需要引入幾個概念:空閒狀態、中等規格、滿規格。

  空閒狀態:指開啟應用後,點選 home 鍵讓應用後臺執行,此時應用處於的狀態叫做空閒。中等規格和滿規格指的是對應用的操作時間的間隔長短不一,中等規格時間較長,滿規格時間較短。

   接下來我們說說在記憶體測試中,存在很多測試子項,如下清單所示:

  1、空閒狀態下的應用記憶體消耗情況

  2、中等規格狀態下的應用記憶體消耗情況

  3、滿規格狀態下的應用記憶體消耗情況

  4、應用記憶體峰值情況

  5、應用記憶體洩露情況

  6、應用是否常駐記憶體

  7、 壓力測試 後的記憶體使用情況

   電量

  功耗測試主要從以下幾個方面入手進行測試:

  a 、測試 手機 安裝目標 APK 前後待機功耗無明顯差異。

  b 、常見使用場景中能夠正常進入待機,待機電流在正常範圍內。

  c 、長時間連續使用應用無異常耗電現象。

  功耗測試的方法分為兩類,一類為 軟體測試 ,一類為硬體測試。

   軟體測試一般分為 2 類:

  第一種採用市場上提供的第三方工具,如金山電池管家之類的。第二種就是自寫工具進行,這裡一般會使用 3 種方法 :

  方法一、基於 android 提供的 PowerManager.WakeLock 來進行;

  方法二、稍複雜一點,功耗的計算 =CPU 消耗 +Wakelock 消耗 + 資料傳輸消耗 +GPS 消耗 +Wi-Fi 連線消耗;

  方法三、透過 adbshell dumpsys battery 來獲取。

  接著說下硬體測試,在這裡我們一般使用萬用表或者功耗儀進行測試,使用功耗儀測試的時候,需要製作假電池來進行的,有些不能拔插電池的手機還需要焊接才能進行對了測試。

  ·  啟動時長

  首先我們來說說啟動時間。關於應用的啟動時間的測試,分為三類:

  首次啟動 -- 應用首次啟動所花費的時間

  非首次啟動 -- 應用非首次啟動所花費的時間

  應用介面切換 -- 應用介面內切換所花費的時間

  那麼如何來做啟動時間的測試呢,一般我們分為 2 類,一類為使用軟體來測試,一類為使用硬體來測試。對於軟體測試的方法,大部分人都比較通曉使用 Android 提供的 DisplayManager 來獲取 activity 的啟動時間。透過日誌過濾關鍵字 Displayed 來過濾所有 activity 所列印的, 記錄 日誌透過。

  ·  幀率

  GPU 這個詞對於 PC 效能測試者來說並不陌生,而今 3Dmax ,安兔兔之類的第三方軟體讓 GPU 在移動端效能測試領域家喻戶曉,但對於 App 內的 GPU 該如何來測試呢?首先我們引入幾個名詞:過度繪製、幀率、幀方差。

  過度繪製是指介面顯示的 activity 套接了多層導致的結果。幀率是指螢幕重新整理率。幀方差是指螢幕重新整理幀間隔方差。

  對於 GPU 的測試主要包括以下幾個測試子項:介面過度繪製、螢幕滑動幀速率、螢幕滑動平滑度。

  對於過度繪製的測試主要透過人工進行測試,透過開啟開發者選項中的顯示 GPU 過度繪製來進行測試( PS :只有 Android4.2 及以上的版本才具備此功能 ) ,驗收的標準為 :

  a 、不允許出現黑色畫素

  b 、不允許存在 4x 過度繪製

  c 、不允許存在面積超過螢幕 1/4 區域的 3x 過度繪製(淡紅色區域)

  對於螢幕滑動幀速率,常用手段包括軟體測試或硬體輔助測試。軟體測試的方法如下:

  1. 手機端需開啟開發者選項中的啟用跟蹤後,勾選 Graphics 和 View ;

  2. 啟動 SDK 工具 Systrace 外掛,勾選被測應用,點選 Systrace 外掛,在彈出的對話方塊中設定持續抓取時間,在 tracetaps 下面勾選 gfx 及 view 選項;

  3. 人滑動介面可以透過節拍來進行滑動或者掃動,幀率資料會儲存到預設路徑下,預設名稱為 trace.html ;

  4. 將 trace.html 檔案複製到 linux 系統下透過命令進行轉換,生成 trace.csv 檔案。

   · 網路流量

  效能測試的——流量,當然我所指的效能測試是針對大部分應用而言的,可能還有部分應用會關注網速、弱網之類的測試。流量測試,同樣需要引入幾個名詞:

  中等負荷:應用正常操作

  高負荷:應用極限操作

  流量測試包括以下測試項:

  a 、應用首次啟動流量提示

  b 、應用後臺連續執行 2 小時的流量值

  c 、應用高負荷執行的流量峰值

  d 、應用中等負荷執行時的流量均值流量測試

  流量測試一般都是用軟體來進行的,這裡我們一般分為 2 類:

  a 、採用市場提供的第三方工具來進行測試,如流量寶

  b 、自研工具進行測試

  自研工具進行測試一般包含 2 類方法:

  a 、透過 tcodump 抓包,再透過 wireshake 直接讀取包資訊來獲得流量

  b 、首先獲得被測應用的 uid 資訊(可以透過 adbshelldumpsys package 來獲取),然後在未操作應用之前,我們可以透過檢視

  adbshell cat/proc/uid_stat/uid/tcp_rcv

  adbshell cat/proc/uid_stat/uid/tcp_snd

  獲取到應用的起始的接收及傳送的流量,然後我們再操作應用,再次透過上述 2 條命令可以獲取到應用的結束的接收及傳送的流量,透過相減及得到應用的整體流量消耗。

   · iOS系統指標獲取

  對於 iOS 系統,只需要一個裝了 xcode 的 mac 電腦,取以上指標相對容易。最新版本是 xcode7.0 (當然你用老版本的也一點問題都沒有)

  效能測試工具,推薦用下面三個 :

  工具一、 Instruments ,這個是 mac  蘋果 自帶的工具,裡面有很多模板,選擇不同的系能模板就可以監聽手機 App 效能了,但是要注意,沒越獄的機器必須註冊開發者證書,或者拿到 App 企業證書,這樣 xcode 才能啟動 App 進行效能監控,也就是說你被測 App 必須有原始碼才行,當然你想規避這個問題,得走百度 smallApple 破解簽名機制

  工具二、 GT ,是 騰訊 開發的一款 App ,但是也得在原始碼層面嵌入 GT 的 SDK

  工具三、 SmallApple ( )

  Smallapple 是一個開源的 IOS  自動化測試 工具,旨在提供一套完整的 iOS 自動化測試解決方案,提供針對 iOS App 的功能和效能測試,同時提供類似 Android adb 、重簽名、 instruments 結果解析、錄製回放等工具集。

  Smallapple 透過一鍵式的執行方式,自動完成 App 重簽名、安裝、測試、效能採集(包括 CPU 、記憶體、流量等)、 Crash 檢測和結果報告等工作。

   Smallapple 特性:

  · Smallapple 致力於以最簡單的方式,最小的代價提供給使用者使用。

  · 支援非越獄裝置

  · 不需要依賴原始碼

  · 支援 Appstore 或者第三方下載的 App 安裝測試

  · 完全的命令列模式

本文轉自【百度質量部】,更多文章可關注公眾號【測試幫日記】


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2739938/,如需轉載,請註明出處,否則將追究法律責任。

相關文章