1. 移動端性能監測的主要途徑
移動端性能監測的主要途徑有三種:一是開發工具自帶的監測工具,例如xcode自帶的instrument,Android studio自帶的Android monitor;二是使用第三方SDK;三是自行開發檢測代碼。三種途徑各有利弊。
開發工具自帶的監測工具,包含了很多強大的監測功能,且持續迭代更新,使用方便,為開發階段的性能測試提供強有力的支持。但是只能在開發工具內部使用,不能獨立使用在其他產品周期內。
專門用于性能監測和用戶行為、屬性分析的第三方SDK,比如Bugly,OneAPM,聽云,Firebase,把它們接入項目可以進行性能監測,這些第三方的工具工作原理都是類似的:引入SDK和相關庫,在程序入口處啟動監測,在關鍵函數之前和之后自動埋點記錄上報。然而使用第三方SDK的缺點也是非常明顯的,首先是可定制性差,我們需要的一些指標無法收集,SDK收集的我們又不完全需要,很有可能為了簡單的幾個值,讓安裝包增大許多。除性能指標外,SDK是否統計了其他數據,我們并不完全知道,涉及到安全性問題。
自行在項目中植入監測代碼的優勢就是安全可靠,并且可定制化指標,有針對性。缺點就是需要開發成本,而且在代碼中監測App的性能本身可能也會帶來額外的性能損耗。
2. 移動端核心性能指標
App的性能問題包括崩潰、網絡請求錯誤或超時、響應速度慢、列表滾動卡頓、流量大、耗電等。而導致App性能低下的原因有很多,除去設備硬件和軟件的外部因素,其中大部分是開發者錯誤地使用線程、鎖、系統函數、編程范式、數據結構等導致的。即便是最有經驗的程序員,也很難在開發時就能避免所有導致性能低下的"坑",因此解決性能問題的關鍵是在于能不能盡早地發現和定位這些"坑"。
衡量一個App的性能有很多方面的指標,不同App的特征會有不同的側重指標。其中,核心的性能檢測指標(普遍會監測的指標)有:
- 內存占用量(MEM)
- CPU使用率(CPU)
- 頁面刷新幀率(FPS)
- 網絡狀況(Net)
- 流量消耗(Flow)
- 卡頓(Flag)
- 崩潰(Crash)
- 啟動時間
3. 不同迭代周期對移動端性能測試的需求
一個App的迭代生命周期,可大體分為開發期、測試期、線上期。
- 開發時期,需要能夠檢查性能異常點并通知給開發者;
- 測試時期,需要使用測試工具產生性能測試報告;
- 上線時期,通過監控平臺上報性能數據,實現線上問題定位和追查。
不同的迭代周期對于測試工具具有不同需求:
- 開發和測試階段:直觀看到性能測試的結果,一個可以全面檢測App性能指標的本地監測工具就可以滿足需求。
- 上線階段:我們對于用戶使用的應用無法做到像針對測試階段的應用的可控程度,所以需要通過引入性能監測SDK的方式,在運行階段將運行在用戶設備中的應用性能指標上傳至監控平臺,便于監測應用線上的性能表現并定位問題。
4. 主流移動端性能測試工具簡述
(1) Xcode-Instrument
Instrument是Apple官方提供的一個強大的內置在xcode中的性能調試工具集。其中,Activity Monitor(活動監視器):監控進程級別的CPU,內存,磁盤,網絡使用情況,可以得到應用程序在手機運行時總占用的內存大小;Core Animation(圖形性能):這個模塊顯示程序顯卡性能、CPU使用情況以及頁面刷新幀率;Network:用鏈接工具分析程序如何使用TCP/IP和UDP/IP鏈接;Energy Log:耗電量監控。Instrument主要用于在調試過程中隨時發現問題,及時優化,但是這個工具只能供有應用源碼的程序員使用,無法測量用戶真實使用場景下的性能。
(2) Android monitor
Android Studio內置了四種性能監測工具Memory Monitor、Network Monitor、CPU Monitor、GPU Monitor,可以使用這些工具監測App的狀態。Memory Monitor工具主要是用來監測App的內存分配情況,判斷是否存在內存泄漏;Network Monitor是用于顯示App網絡請求的狀態;GPU Monitor工具可以將進行UI渲染工作所花的時間表現出來;CPU Monitor可以對代碼中的方法進行檢測。
(3) Matrix
Matrix是一款微信研發并日常使用的應用性能接入框架,支持iOS, macOS和Android。 Matrix 通過接入各種性能監控方案,對性能監控項的異常數據進行采集和分析,輸出相應的問題分析、定位與優化建議,從而幫助開發者開發出更高質量的應用。數據監測結果存儲到后臺,沒有直觀的展示界面。Matrix-iOS/
macOS主要監控崩潰、卡頓和爆內存。Matrix-android監控范圍包括:應用安裝包大小,幀率變化,啟動耗時,卡頓,慢方法,SQLite 操作優化,文件讀寫,內存泄漏等。
(4) GT
GT(隨身調)是直接運行在手機上的"集成調測環境"。利用GT,僅憑一部手機,無需連接電腦,即可對App進行快速的性能測試(CPU、內存、流量、電量、幀率/流暢度等)、開發日志的查看、Crash日志查看、網絡數據包的抓取、App內部參數的調試、真機代碼耗時統計等。
GT支持iOS和Android兩個手機平臺,其中:
- iOS版是一個Framework包,必須嵌入App工程,編譯出帶GT的App才能使用;iPhone和iPad應用都能支持。
- Android版由一個可直接安裝的GT控制臺App和GT SDK組成。GT控制臺可以獨立安裝使用;SDK需嵌入被調測的應用、并利用GT控制臺進行信息展示和參數修改。
(5) Emmagee
Emmagee是一款實用、方便的性能測試工具,適用于指定的Android App,它可以監控CPU、內存、網絡流量、電池電流和狀態(某些設備不受支持)。此外,它還支持自定義收集數據的時間間隔,在浮動窗口中呈現實時進程狀態等。
安裝之后,打開Emmagee會顯示出目前系統已經安裝的應用(可在設置中配置間隔)。選擇一個應用之后,點擊"開始測試"按鈕,Emmagee會自動啟動被測應用,并在最上方顯示流量、CPU、內存等數據,在該狀態下可任意使用被測應用,Emmagee會自動進行相關數據的記錄,終止測試之后會生成相應的報告,并保存在Android目錄中。
(6) Soloπ
Soloπ是支付寶在移動端上實現的一套無線化、非侵入、免Root的 Android 專項測試方案。直接操控手機,即可實現自動化的功能、性能、兼容性、以及穩定性測試等工作。支持 CPU、內存、FPS、流量等常規指標的實時獲取,同時支持將性能數據記錄下來,存儲到本地并通過報表形式展示,支持性能加壓。
(7) Testin
Testin性能測試,通過自動化的測試工具,在上線前模擬正常、峰值以及異常等多種場景,從而對App的各項性能指標進行測試。包括:負載測試、壓力測試、配置測試、并發測試、容量測試、可靠性測試。
- 負載測試:通過逐步增加系統負載,測試系統性能的變化,并最終確定在滿足性能指標的情況下,系統所能承受的最大負載量。
- 壓力測試:通過逐步增加系統負載,測試系統性能的變化,并最終確定在什么負載條件下系統性能處于失效狀態,并以此來獲得系統能夠提供的最大服務級別。
- 配置測試:通過測試被測試軟件的軟硬件配置,獲得不同配置的性能指標,用于選擇最佳的設備及參數配置。
- 并發測試:測試多個用戶同時訪問同一個應用、同一個模塊或者數據記錄時是否存在死鎖或者其他性能問題。
- 容量測試:在確定的軟、硬件條件下,構造一定數量的虛擬用戶訪問,從而獲取不同數量級別的服務器性能指標,以確定數據庫能夠處理的最大會話能力、最大容量等。
- 可靠性測試:采用系統能夠支持的最大并發用戶數,持續執行一段時間(7*24小時),通過綜合分析執行指標、資源監控指標,來確定系統處理最大工作量的性能情況。
(8) Bugly
Bugly是騰訊推出的一款免費的崩潰收集工具。面向移動開發者提供專業的 Crash 監控、崩潰分析等質量跟蹤服務。移動開發者 ( Android / iOS ) 可以通過監控,快速發現用戶在使用過程中出現的 Crash (崩潰)、Android ANR( application not response) 和 iOS 卡頓,并根據上報的信息快速定位和解決問題。用戶只要登陸 Bugly 網站,就可以清晰的看到被監測產品有多少 Crash,影響了多少用戶的使用,并可以根據 Bugly 提供的 Crash 日志進行問題修復。
(9) OneAPM
Mi是OneAPM針對移動設備上App推出的移動應用性能監控工具。Mi展示移動應用的交互性能,崩潰率,HTTP 錯誤率,網絡錯誤率等核心性能指標、用戶訪問軌跡、用戶動作等行為數據,以及活躍用戶等運營數據。從用戶動作、網絡請求、崩潰三個核心指標對用戶體驗進行評估,并結合應用版本、操作系統、設備、地域等多個維度總覽用戶分布情況。完整記錄每個用戶的訪問軌跡,通過查看單次用戶訪問,回溯過程中出現的緩慢動作,錯誤請求和崩潰。詳盡展示某類崩潰影響的設備、操作系統、應用版本、發生次數、影響用戶等信息,還原崩潰發生軌跡,定位崩潰代碼行。
(10) 聽云App
聽云App是聽云平臺提供的移動端性能監測工具。監控真實用戶使用過程中的崩潰、錯誤、卡頓、網絡性能差等問題。可以跟蹤App應用移動設備端用戶進行屏幕操作時的交互性能;統計多種錯誤類型,直觀定位到具體報錯URL、以及崩潰時的堆棧信息;可以深入追蹤HTTP錯誤、網絡錯誤和崩潰的原因,提高App質量。
5. 主流移動端性能測試工具橫向對比
針對不同的產品迭代周期,選取了目前業內比較成熟的工具,對比各自的優缺點。



各工具性能指標覆蓋情況對比如下表:

6. 結論
不同的移動端性能測試工具各有優劣勢,在工具選擇上,需要綜合考慮主要監測的性能指標和工具的特長。對于研發測試階段適用的工具,GT、Emmagee、soloπ在andriod端可直接安裝apk進行測試,方便快捷。對于線上用戶使用情況的監控,有些工具指標覆蓋比較全面,但是對某些指標的監測不夠深入,可考慮疊加另外一個或多個工具進行組合使用。
原文地址:https://www.toutiao.com/a6805108031467029004/