當前位置:
首頁 > 最新 > 從Crasheye項目看開發團隊如何建立質量反饋機制

從Crasheye項目看開發團隊如何建立質量反饋機制

導讀ID:TOP100case

導讀:Crasheye項目是金山西山居質量中心對移動遊戲質量反饋、分析、統計的一個實踐案例。該項目立足於移動端,在結合了西山居多年端游崩潰分析平台開發經驗的基礎上完成的項目,並且正逐步從適用於移動遊戲拓展到適用於移動端各類APP的崩潰反饋、分析、統計和監控,進而協助開發人員定位、制定產品缺陷的整套解決方案。

(全文共2915字 預計閱讀時長:4分鐘)

Crasheye項目的起源

在傳統的端游時代,西山居內部建立了一套崩潰收集系統,主要是支持C++語言。使用線程注入的方式實現對端遊客戶端崩潰的捕獲,然後把捕獲到的崩潰信息上傳到服務端,進而在服務端進行批量的分析,並對分析結果進行簡單的排序。

隨著移動互聯網的發展,西山居作為國內領先的遊戲研發廠商已研發和推出多款移動端遊戲。為了更好的跟蹤自研遊戲的質量數據、崩潰錯誤、腳本錯誤等各類問題,我們迫切需要建立一套針對移動平台遊戲的質量反饋、分析、統計系統。

移動平台的挑戰

起初,我們在公司內部以某一移動遊戲項目作為基礎,直接參与項目研發,在項目中嵌入崩潰收集代碼,然後對上傳的崩潰信息進行分析和簡單數量統計,並且以端游的崩潰分析系統作為查看平台展示。

這套移動平台遊戲崩潰追蹤雛形方案建立之後,隨著公司業務的推進,平台遇到了越來越多的困難和挑戰,急需建立一套完善的專門針對移動平台遊戲的質量追蹤方案:

兼容iOS、Android平台;

同時支持Lua、C#、Java等腳本語言;

支持Unity3D、Cocos2D和Unreal遊戲引擎;

同時手游的質量追蹤方案,和手游本身一樣還需要兼具很多移動互聯網的特性,比如需要兼顧各種系統版本、各種手機開發商的ROM、各種網路環境等多場景的兼容性問題;

移動平台的遊戲相對端游來說周期短、更新快、產品多、渠道廣。

為了適應上述環境和要求,我們把這套系統升級為一個「產品」級別的系統來進行徹底改進,而不再是一個僅僅「內部」使用的平台,它是一個定位於具備通用性的「產品」。

解決思路

結合移動互聯網的特點,我們一開始就把這套升級後的產品——Crasheye核心點定位在「快」字上,我們希望能夠做到:

快速接入;

快速分析、統計問題;

快速展示、定位問題;

快速反饋。

結合移動端的特點,利用Crasheye系統作為基礎,把移動遊戲的質量跟蹤形成一個閉環,如圖1所示。

圖1 質量跟蹤閉環

Crasheye項目的實踐過程

4.1快速接入

Crasheye是基於某一手游項目研發的崩潰收集系統,所以當時採取了直接在客戶端嵌入代碼的方式。但是,這樣的方式不利於在其他項目推廣使用,接入代價高,也不利於接入者的快速使用。於是我們把客戶端的崩潰收集代碼封裝為SDK,並且在Android下可以使用一行代碼即可接入,極大簡化了接入流程,如圖2所示。

圖2 一行代碼接入

在iOS下,為了更進一步方便接入,我們還提供了Xcode的插件,支持接入代碼的自動撰寫、插件在線更新等功能,如圖3所示。

圖3 Crasheye SDK iOS插件

經過改進形式以及接入的方法,Crasheye的接入易用性得到了很大的提高。

4.2快速分析、統計問題

完善異常捕獲機制

在完成Crasheye接入改進的同時,為了適用於更多的項目,我們逐步改進了SDK在客戶端的崩潰捕獲方法,主要是完善了對Cocos2D、Unity3D遊戲引擎的支持,並在國內率先增加了對Unreal引擎的支持;同時也改進了對Java、Lua等腳本語言的回溯支持,配合服務端的崩潰分析系統改造,實現了對多種引擎、多種腳本語言崩潰異常的捕獲和快速分析能力。如圖4所示。

圖4 Crasheye捕獲的Lua腳本異常

深入mono層,獲得C#腳本的代碼堆棧

在針對主流的遊戲引擎做崩潰捕獲同時,我們還進行更加深入的問題定位和跟蹤策略,發現在使用Unity3D引擎開發的遊戲時候,會碰到以下問題:遊戲經常會出現莫名其妙的閃退。而當我們嘗試回溯C++的堆棧時候,發現未能達到我們想要的效果。在堆棧中也沒有發現任何與我們腳本相關的代碼信息,宕機堆棧信息只能表現為Unity3D底層處理異常。

為了解決這個問題,我們採用了下面的手段:

當異常觸發的時候,嘗試提供給C#的一個生存介面,並獲取C#自身的運行狀況;

通過mono層的信息,回溯當前正在運行的C#代碼堆棧。如圖5所示。

圖5 Crasheye的mono層C#腳本堆棧回溯

4.3快速展示、快速定位問題

為了更好的展示崩潰異常信息,讓開發者快速地利用Crasheye定位問題,我們重構了系統的展示頁面。

增加了大量直觀的多維度數據報表

圖6展示了崩潰趨勢、啟動數/人數/崩潰次數統計,圖7為各個版本崩潰對比;圖8應用版本分布、設備分布等。

圖6 崩潰趨勢

圖7 各個版本崩潰對比

圖8 應用版本分布

上報內容的多樣化收集和展示改進

除了常規的崩潰堆棧信息、腳本異常信息的收集和展示之外,我們還特意為手游的接入提供了一些特色上報內容和展示,比如支持用戶標識和渠道號的上報,可以讓開發者使用的時候直接定位問題到某個渠道的某個玩家ID。

為讓開發者獲得更多的客戶端異常時的現場環境,我們從SDK到統計分析、頁面展示,都添加了支持logcat日誌、麵包屑(打點信息)、自定義數據等多種環境狀況的上傳和展示,如圖9所示。

圖9 上報記錄

4.4快速反饋問題

上報策略雲端化

為了確保Crasheye適合移動端特性,我們還特意使上報策略實現了雲端化。支持從服務端動態下發上報策略至客戶端,客戶端也支持多種網路環境的動態適應策略,從而有效的控制上報流量以及統計壓力、分析壓力,在使用最少網路流量和資源情況下,獲得最多的有用信息。

採取分布式伺服器

為了快速發現項目問題,讓開發者及時對問題作出判斷和反映,Crasheye對崩潰信息的收集、分析、統計服務,均以接近於實時(分鐘級)的方式進行反饋和展示。隨著接入的公司內外項目增多,服務端性能逐漸成為瓶頸,於是我們重新調整了服務端架構。

分布式的伺服器支持動態擴展;

採用Mongo資料庫+ Redis內存資料庫。

經過調整服務端架構,使Crasheye服務端承載得到極大的提升,如圖10所示。

圖10 Crasheye分布式伺服器

提供項目崩潰告警和日報功能

為了讓開發者快速、及時獲知項目的重大異常情況,Crasheye還特意提供了項目的崩潰告警功能,通過設置告警閥值(圖11),讓Crasheye在項目出現異常情況時觸發閥值報警,提醒開發者關注異常。同時也提供了日報功能用以反饋每日的項目概況。

圖11 告警設置

Crasheye項目的實踐項目

5.1 西山居自研的卡牌類遊戲——全民神將

界面如圖12所示。

圖12 全民神將

該項目採取了Cocos2D引擎以及大量Lua腳本,接入Crasheye用於項目Java類的崩潰監控以及Lua的腳本異常監控,如圖13、圖14所示。

圖13 Lua的腳本異常監控

圖14 異常詳情顯示

5.2手機社交聊天應用

界面如圖15所示。

通過接入Crasheye,該APP實現了日常運營過程中

對每次版本更新後的崩潰情況監控。圖16是該APP實際運營過程中某次版本更新之後,出現的受影響用戶率持續上升現象。

圖15 社交聊天應用

圖16 APP崩潰趨勢

項目開發人員通過查詢最近一周的數據,快速定位到具體影響的崩潰問題,並且利用Crasheye提供的堆棧信息修復了該問題。發布新版本後,再通過Crasheye進一步監控到該問題的崩潰數據已開始回落,如圖17所示。

圖17 崩潰詳情

5.3辦公軟體WPS

WPS項目的iOS移動版本通過接入Crasheye,使用了Crasheye的符號文件上傳功能,如圖18所示;實現了對崩潰問題的細緻定位,直接把崩潰問題定位至具體的代碼行,如圖19所示。大大方便了開發者對問題的修復,提高了問題修復的效率。

圖18 符號文件上傳功能

圖19 堆棧信息

Crasheye項目的現狀

Crasheye項目自從上線以來,為了適應各類手游項目及APP項目需求,一直在進行持續的改進方方面面,包括SDK到後台分析、統計,到頁面展示等。我們希望能夠為各個移動開發者提供免費且專業的崩潰分析、統計、反饋服務,免費使用,讓更多的開發者收益。

目前Crasheye已經為數千款移動應用提供服務。

活躍用戶數超過千萬,客戶端的日啟動次數超過10億次/日。

Crasheye後續會持續迭代改進,進一步提供多種形式的質量跟蹤和改進自身平台。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 壹佰案例 的精彩文章:

360手機衛士的敏捷測試模型都有什麼特點?
騰訊大神教你用Hook技術解決因java native導致的crash
魅族應用商店伺服器端架構實踐
從騰訊遊戲的成功看產品經理如何尊重用戶反饋
我們該怎麼給DevOps下個定義?

TAG:壹佰案例 |

您可能感興趣

蘋果正在開發iPhone數據機 已組建團隊
蘋果以組建團隊自行開發iPhone數據機
蘋果Macintosh設計團隊構想的未來AirPods
使用Jira software+Structure實現大規模跨團隊項目管理
重磅!美圖技術團隊發布開源 Ethereum DPoS 實現
Facebook推出Oculus Start計劃 幫助小型VR開發團隊成長
蘋果iPhone X iOS 被國內Keenlab團隊成功越獄
醜聞之後的Cambridge Analytic,團隊核心成員現在過得如何?
蘋果成立新的 AI/ML 團隊,由 John Giannandrea 領導
Magic Leap更新Create、展示開發團隊心路歷程
美圖團隊發布開源 Ethereum DPoS 實現
Crunch團隊分享SpringCloud微服務的使用經驗
《Slightly Heroes》開發團隊採訪:好玩有趣的VR才是重點
內容必須收費:前Oculus Story Studio的團隊創建新VR動畫工作室
蘋果WebKit團隊:發布 Safari 瀏覽器反跟蹤策略
Facebook AI 團隊人員調整:Yann LeCun 不再擔任實驗室主任
Facebook團隊重大人員調整!Hugo Barra不再擔任產品副總裁
蘋果AR團隊經理離職 曾參與開發HoloLens
Oculus VR團隊開源DeepFocus框架
微軟Midori團隊前成員推出開放源代碼雲開發公司Pulumi