perfdog-芒果tv視頻-性能測試實踐

觀察一段時間移動端性能測試工具perfdog,發現算法數據維度比較全面,導出數據十分方便,對手機權限要求少,進行首次嘗鮮,希望下方實踐給大家移動端性能測試一些參考價值。現在開始,GO~!

環境搭建參考

一、場景 視頻播放

  1. 總時長壓測 手動1h
  2. 總時長中,分隔成不同時間段(每隔10min),每個時間段內數據,進行橫向對比
  3. perfdog-tab命名規則 次數-時長-開始/結束
image.png

二、執行操作規則

  1. 進入芒果TV,完成登錄/設置(避免其他彈窗/廣告)

  2. 啟動perfdog,選擇芒果TV,完成設置


    選擇待測APP-芒果TV.png
  3. 點擊開始錄制


    開始錄制.png
  4. 錄制中,依據數據選擇規則,設置標簽
    點擊tab1(命名:1-10-開始),自行進行10min鬧鐘(比如手機設備/流沙罐等,10分鐘原因是 方案需要,小伙伴可以靈活調整時間)
    10min后tab2(命名:2-10-開始)…直至,.tab6 (命名:6-10-結束)

或者不同鬧鐘,算好節點時間,0:16--10:16--20:16,依據時刻點,打點添加tab

雙擊添加tab.png
  1. 點擊關閉錄制

PS 如何確保時間間隔準確性,鬧鐘部分,下方角標可以查看具體時刻,精確到秒s

開始錄制,進度條展示時間.png

三、導出整體數據

1.Tab1-Tab6,總體時間數據

導出數據.png

2.Tab1/tab2.Tab6 分別導出數據
拖曳選擇區間后,右鍵選擇save,完成數據上傳和存放本地


四、數據分析

進入perfdog官網(https://perfdog.qq.com)選擇查看數據

4.1 整體數據趨勢分析

雙擊目標數據,進入結果頁面


雙擊數據.png
結果頁面.png

4.2 分析FPS結果

FPS整體趨勢圖.png
Frametime.png

觀察結果頁面,三項FPS/junk/bigjunk/FrameTime 數據趨勢

  1. FPS整體平穩,90%處于54--60區間內,說明流暢度處于比較好狀態
  2. tab區間(每隔10分鐘)tab1 tab2 tab3 出現1次junk,tab4區間出現4次junk,基本是屬于低FPS值(如圖展示FPS40-48區間)
  3. tab1 tab2 tab3 tab4對比實際場景,肉眼并未察覺卡頓,說明流暢度處于可接受狀態,需要找到tab1 tab2 tab3 tab4 此時繪制場景圖像
    【后續措施】進行復測,評估此時間段內(05:50--06:00 17:00-18:00等出現junk區域關注) 繪制內容是否超量
    4.觀察FrameTime (兩幀畫面間隔耗時(也可簡單認為單幀渲染耗時)),單幀耗時,可以發現,出現卡頓junk時間和FrameTime單幀繪制超時時間重合
    進一步說明,FPS降低的愿意是繪制單幀界面數據超時(圖中可以讀取縱軸,部分>80ms 甚至>150ms)
    【后續措施】進行復測,評估此時間段內 繪制內容是否超量


    image.png

4.3 分析CPU結果

1.CPU Usage
CPU Usage(傳統CPU利用率,也叫未規范化CPU利用率,TotalCPU表示整機未規范化CPU使用率,AppCPU表示進程未規范化CPU使用率。備注:統計結果和Android Studio Profiler一致。具體參考https://bbs.perfdog.qq.com/detail-146.html)

CPU.png

2.CPU Usage (Normalized)
CPU Usage (Normalized)(規范化CPU利用率)
TotalCPU表示整機規范化CPU使用率,AppCPU表示進程規范化CPU使用率。備注:建議參考規范化CPU利用率,性能參考更精準具體說明參考

如下圖數據,CPU處于8~18%,低于第一警戒線30%,性能表現OK


CPU-normalized.png
  1. CPU-溫度
    互娛類產品,由于用戶使用時間長,需關注CPU溫度,CPU溫度越高,越影響性能數據
    如下圖數據,基本處于35°~38°之間,那么手機設備溫度也受此影響,用戶使用時操作體感發燙,體驗一般
CPU-溫度.png

4.4 分析內存memory結果

memory.png

??之前學的是 看PSS USS
PSS隨著時間逐步升高,但其間變更處于360~480之間,也是可控???
vss虛擬內存處于平穩狀態

4.5 選擇不同tab數據進行對比分析

tab1 vs tab4

tab1 vs tab4.png
image.png
4.5.1 FPS/JUNK

tab1 比 tab4 junk少

tab1 vs tab4_FPS/JUNK.png
tab1 vs tab4_JUNK.png
tab1 vs tab4_Frametime.png

觀察FPS/junk/FrameTime (兩幀畫面間隔耗時(也可簡單認為單幀渲染耗時)),單幀耗時,可以發現,出現卡頓junk時間和FrameTime單幀繪制超時時間重合
進一步說明,FPS降低的愿意是繪制單幀界面數據超時(圖中可以讀取縱軸,部分 甚至>150ms),這些時間段內需要重點關注,是否出現卡頓

4.5.2 CPU

下圖數據,說明tab1 vs tab4繪制,tab1波峰,tab4波谷或者平穩橫線,說明兩者繪制趨勢不同,可能因為本來每幀繪制內容不同
但是整體都處于可控區域 tab1 8~14,tab4 7~12

tab1 vs tab4_CPU.png
tab1 vs tab4_CPU_normalized.png
4.5.3 memory

下圖數據沒有看懂
和cpu數據趨勢一樣,tab1 vs tab4繪制,tab1波峰,tab4波谷或者平穩橫線,說明兩者繪制趨勢不同,可能因為本來每幀繪制內容不同

image.png

vss tab1 是剛啟動,從低到高,爬坡過程,正常;tab4是中間階段,vss處于平穩狀態,正常


memory_vss.png

五、反思結果

5.1 更快定位APP實際場景

當發現部分區域階段有問題,如何更快的定位APP實操場景

  1. perfdog直接開啟 shootshoot 功能
    perfdog_shootshoot.png

弊端是,開啟shootshoot會加大性能損耗,影響性能數據,對測試結果有影響
如果前期對FPS要求沒有那么精準,可以開啟shootshoot,方便一次性定位性能問題對應的APP場景

  1. APP性能場景搭建,增加其他錄像功能

可拍照手機/設備,可錄制 待測性能的APP界面+跑馬燈設備+PC端運行perfdog工具
當perfdog數據需要對應APP界面場景,可以直接拿到數據

5.2 執行反思

1.操作順序不能出錯,降低由于人為操作造成的數據誤差
Ex 開始打標簽時,沒有錄制開始,此時沒有數據,雖然差一會,也影響最后性能結果數據
2.分隔好后自動導出數據,拖曳選中區間,比較難,也怕出錯
3.如何能一次場景 自動定義時間間隔,比如總體xxh,自定義每隔xxmin 把數據分隔出來,進行對比(類似jira那樣的流程,工具選擇時間間隔)

5.2 性能指標

后續仍需查性能指標,積累更多參考價值
手游FPS的性能指標,CPU指標,內存指標
視頻FPS的性能指標,CPU指標,內存指標

如果沒有找到行業統一標準,則選擇團隊內穩定版本&穩定模塊,收集一波基線數據

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。