任何性能指標越界或造成 APP 崩潰,優酷通用性能測試一招搞定

任何性能指標越界或造成 APP 崩潰,優酷通用性能測試一招搞定

作者 | 阿里文娛技術專家 翀宸

出品 | CSDN(ID:CSDNnews)

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

客戶端性能測試的需求和重要性

客戶端性能的重要性不言而喻,一方面影響著客戶端整體質量穩定性,任何性能指標的越 界都可能造成整個 APP 的崩潰,例如 CPU 使用過高導致應用 hang 住,內存佔用過多導致 OOM 等等;另一方面,性能影響用戶體驗,例如頁面加載的速度、划動瀏覽的流暢度等等,對於用戶的使用和留存意願有直接的影響。本文將詳細介紹優酷通用性能測試解決方案的落地情況。

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

通用性能測試解決方案的建設

常見的性能數據採集方式是通過應用內置的接口進行數據上報,整體獲取線上存量 APP 的 數據,如啟動時間、頁面加載時間、頁面 FPS 等等。但是以此作為版本發佈的質量指標並指導 性能優化的動作還不夠細緻。大盤數據更適合給出如 90%區間值等指標來指導整體性和方向性 的調整動作,但是每個版本迭代中的微小變化,很難反映出來。同時對於有競品及行業數據對比的情況,大盤數據也不適用。為此優酷技術質量部著手建設了性能測試解決方案。

第一步是確定需要滿足哪些測試場景的性能測試需求。性能測試通常覆蓋兩種測試場景:

  1. 獲取時間維度的數據,如啟動時間、頁面加載時間、播放起播時間等等;

  2. 獲取基礎性能數據,如 FPS、CPU、內存、IO 等等指標。作為以視頻播放為主的應用,優酷的性能測試還需要關注播放場景下的特定數據採集,例如卡頓次數和播放時長等。

基礎性能數據通常可以直接從手機中獲取,Android 及 IOS 均提供了一些命令行工具或者系統接口幫助獲取這類信息。對於基礎性能數據的採集,只需把自動化執行過程和數據採集過 程有機的整合起來,做好數據同步的同時減少數據採集對性能的影響即可。

加載時間維度數據的獲取要相對複雜一些。業界比較通行的做法是利用視頻分幀和圖像分 析相結合的方式計算時間維度的數據。相較於通過應用內置接口上報數據或者分析日誌的方式 獲取時間信息來說,這種方案更加複雜,但是更加接近真實用戶的實際使用場景,因此數據更 加準確。為了最大限度的保證用戶體驗,優酷的性能測試方案從一開始就確定使用視頻分幀分析的方案。

實現視頻採集分幀的自動化性能測試,需要具備 3 個條件:

  1. 穩定的自動化驅動能力;

  2. 準確的圖像識別和強大的分析能力;

  3. 確保整個流程可以自動化運轉的平臺調度和服務能力。除此之外,性能測試的能力若想真正發揮作用,被開發和測試團隊所接納,還需要制定一套切實可行的性能測試標準和執行流程。

在優酷技術質量部,客戶端測試平臺負責測試設備和自動化測試任務的管理和調度;魔鏡 服務負責視頻的解析和圖像計算。在性能測試早期的實現方式中,移動架構團隊和研發效能團 隊配合來全權負責性能測試的需求,根據測試設備保有情況隨機選擇測試設備,覆蓋少量加載 時間驗證場景,形成了如下的一種耦合方式。

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

很快我們發現這種配合方式並不理想。首先,整個流程沒有業務方參與,測試效果和測試 場景與業務需求脫節;其次,優酷客戶端測試平臺與魔鏡服務耦合過深,雙方在進一步建設過 程中束手束腳,難以發揮各自特長;再次,缺少業務方的主導,整體能力缺少落地的保障,技 術團隊維護測試能力成本非常高。為此,我們特地協同業務需求方梳理了整體需求,重新制定 了參與的各方和任務排布,形成了一套非常明確的配合機制(如下圖所示)。

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

在這個配合模式中,業務方、客戶端測試平臺和魔鏡服務各司其職,各自專注在自己擅長 的領域,形成了 1+1+1>3 的協同發展模式。

基於這種模式,我們開啟了通用性能測試的建設。這包括幾部分內容:

  1. 測試驅動方法標準化,提供雙端(Android 及 iOS)一致的自動化執行方案;

  2. 測試環境標準化,為保證性能測試的準確性,全部輔助測試手段採取外置化(例如視頻 採集不通過錄屏而通過外部拍攝的方式),同時對測試環境溫度、網絡環境,以及視頻拍攝所需 的亮度、拍攝可控性等提出了嚴格的要求;

  3. 測試方案標準化,選用什麼樣的設備,測試哪些場景,以及執行過程和結果採集點的制 定均實現標準化規範化;

  4. 測試流程服務化,整個測試的執行環節通過平臺化的能力以服務的方式提供出來,可以 和其他平臺和流程服務對接,以便快速在業務平臺和版本發佈流程中落地。

不同業務方原本具有不同的自動化能力選擇,整體驅動模式不統一,測試用例管理和適配 比較困難,複用性非常不理想。推動測試驅動方式標準化,各方統一基於一套方案進行開發是 推動整體性能測試標準化的基礎。基於對測試需求的分析,我們選擇了螞蟻集團基於 Appium 改良而來的測試框架 Totoro,並對 Totoro 的接口按照優酷的測試需求進行了二次封裝,實現了 自己的自動化測試驅動框架。

在測試方案標準化上,我們優先確定了測試設備的配置。為了更好的量化不同機型上的性 能表現,我們基於優酷在線上佔比 TOP30 以內的機型,按照其性能打分的情況進行篩選,最終確定高、中、低端 3 款機型作為測試承載機;測試場景的選擇和建設則參考用戶核心使用場景 進行篩選,確保用戶體驗得到最大化的保障。

測試環境標準化建設是通用性能測試方案投入較多的部分。我們知道溫度對手機的性能影響比較大,有些機型甚至會在高溫下出現降頻保護以及充電保護等情況。測試溫度的處理極大 的影響著測試的可重入性,決定了一種測試方案是否可以被接受。考慮到外部拍攝的需求,測試環境需要是一個相對密閉的環境以確保環境亮度等符合拍攝需要,這就對散熱控溫提出了更高的要求。

在拍攝設備的選擇上,需要同時考慮拍攝質量、拍攝的可控性及軟硬件成本。拍攝質量不 用贅述。拍攝的可控性是指拍攝設備可配置和調試的程度,因為被拍攝的場景和被攝機的型號 眾多,拍攝設備必須具備強大的靈活性並保持高質量的拍攝效果,例如:

  1. 最基本的拍攝參數例如分辨率、碼率、比特率、編碼格式等等需要可調;

  2. 高級設置如景別設置、曝光參數調整、對焦能力調整、曝光和對焦的鎖定能力等;

  3. 合理的軟硬件成本。 也許有讀者會覺得這麼複雜和麻煩,為什麼不用錄屏的方式,豈不方便。經我們測試,錄屏方案在低端機型上會對性能數據帶來 10%甚至更多的影響,而且這個偏差會跟著測試場景的變化出現浮動。這對於準確度要求較高的性能測試來說幾乎是不可接受的。因此,優酷的通用 性能測試從起步階段就選擇了外部拍攝的方案。

經過對測試環境和拍攝方案的調研,首批的通用性能測試環境基於硬板紙盒和千元級別的安卓手機搭建起來了,效果如下。

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

選用紙盒的原因是紙盒可以快速的完成測試環境的組裝,並且可塑性非常好。選用安卓手 機作為拍攝裝置是在比較了多個攝像頭、專業拍攝裝置以及多款安卓手機的拍攝效果和可控性 之後做出的選擇。利用上面的這套環境,在實驗室全程空調+風扇的照顧下,短時間內通用性能 測試基本滿足了業務測試的需求。然而,這套環境的缺點也非常明顯:不夠標準化,對外部環境依賴較高。為此,我們又開發並搭建了新的測試環境,提供了一套可插件化擴展的標準化測試支持裝置。

測試設備和拍攝設備的部署在這套環境中均是標準化的,在環境裝置內部散熱組件的加持下,即便在外部環境溫度 30 度以上的情況下,測試環境中的環境溫度和被測設備的電池溫度均 保持在 30 度左右並且非常平穩。啟動或停止散熱裝置情況下被測設備電池溫度的變化情況可以 參考下圖,整套環境在溫度保持方面的效果是非常明顯的。

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

整個通用性能測試方案基於優酷客戶端測試平臺得到了比較好的平臺服務化;魔鏡也完成了從本地化工具到線上服務化的轉化。通用性能測試解決方案以服務化的形態整體提供出來,非常易於被業務方的測試平臺所調度。

通用性能測試可以實現的測試場景較多。加載時間類的測試可以按階段細分。例如一次啟動,從應用首頁框架開始加載,到部分組件加載完成,到整體加載完成,把這個過程分階段展示出來,可以有效幫助開發團隊分析性能瓶頸問題。某個場景測試結果的效果樣式如下:

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

對於基礎數據相關的測試,優酷客戶端測試平臺提供了完善的圖形化的展示形式,在數值維度提供了均值和標準差,便於業務方對結果進行綜合判斷。一個 DEMO 場景下 FPS 及丟幀率採集的示意結果如下圖:

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

一個多次採樣場景下明顯出現內存洩露的內存採集效果如下圖:

任何性能指标越界或造成 APP 崩溃,优酷通用性能测试一招搞定

總結

目前優酷移動架構團隊在建設性能測試和性能問題分析整合的項目,其目的是在完成性能測試的同時,給出潛在的性能問題建議,幫助開發快速定位和解決性能問題。同時我們在進一步完善平臺化建設,爭取提供更多維度的結果聚合、分析和展示。在標準化環境建設方面,我 們還在進一步完善配套的插件環境與模型,爭取讓測試環境更加齊備、配置型更高、成本更低。

利用通用性能測試,開發和測試團隊可以非常方便了解到性能驗證的結果以問題。基於這套解決方案,優酷技術質量部支持了絕大多數業務的性能測試需求,包括優酷主客戶端在雙 11 前的性能專項優化和直播及各項配套業務的性能驗證,發揮了巨大的作用。這套測試方案不僅 僅適用於優酷,對各種客戶端的性能驗證均可以發揮作用。


分享到:


相關文章: