移動端效能測試必備工具 PerfDog 效能狗

騰訊WeTest發表於2020-09-01

致移動遊戲&應用效能測試分析的夥伴們:
你是否會因移動遊戲&APP效能問題,而備受煎熬?
你又是否因尋找效能測試分析工具,而彷徨迷茫?
你是否因工具需要,而嘗試各種ROOT/越獄?
你是否因工具準確性,而被逼各類花式複測驗證?
你是否因工具侷限性,而同時開啟N個工具?
你又是否因工具空白,而被迫各式XCode原始碼編譯?
ROOT/越獄越來越難,你我路在何方?
版本編譯坑羅密佈,你我又將守夜到何時?

備受煎熬的時候一去不復返了,
因為移動全平臺效能測試分析神器來了,
它為移動遊戲&APP測試分析而生,
它就是PerfDog效能狗!
背景:
在專案研發支援過程中,經歷如上障礙和痛苦。我們決定做一個完全獨立、簡單易用,與APP版本、系統版本、系統平臺無任何關係的效能平臺。

為了保證測試結果的準確性、嚴謹性和可對比性。我們編寫了Demo進行測試對比。

  1. iOS平臺:
    PerfDog測試資料結果與XCode/Instrument(蘋果官方工具需要遊戲原始碼編譯測試)測試結果對齊一致。效能影響結果:Xcode/Instrument效能影響較大,PerfDog效能影響很小。

  2. Android平臺:
    安卓平臺比較關注的是工具本身對手機效能影響,我們在小米5手機上鎖死最低頻率。開啟截圖測試影響結果如下:

PerfDog效能影響:CPU佔比6%-10%(正常頻率下CPU佔比1-3%)。

其他工具效能影響:CPU佔比27%-33%。

備註:
工具本身效能若影響大的話,手機容易發熱,同時對遊戲&應用效能有很大影響。即測試出效能資料無法反應使用者真實情況。

軟體效能資料採集:
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(系統除錯日誌資訊)
Web效能資料管理:
賬戶資訊管理
效能資料管理、圖表展示、編輯、版本對比
效能測試任務管理
使用步驟:
步驟1 : Window PC/蘋果Mac機器上安裝、執行PerfDog客戶端。
iOS: 若PerfDog檢測不到連線手機或無法測試,請先安裝確保最新iTunes是否能連上手機。

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

步驟2 : 啟動PerfDog,然後USB連線手機,自動檢測新增手機到應用列表中。
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大小不同。

步驟3 : 測試模式。

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

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

步驟4 : 選擇測試的遊戲&應用。
PC如圖:

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

功能介紹:

  1. 效能引數控制Page:
    選擇需要收集效能引數,控制效能引數顯示page。

  2. 記錄儲存:

測試結束時,可自主選擇兩種方式儲存處理(Upload/Save)效能資料:

1) 將效能資料同步上傳PerfDog雲端web看板。

2) 本地匯出Excel檔案。

  1. 記錄回放(方便回看分析): 開啟要回放檔案。

回放結果如圖:

  1. 批註及標定:
    滑鼠左鍵雙擊,增加批註,再次雙擊,則取消批註。滑鼠左鍵單擊,則增加標定,再次點選則重新標定。

  2. 設定效能引數統計分析閾值、編輯統計引數分析及框選記錄儲存:
    可以通過滑鼠框選/拖動查詢時間週期內,統計資料等。同時可對框選資料進行儲存。工具左側“Setting”以設定對應的效能引數統計分析閾值等。

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

  4. 螢幕記錄:
    注意:截圖記錄開啟,影響效能。

  5. 多程式問題測試:
    iOS平臺,APP多程式分為APP Extension和系統XPC Server。
    比如:企鵝電競直播軟體用到APP Extension擴充套件程式(擴充套件程式名LABroadcastUpload)。當然也可能用到系統XPC Server服務程式,如一般web瀏覽器會用到webkit。
    備註:後期版本PerfDog提供XPC Server測試功能。
    Android平臺,一般大型APP,比如遊戲有時候是多程式協作執行(微信小遊戲,微視等APP及王者榮耀等遊戲多子程式),可選擇目標子程式進行鍼對性測試。預設是主程式。如圖王者榮耀。

微信小遊戲、小程式測試等,如下是微信小遊戲-浪漫玫瑰園:

  1. Log日誌功能:
    採集系統日誌資訊。

  2. 停止功能:
    無需拔手機,選擇NULL即可停止採集資訊。

Web雲平臺功能介紹:

  1. 個人效能資料MyData。

具體效能資料展示。

  1. 測試任務管理。

建立任務邀請測試成員加入,或加入其他人建立的測試任務中。

  1. 效能資料共享歸納。

  2. 測試任務效能資料Task Data。

重要提示:

  1. PerfDog的 Windows & Mac OS X 客戶端都支援使用者對iOS和Android裝置進行測試。
  2. iOS平臺: 若PerfDog檢測不到連線手機或無法測試,請先安裝確保最新iTunes是否能連上手機。記憶體採集一直為0請重啟手機。
  3. Android平臺:有兩種模式(非安裝模式,安裝模式) a) 非安裝模式: 手機即插即用,無需任何設定及安裝,使用非常簡單,但手機螢幕上沒有實時效能資料顯示(請開啟Debug除錯模式)。

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

ii. 安裝模式下,在測試過程中,由於系統資源緊缺會kill PerfDog顯示app(手機介面效能資料顯示),但不影響正常測試功能。

  1. WIFI模式:只能在WIFI模式測試功率等資訊。USB連線後,在裝置列表選擇WIFI圖示裝置進行WIFI模式測試。WIFI檢測連線成功後,拔掉USB連線線。(注:需要PC和被測手機連線同一WIFI,WIFI檢測連線成功後,拔掉被測手機USB線(插線模式測試功率無任何意義))。
  2. iOS平臺:Iphone小圓點/輔助觸控(AssistiveTouch)及Iphone x劉海手機的小白條/引導式訪問(Guided Access)影響PerfDog採集資料準確性,請關閉。
  3. 截圖記錄影響效能(整體FPS影響<=1。小米5:CPU=1%左右。IPhone7P:CPU<2%),若無需請不要開啟截圖。

效能測試技術交流群:720150565
檢視PerfDog詳情:https://perfdog.qq.com/?ADTAG=media.dev_website

相關文章