在十一月初,騰訊就官宣了一則消息,騰訊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(系統調試日志信息)
- 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