由專注手遊的雲測試平臺TestBird撰寫的《2014中國手遊相容性測試白皮書》(以下稱白皮書)正式釋出。這是全球首次針對手遊相容性問題進行研究和解析的白皮書,首次為業界定義了10大手遊相容性問題,完整展現了手遊相容性問題現狀,系統詮釋了手遊相容性問題的分類,深度解析了手遊相容性問題的根源,並提供了諸多的真實有效的解決建議。

通過白皮書,也許你能更清楚地瞭解上述問題的答案:作為手游上線前必經的第一關——相容性測試,遠非想象的那麼簡單。

  16項指標,首次定義手遊相容性

到底什麼是相容性問題?用哪些指標可以準確考核和定義相容性問題?哪些效能指標會影響到手遊相容性?以往,我們單純地將手遊相容性測試等同於安裝和啟動測試。可是如此的草率和不專業,意味著在手游上線前的第一步,您就已經錯失先機。

TestBird已經測試了近3000款手機遊戲,發現134812個相容性問題,通過對這些問題進行深入分析,TestBird首次在行業內對影響手遊品質的相容性問題和效能指標進行了明確的定義。

白皮書裡將相容性問題分為10大類,分別是安裝失敗、啟動失敗、遊戲閃退、遊戲卡頓、遊戲卡死、資料異常、UI異常、遊戲連結異常、程式異常、遊戲黑屏。效能指標則包括CPU佔用率、記憶體佔用值、IO等待率、溫度、啟動時延和流量共6項。

  相容性問題釋義

安裝失敗遊戲app在某款手機上進行安裝操作,但是沒有安裝成功。

啟動失敗遊戲app安裝成功,但是無法啟動,或者啟動後馬上自動退出。判斷標準:啟動後,檢測遊戲畫面是否可見。

遊戲閃退在遊戲過程中程式崩潰導致意外退出。判斷標準:崩潰日誌與遊戲畫面結合分析。

遊戲卡頓在遊戲過程中執行不流暢,畫面切換卡屏。主要原因是CPU或者記憶體佔用過高,需要CP進行優化。

遊戲卡死手機系統無法正常執行,不接受輸入事件,但遊戲沒有閃退。遊戲觸發了手機的系統級BUG,引起系統崩潰。

遊戲黑屏手機系統正常執行,但遊戲無法正常執行,沒有顯示任何UI介面。

資料異常遊戲客戶端與伺服器資料互動異常,但是連結未斷開。通常是手機遊戲與伺服器互動介面設計沒有經過充分驗證,導致異常資料在伺服器與手機遊戲之間傳輸。

UI異常UI介面顯示紊亂。主要原因是解析度差異或者遊戲場景切換邏輯程式碼書寫有誤。

遊戲連結異常與伺服器互動連結發生異常。通常由於開發人員沒有考慮到網路程式設計中的異常,或壓力過大引發伺服器崩潰。

程式異常遊戲執行時出現異常提示或現象。

  效能指標解釋

CPU佔用率(%)遊戲程式佔用的CPU資源,cpu使用率過高,說明遊戲比較耗電,而且容易卡頓。

記憶體佔用值(kb)遊戲程式所消耗的手機記憶體,記憶體佔用高容易引起遊戲卡頓甚至閃退。

IO等待率(%)遊戲程式進行IO等待所佔用CPU時間百分比,佔用率過高說明遊戲進行了大量的io操作,例如檔案讀寫。

幀速率(fps)遊戲引擎每一秒內重新整理的幀數,反映了遊戲畫面流暢程度。

溫度(°C)通過android溫度感測器獲取的手機溫度,跟手機cpu佔用率成正比。

啟動時延(ms)對遊戲發起啟動指令,到真正進入遊戲第一個介面所消耗的時間,反映了遊戲的載入速度,跟遊戲資源包大小有關。

流量(bps)遊戲執行過程中所消耗的網路流量,主要集中在遊戲與伺服器互動過程中產生的網路消耗。

  1款遊戲52個相容性問題,損失高達六位數

在手遊產業,任何一款手遊產品都必須經過相容性測試後方可上線。然而,由於傳統的相容性測試周期長,測試成本較高,加上相容性問題屬於隱型問題,不及遊戲畫面、遊戲內容和操作設計等因素那般具象,導致相容性問題長期未受到手遊開發者的重視,但因相容性問題導致的使用者流失和成本損失,卻是以數十百萬計的。

《2014中國手遊相容性測試白皮書》的研究資料顯示,平均每款遊戲存在52個相容性問題,因為不相容造成的使用者流失率達21%,假如每款遊戲20萬使用者,按照行業常規,一個使用者的匯入成本為10塊,那麼每款遊戲因為相容性問題導致的成本損失將達到20萬人*21%*10元/人=42萬元。

從如此高額的成本損失可以看出相容性問題已經刻不容緩,成為手遊開發商迫待解決的關鍵問題。

 12類遊戲,相容性問題各有不同

白皮書打破了傳統手機相容性測試粗糙的分析方式,利用TestBird手遊自動化雲測試平臺強大的遊戲分類能力,在對卡牌遊戲、策略經營、角色扮演、塔防遊戲、跑酷競速、飛行射擊、消除遊戲、棋牌撲克、動作格鬥、體育運動、虛擬養成、休閒益智等12個不同類別的遊戲進行逐個分析後發現,整體上來說動作格鬥和角色扮演類相容性問題最多,但是在每個具體的問題上,每類遊戲確實各有不同。

14230305199564
  通常意義上,幾乎所有人都認為角色扮演和動作格鬥類RPG重度遊戲應該是流量消耗最大的一類遊戲。可是通過白皮書的研究卻發現,平均流量消耗最大的實為虛擬養成類中度遊戲,而RPG重度遊戲甚至連前三都排不上。

白皮書的報告還顯示,在CPU佔用率上,體育運動類遊戲最高,棋牌撲克類最低;在啟動時延上,飛行射擊類遊戲最大,體育運動類最小;在記憶體佔用上,動作格鬥類遊戲最高,棋牌撲克類最低;在IO等待率上,酷跑競速類遊戲較高,體育運動類卻較低;在手機平均溫度上,卡牌遊戲最高,體育運動類最低。

  37%+19%,閃退和卡死才是最主要的問題

過去由於傳統的相容性測試方式僅僅只是測試安裝和啟動兩個專案,測試者對遊戲啟動後將會發生的事情一無所知。也正是因此,通常的認知中手遊相容性問題最突出的往往是安裝失敗和啟動失敗。

然而現實是,隨著安卓手機的快速發展,以往的問題重災區安裝、啟動問題在所有問題中的佔比越來越低,絕大部分問題是在遊戲執行後發生的。而要發現這些問題,就必須要深入到遊戲內部進行測試。

TestBird採用了全球領先的鷹眼引擎測試技術,在深入近3000款遊戲內部進行測試後,對發現的134812個相容性問題進行了統計分析,發現遊戲閃退、遊戲卡死、UI異常才是相容性問題佔比最高的3大類問題。其中游戲閃退現象最為嚴重,佔比高達37.18%,遊戲卡死現象佔比則達到了18.53%。

14230305342091
  816款手機,主流品牌相容性問題較少

市面上,安卓系統的手機品牌高達數十個,從三星、聯想、華為等主流品牌到其他非主流的品牌手機,到底哪個品牌的手機相容性較好?不同手機記憶體大小對手遊相容性影響到底又有多大?另外,不同品牌手機的CPU也有所異同,那麼不同的CPU是否也會影響到相容性問題的發生?

TestBird通過對816款測試手機,歷經近3000款遊戲測試後發現:對比各品牌的相容性問題數,主流品牌的相容性整體好於非主流品牌。相容性問題最少的品牌當屬三星,每終端每款遊戲的失敗率(即平均每款終端在每款遊戲上的不相容率)僅有3.82%,聯想和小米的相容性也表現優異,失敗率不足5%。而其他非主流品牌的失敗率則高達10%以上,相容性問題非常嚴重。

14230305453271
  在記憶體大小對手機遊戲的相容性的影響方面,白皮書的研究表明,記憶體越大出現相容性問題越少,256M的相容性問題最多,相容性問題檢出率高達82%。而隨著記憶體的加大,相容性問題發生概率明顯呈現出逐步減小的趨勢。

14230305564774
  而在不同CPU品牌在相容性問題的表現上,展訊出現的相容性問題佔比最大。相容性表現最好,檢出率最低的,並非我們所熟知的聯發科和高通兩大類CPU品牌——當然,它們二者表現也不錯——而是海思和Mmarvell。

14230305758936
  *相容性問題檢出率:即相容性問題的數量佔該品牌總數的比值。

此外,白皮書還針對不同遊戲引擎的相容性問題發生概率進行了研究,發現自定義引擎出現的相容性問題最多,檢出率達32%,而常用的cocos2D-X和unity3D遊戲引擎的相容性問題的檢出率分別是28%和27%,相對錶現較好。

14230305877273
  16條建議,提供完整相容性問題解決方案

話到此處,或許你已經開始明白相容性問題遠非想象的那麼簡單。可是,這些相容性問題究竟該如何解決?

“我們將報告奉獻給廣大的手遊CP、發行和渠道,希望能給行業分享一些經驗和乾貨,打造更精品的手機遊戲。”這是報告開頭的第一句話,透過這句話,能瞭解到TestBird釋出這份白皮書的初衷。而在長達47頁的白皮書最後,TestBird也確實毫無保留地針對各項相容性問題,敘述了詳盡的解決方案。

如針對閃退、卡死、UI異常三大手遊相容性問題,並給三類問題給予詳盡的解決建議,但因篇幅有限,現只能在此做簡單綜述,以饗同行:

閃退問題出現場景各不相同,常見原因為記憶體不足、溫度過高、系統不相容、cpu不相容等。開發人員可以根據問題現象,分析logcat和BUGreport日誌來定位原因,找到閃退原因後根據需求優化。

遊戲卡死現象很像ANR(application not response)。系統在一定時間內發現UI thread沒有響應,就會出現彈框報錯。比如輸入事件,等待通常是5秒。主要原因是在UI thread做了不必要且費時的操作。比如訪問網路操作、本地資料讀寫操作、遊戲計算下一幀資料操作。解決方案是把這些費時用非同步的方式完成。UI thread只做響應使用者操作以及繪製UI的事情。開發過程中可以StrictMode來檢查一些潛在ANR的程式碼風險。開發完以後,可以使用android工具Systrace和Traceview對遊戲的效能瓶頸進行分析,避免ANR。

而遊戲卡頓問題,通過對10016個UI問題的統計和分析,TestBird認為導致UI異常主要有兩方面的問題:

1)和安卓手機解析度相關,如手機解析度尺寸,遊戲上控制元件排版時需要考慮解析度,避免使用pixel unit,考慮使用dp(Density-independent pixel)、sp等.可以瞭解多尺寸多密度螢幕支援等相關文章。

2)和遊戲引擎相關,如Unit3D引擎遊戲,使用系統字型檔,容易出現在OPPO等手機終端上,字型無法顯示,原因為部分安卓廠商深度定製安卓系統,導致部分U3D引擎遊戲,呼叫的系統字型不能顯示。解決建議為使用其他字型庫。