1. 程式人生 > >WeTest明星工具-移動端效能測試PerfDog初探

WeTest明星工具-移動端效能測試PerfDog初探

在十一月初,騰訊就官宣了一則訊息,騰訊WeTest明星工具-PerfDog面向全球釋出。官宣介紹如下:https://wetest.qq.com/lab/view/475.html。我在看到該新聞時,有種大開眼界的感覺,移動端的效能測試原來可以這麼簡單。今天閒暇之餘,來了一波初探,簡單體驗了一番。

軟體效能資料採集

我們先來了解下通過該工具能採集到哪些效能資料:

PerfDog支援移動平臺所有應用程式(遊戲、APP應用、瀏覽器、小程式等)及Android模擬器,桌面應用程式PerfDog支援在Windows和Mac機器使用執行。在iOS和Android平臺獲取效能引數如下:

iOS平臺 (與蘋果官方Xcode工具引數對齊一致)

  • Screenshot
  • FPS(1秒內遊戲畫面或者應用介面真實平均重新整理次數,俗稱幀率/FPS)
       1) Avg(FPS):平均幀率(一段時間內平均FPS)
       2) Var(FPS):幀率方差(一段時間內FPS方差)
       3) Drop(FPS):降幀次數(平均每小時相鄰兩個FPS點下降大於8幀的次數)
  • Jank(1s內卡頓次數。iOS9.1以下系統暫時不支援。類似Android的Jank卡頓和iOS的FramePacing平滑度統計原理。幀率FPS高並不能反映流暢或不卡頓。比如:FPS為50幀,前200ms渲染一幀,後800ms渲染49幀,雖然幀率50,但依然覺得非常卡頓。同時幀率FPS低,並不代表卡頓,比如無卡頓時均勻FPS為15幀。所以,平均幀率FPS與卡頓無任何直接關係)
        PerfDog計算方法:同時滿足兩條件,則認為是一次卡頓Jank.
        1、 當前幀耗時>前三幀平均耗時2倍。
        2、 當前幀耗時>兩幀電影幀耗時(1000ms/24*2=84ms)。
        同時滿足兩條件,則認為是一次嚴重卡頓BigJank.
        1、 當前幀耗時>前三幀平均耗時2倍。
        2、 當前幀耗時>三幀電影幀耗時(1000ms/24*3=125ms)。
    計算思路:考慮視覺慣性,假設以前三幀的平均幀耗時為參考,作為vsync時間間隔,連續兩次vsync沒有新渲染畫面重新整理,則認為是一次潛在卡頓,也就是說下一幀耗時大於前三幀平均幀耗時2倍,則認為一次潛在卡頓。同時單幀耗時滿足大於兩倍電影幀耗時1000ms/24*2 (由於人眼低於24幀才能辨別畫面不連續性),則認為是一次真正卡頓。同時若單幀耗時大於3倍電影幀耗時,則認為是一次嚴重卡頓。
    註解:為什麼是兩次vsync?GPU一般是3重緩衝buffer,當前幀已佔用一個buffer,即剩餘2緩衝buffer,人眼一般可容忍2幀延遲。 為什麼是兩幀電影幀耗時?低於24幀畫面,人眼就能感知到畫面不連續性,電影一般都是24幀。即電影幀耗時1000ms/24=41.67ms,兩幀電影幀耗時也就是41.67ms*2,三幀電影幀耗時是41.67ms*3。
       1) BigJank:1s內頓嚴重卡次數
       2) Jank(/10min):平均每10分鐘卡頓次數。
       3) BigJank(/10min):平均每10分鐘嚴重卡頓次數
  • FTime(上下幀畫面顯示時間間隔,即認為幀耗時,iOS9.1以下系統暫時不支援。)
       1) Avg(FTime):平均幀耗時 
       2) Delta(FTime):增量耗時(平均每小時兩幀之間時間差>100ms的次數)
  • CPU Usage(Total整機/App程序,統計結果合Xcode一致)
  • Memory (是統計FootPrint,注:OOM與FootPrint有關,與系統、機型無關。只與RAM有關,如1G記憶體機器。FootPrint超過650MB,引發OOM)。受iOS平臺限制,暫時無法獲取ios10及以下系統的memory。後續版本增加。如做效能測試,建議升級iOS系統版本
  • Xcode Memory (XCode Debug Gauges統計方式即XCode Memory)。受iOS平臺限制,暫時無法獲取ios10及以下系統的Xcode Memory。後續版本增加。如做效能測試,建議升級iOS系統版本
  • Real Memory(Xcode Instrument統計方式即Real Memory,實際佔用實體記憶體。注:實體記憶體與系統策略有關,關注意義不大)
  • Virtual Memory(虛擬記憶體)
  • Wakeups(執行緒喚醒次數)。注:超過150程序很大可能會被系統kill
  • CSwitch(上下文切換測試)。注:單核超過14000程序會被系統Kill
  • GPU Utilization(Render/Tilter/Device)
       1) Render:渲染器利用率(畫素著色處理階段,若佔比高,說明是PS階段出現瓶頸,shader過於複雜或紋理大小、取樣複雜等) 
       2) Tilter:Tilter利用率(頂點著色處理階段,若佔比高,說明是VS階段出現瓶頸,頂點數太多等原因)
       3) Device:裝置利用率(整體GPU利用率)
  • Network(Recv/Send,測試目標程序流量,和Xcode結果一致)
  • Battery Power(整機實時Current電流、Voltage電壓、Power功率)(注:和Xcode Instrument結果一致)
  • Log(系統除錯日誌資訊)
Android平臺
  • Screenshot
  • FPS(1秒內遊戲畫面或者應用介面真實平均重新整理次數,俗稱幀率/FPS)
       1) Avg(FPS):平均幀率(一段時間內平均FPS)
       2) Var(FPS):幀率方差(一段時間內FPS方差)
       3) Drop(FPS):降幀次數(平均每小時相鄰兩個FPS點下降大於8幀的次數)
  • Jank(1s內卡頓次數。解釋說明如iOS平臺說明)
       1) BigJank:1s內嚴重卡頓次數
       2) Jank(/10分鐘):平均每10分鐘卡頓次數
       3) BigJank(/10分鐘):平均每10分鐘嚴重卡頓次數 
  • FTime(上下幀畫面顯示時間間隔,即認為幀耗時)
       1) Avg(FTime):平均幀耗時
       2) Delta(FTime):增量耗時(平均每小時兩幀之間時間差>100ms的次數)
  • CPU Usage(Total整機/App目標程序,統計結果和Android Studio Profiler一致)
  • CPU Clock(各個CPU核心的頻率和使用率)
  • Memory (PSS Memory,統計結果和Android Java API標準結果一致,與Meminfo也一致。注:部分三星機器系統修改了Meminfo底層統計方式,導致Meminfo與Java AP統計結果不一致,新出三星機器已修復)
  • Swap Memory (Swap Memory)
  • Virtual Memory
  • Memory Detail(NativePSS、GFX、GL、Unknown)
  • GPU Usage(目前僅支援高通晶片手機)
  • GPU Frequency(目前僅支援高通晶片手機)
  • Network(Recv/Send)
  • CTemp(CPU溫度)
  • Battery Power(Current電流、Voltage電壓、Power功率)(注:與儀器測試誤差<3%左右)
  • Log(系統除錯日誌資訊)

上述內容來自官網使用文件。我們瞭解了引數,就實際來操作一下吧。對於工具的介紹,網路上都有,我就結合自己的實際體驗來說吧。

使用的基本流程

在自己實踐使用時,基本流程如下:

1.註冊賬號(只有註冊賬號後才能下載安裝包)

2.下載安裝包並解壓

3.在perfdog後臺建立測試專案

4.開啟可執行檔案PerfDog.exe

5.使用註冊的賬號登入

6.使用usb將手機和電腦連線(不能鎖屏,開啟除錯模式)

7.選擇連線模式(wifi還是usb)

8.選擇app應用列表

9.配置要監控的資料

10.開始記錄資料

11.操作對應app

12.停止記錄資料(不能少於10S)

13.上傳記錄資料

14.進入perfdog後臺檢視效能資料

流程介紹

前五步操作就不講述了,大家都懂。我們直接從第六步說起,我使用的是ios裝置。

連線裝置

iOS: 則即插即用,使用者無需做任何操作。

Android: 有兩種模式,非安裝模式和安裝模式。

  • a. 非安裝模式:

    手機即插即用,無需任何設定及安裝,使用非常簡單,但手機螢幕上沒有實時效能資料顯示。

  • b. 安裝模式:

    需要在手機上自動安裝PerfDog.apk,手機螢幕上有實時效能資料顯示。(請開啟Debug除錯模式、允許USB安裝和PerfDog懸浮窗管理許可權),啟動PC版PerfDog.exe,則會在手機上自動PUSH安裝PerfDog.apk,具體安裝類似各個手機廠商安裝第三方APP提示安裝即可。(注:由於很多手機安裝需要賬號密碼,導致無法自動安裝,如果自動安裝失敗,則會把安裝檔案PerfDog.apk釋放到當前資料夾裡,手動安裝PerfDog.apk即可)。

這裡重點說明下Android平臺下,LMK和Swap這兩個引數意義:

LMK:Android平臺下OOM與遊戲程序記憶體大小無關,主要是系統剩餘實體記憶體有關。系統剩餘實體記憶體小於LMK,則會引起OOM。

Swap: 系統程序用到zram/vnswap記憶體壓縮技術。不同手機系統啟用Swap memeroy大小不同。

測試模式

通過usb連線電腦後,出現如下介面,可以選擇測試模式:

USB模式測試:

  USB連線,在裝置列表選擇USB圖示裝置進行USB模式測試(插線模式測試功率無任何意義)。

WIFI模式測試(測試功率):

  USB連線後,在裝置列表選擇WIFI圖示裝置進行WIFI模式測試。WIFI檢測連線成功後,拔掉USB連線線。(注:需要PC和被測手機連線同一WIFI,WIFI檢測連線成功後,拔掉被測手機USB線(插線模式測試功率無任何意義))。

在實踐中,USB和WiFi模式我都有使用。選擇模式後,介面會展示裝置的詳細資訊,如下:

選擇測試應用

選擇模式後,則可以選擇要測試的應用了(當前手機中的所有app都可以被選擇),如下頁面:

選擇對應被測應用,並操作對應的app,介面展示如下:

注意點:Android平臺,安裝模式下,手機螢幕左上角有實時效能資料顯示(Android手機請開啟PerfDog懸浮窗管理許可權,否則手機上不會顯示效能引數)。

開啟懸浮許可權

android裝置中的介面效能引數顯示如下:

功能介紹

1.效能引數配置

效能引數可在介面中配置,點選介面中的+號即可,如下:

①點選對應條目引數,顏色會變深,圖表資料則會展示在介面中

②勾選對應條目引數,表示需要收集該資料

2.記錄儲存

點選右側的藍色開始按鈕,則表示在記錄資料,如下:

需要注意的是:記錄時間不能少於10S。少於10S,則會提示如下資訊:

點選按鈕後,記錄會停止記錄並儲存資料,如下:

2.1 提交記錄到perfdog後臺

可以修改名稱,點選confirm,資料會上傳到perfdog的後臺,如下:

可以檢視詳細的效能資料,如下所示:

2.2 記錄儲存到本地

勾選儲存按鈕,資料就會儲存到本地,如下:

可以開啟excel檔案檢視對應的效能資料:

3.資料回放

點選perfdog介面上的資料夾按鈕,選擇對應的本地資料,即可以回放記錄,操作如下:

可在介面查看回放結果,如下:

4.批註及標定

雙擊滑鼠左鍵,增加批註,再次雙擊,則取消批註。

單擊滑鼠左鍵,則增加標定,再次點選則重新標定。

增加了批註和標定的介面如下所示,紅色為批註,淡紫色為標定:

5.效能引數分析

5.1 資料統計

可以選擇一個時間段內的資料,進行統計,如下:

5.2 設定效能引數統計分析閾值

在perfdog介面中的setting下,可以配置,如下:

5.3 儲存框選資料

對某一時間段內的資料框選後,可以單獨儲存片段,在框選範圍內,右鍵即可,如下:

6.場景標籤

通過標籤按鈕給效能資料打標籤,滑鼠左鍵雙擊顏色區域可修改對應區域標籤名

7.日誌記錄

在perfdog介面,可以檢視對應日誌,也可以設定檢視日誌的等級,如下:

在嘗試WIFI模式時,發現log按鈕勾選不了。

8.停止功能

停止測試應用,不需要拔掉資料線,或者斷開連線,在選擇應用的介面中,選擇NULL即可,如下:

9.截圖錄屏

連線安卓裝置,並使用安裝模式,可配置截圖引數,如下:

介面就會記錄操作的過程,如下所示:

如此記錄是不是很明瞭?但這種用法會影響效能引數,實際用途中不推薦。如果覺得新鮮,可以嘗試使用即可。

PerfDog後臺使用

1.邀請人員

可以邀請對應人員一起維護測試專案

2.資料共享

資料共享後,可以在任務資料中檢視明細,可按android、ios區分,以及app包的版本,裝置版本來檢視。

使用注意點

1.裝置連線

iOS: 若PerfDog檢測不到連線手機或無法測試,請先安裝確保最新iTunes是否能連上手機。

Android: 請開啟手機Debug除錯模式及允許USB安裝。

2.截圖記錄影響效能

截圖記錄影響效能(整體FPS影響<=1。小米5:CPU=1%左右。IPhone7P:CPU<2%),若無需請不要開啟截圖。

總結

使用PerfDog工具下來,整體有以下幾點感受。

1.對效能指標的測試,更加便捷;

2.易操作

3.記錄支援回放

4.資料便於管理與檢視

PerfDog工具是款不錯的效能測試工具,點贊一波。

最後,附上官方的操作手冊:https://perfdog.qq.com/support