淺談如何做客戶端性能測試


作為一名游戲測試工程師除了重點關注功能測試外,我們還需要關注弱網、性能、兼容、安全等其他的專項測試,最近所在項目組正在專項優化游戲客戶端的性能表現,這里就簡單分享下我在做客戶端性能測試的一些方法。

1. 客戶端性能不足的表現

游戲的性能測試包含服務器性能測試及客戶端性能測試,服務器性能測試主要是在游戲上線前對服務器的承載能力做測試,也就是負載測試和壓力測試,目的是為了發現服務器的性能瓶頸,確保游戲能在預設的並發下正常的進行游戲,而一款游戲是否能夠流暢運行,除了服務端的支持外,客戶端的性能表現也不容忽視,也許大家聽到過游戲玩家激烈游戲中突然冒出一句“** 掉幀了”,這所說的就是客戶端性能表現不足,嚴重影響游戲體驗。

尤其是在競技游戲中,如果沒有一個穩定的幀率輸出,那么游戲感受只能是讓人奔潰,有的同學可能會問,游戲卡頓和幀率有什么關系,幀率指以幀稱為單位的位圖圖像連續出現在顯示器上的頻率,也就是平均一秒內,游戲更新顯示了多少張畫面。

2. 游戲表現卡頓的原因

對於游戲而言,如果fps<30的話,游戲就會表現的不連貫,高的幀率可以得到更流暢更逼真的顯示效果,一般來說30fps就不會感受到明顯的卡頓,但如果能提升至60fps便可以明顯提升畫面的逼真程度,超過75fps就不會有明顯的提升了,如果幀率超過屏幕刷新率只會浪費圖形處理的能力,浪費資源,所以一般的手機游戲都會鎖60幀。

wCYEF0.png

上圖引用prefdog中畫面生成傳遞流程機制圖,首先我們要明白frametime就是指兩幀畫面間隔耗時,也可簡單認為單幀渲染耗時,玩家看到的是屏幕刷新間隔時間,不是GPU渲染完成間隔時間,從圖中可看出畫面B幀在GPU渲染耗時大於顯示器刷新間隔,相當於一次畫面沒有刷新,當出現多次沒有畫面沒有變化時,游戲的畫面表現可能就會出現卡頓了。

了解了游戲卡頓的原因,那么作為游戲測試怎樣提供測試數據供研發方優化游戲表現,這里簡單談談我個人的一些經驗。做游戲性能測試前首先需要了解我們需要關注的基礎指標。

3. 測試需要關注什么

FPS幀率:應用程序每秒鍾顯示的幀數

CPU占用率:應用程序占用的CPU資源情況

內存:應用程序存放到系統內存中占用情況

GPU:占用率:應用程序占用GPU資源情況

流量:單位時間內通過網絡端口傳輸的數據總量

電量:單位時間內應用程序消耗的電荷數量

現在市面上能采集這些數據的工具也非常多,常見的emmagee、gt、wetest、prefdog等等,經過對比使用,個人習慣用prefdog,優勢是手機不需要root,數據完整,工具簡單易用,能輸出完整的性能報告且可讀性高。

搜索prefdog下載工具,有windows和mac版本,windows平台下載好解壓包,雙擊打開prefdog.exe應用程序

wCYg1S.md.png

連接的方式有兩種,一種是直接插usb鏈接,另一種是wifi鏈接,需要注意的是usb模式無法進行耗電量測試,因為連着usb一直也是充電狀態,這個數值也沒多大作用。

Prefdog會采集到jank(1s內卡頓次數)數據,因為幀率高也不能完全代表流暢或者不卡頓,比如fps40幀,前200ms只渲染了1幀,后800ms渲染了39幀,雖然幀率40但依舊會卡頓,上面畫面生成傳遞流程機制圖中有說到原理。

PerfDog Jank計算方法:

同時滿足以下兩條件,則認為是一次卡頓Jank.
當前幀耗時>前三幀平均耗時2倍。
當前幀耗時>兩幀電影幀耗時(1000ms/24*2=84ms)。

跑完預先規划的場景后點擊右上角暫停按鈕會彈出保存框,點擊確認后可在web雲平台查詢報告記錄

wCtC9K.md.png

在做客戶端性能前需要准備高中低三檔測試設備,每個項目在設立之初也會定義最低可支持的設備,在做性能測試時需要保證設定之初最低設備也能流暢運行,才能對后續良好運營打下基礎。

需要注意的是,目前市面上機型眾多,有的品牌會有自己的cpu,這里就需要針對性的進行測試。市面上最多的處理器應該是驍龍處理器,常見的還有華為自家的麒麟、聯發科、蘋果等。以多多自走棋為例在中低端處理器驍龍435機型上表現基本良好,但對標驍龍中高端處理器驍龍665和驍龍650的華為麒麟710和helio p20的表現卻差了很多。cpu排行數據來自:(http://www.mydrivers.com/zhuanti/tianti/01/)。這時我們就需要針對不同的手機品牌處理器進行測試對比分析,將數據提供開發便於優化解決。

查驗客戶端性能也需要設置不同的場景,還是以自走棋為例,基本將游戲划分為局內和局外兩種場景,局外主要是各個外圍系統的功能,如商城,通行證,倉庫等。局內主要就是戰斗了,這也是對性能消耗較大的地方,我在做對比分析的時候會將主要信息粘貼至共享文檔,便於快速對比分析,需要詳細數據時在查看鏈接,近期所涉及的主要為局內操作場景,針對不同優化包進行同一個流程輸出客戶端性能報告,數據保存共享文檔便於項目組查看。

wCtEBd.md.png

作為一名游戲測試,不僅在版本設立之初或者性能專項優化時需要關注性能數據,在平時的版本迭代也需要計划性的做性能測試。比如每個大版本的迭代,或者有引擎升級,美術效果迭代等重大改動,性能測試就變得非常重要,能防止這些重大改動導致的性能偏差盲區,及時發現問題專項去解決優化。


PS:

我們是行者AI,我們在“AI+游戲”中不斷前行。

如果你也對游戲感興趣,對AI充滿好奇,那就快來加入我們(hr@xingzhe.ai)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM