全网最全移动端App性能测试方法,值得收藏!
關注上方“測試開發技術”,選擇星標,
干貨技術,第一時間送達!
普遍的apk性能測試,主要是以下七類
1、響應
2、內存
3、cpu
4、FPS (app使用的流暢度)
5、GPU過度渲染
6、耗電
7、耗流
(app除了這些性能測試,還有:手機版本號兼容性,屏幕分辨率兼容性,穩定性測試,安全測試等,后續會持續更新… 流量測試同這些一起更新,這里就不在說明了 )
一、響應
軟件的響應時間和響應速度直接影響到用戶的體驗度,如果一個軟件,遲遲加載不出來,會直接影響到軟件的日活、留存。因此對于一個軟件,對響應速度測試是必不可少的。
主要測試點:
1、冷啟動:首次啟動app的時間間隔(只是啟動時間,不包括頁面加載)
2、熱啟動:非首次啟動app的時間間隔(只是啟動時間,不包括頁面加載)
3、完全啟動:從啟動到首頁完全加載出來的時間間隔
4、有網啟動:從發起跳轉,到頁面完全加載出來的時間間隔
5、無網啟動:從發起跳轉,到頁面完全加載出來的時間間隔
(在項目中,主要測試關注點是冷啟動,熱啟動)
測試方法:
1、使用adb命令
1) 冷啟動
adb shell am start -W packageName/ActivityName(絕對路徑,首個Activity)
含義:
ThisTime: 該Activity的啟動耗時;
TotalTime: 應用自身啟動耗時, ThisTime+應用application等資源啟動時間;
WaitTime: 系統啟動應用耗時, TotalTime+系統資源啟動時間
2)熱啟動:按back按鍵后再啟動adb命令
測試標準:冷啟動時間不超過1.5s, 熱啟動不超過1s.
3)完全啟動,無網啟動,有網啟動都可以通過charles抓包來獲取啟動的時間
charles是一個很強大的抓包工具,除了截取請求還能進行單接口壓測,修改請求參數并發出請求,以及模擬無網,弱網,2G,3G,4G等。能解決app的很多專項測試。
限制網絡情況需要用到charles的一個功能:Throttle Setting
通過設置網速和抓包,可以獲取啟動時間,但是有一定的誤差。在項目中,一般只需要測試冷啟動,熱啟動便可。
2、使用AndroidStudio的Android Monitor,查看手機日志系統輸出
Android Monitor總共有5大模塊:logcat, memory, cpu, network,GPU
我們可以通過logcat獲取應用的響應時間(如何使用,內存中有介紹)
3、代碼日志輸入查看
直接源碼打日志,輸入各個位置的耗時操作最為有效,需要源碼。
4、借用工具,高速相機,但是成本較高。(如下圖:目前項目團隊使用的測試工具)
原理:通過壓力感應來自動識別起始點,回放圖片判斷結束點,(一般默認手機界面靜止不動為結束點), 鍵盤按S鍵為起始點,按F鍵為結束點。
這里便不介紹用法了。
二、內存
在Android系統中,每個APP進程除了同其他進程共享內存(shared dirty)外,還獨用私有內存(private dirty),通常我們使用PSS(私有內存+比例分配共享內存)來衡量一個APP的內存開銷。由于一個移動設備的內存是固定的,如果內存消耗過大就會造成應用卡頓或者閃退,需要對內存進行測試。正常情況下,應用不應占用過多的內存資源,且能夠及時釋放內存,保證整個應用內的穩定性和流暢性。
測試點:
1、空閑狀態:切換至后臺或者啟動后不做任何操作,消耗內存最少。
2、中強度狀態:時間偏長的操作應用。
3、高強度狀態:高強度使用應用,可以跑monkey來測試(通常用來測試內存泄漏)。
內存泄漏:指應用里的內存一直沒有釋放,內存一直增加 ,系統內存一直減少?
測試方法:
1、使用adb命令:adb shell dumpsys meminfo packageName
獲取應用包名和Actively:
adb shell dumpsys window | findstr mCurrentFocus
測試關注點:
1、Native heap alloc
2、Dalvik heap alloc
3、PSS
2、使用性能測試工具:Emmagee(只支持Android)
Emmagee是網易開發的一款測安卓應用性能的測試apk
1、安裝Emmagee.apk,打開。
2、選擇需要測試性能的應用啟動
3、被測應用界面會展示內存、CPU、電流、流量等數據
4、stop Test之后,在本地SD卡中保存一份性能測試數據,可以從里面獲取內存信息。
5、可以通過execl將數據轉化成圖表,更直觀的查看各性能指標的數據。
(保存地址:/sdcard/Emmagee/******* .csv文件)
生成的csv文件:
原理:Emmagee是使用Android自身提供的ActivityManager.MemoryInfo()方法獲得
可查看:cpu 內存 流量 電量 FPS(流暢度)是一個相對比較好的選擇
但是只支持安卓6.0及以下的版本
除了Emmagee,還有騰訊提供的一個同樣測試性能的app, GT。使用與Emmagee大體一致,但是GT除了支持Android,同樣支持ios。GT相對于Emmagee功能也更強大:性能測試(CPU、內存、流量、電量、幀率/流暢度等等)、開發日志的查看、Crash日志查看、網絡數據包的抓取、APP內部參數的調試、真機代碼耗時統計。
3、使用AndroidStudio 自帶 CPU 和內存檢測功能 – Android Monitor
(首先要下載并安裝好Android Studio)
Android Monitor 可以檢測CPU 和內存,能夠繪制出變化圖,可以直觀明了的看出內存和cpu的變化曲線。
Android Monitor ,有5個模塊 :logcat、Memory、CPU、Network、GPU。
關注點:
1、退出某個頁面后,內存是否有回落。
如果沒有及時回落,且程序自動GC或者手動GC,那便可確認有問題。
2、進行某個操作后,內存是否增長過快。
如果增長過快,也有可能存在風險,需重復操作確認。
三、CPU
CPU測試,主要關注的是cpu的占用率。很多時候,我們玩手機時,會出現發熱發燙,那是因為CPU使用率過高,CPU過于繁忙,會使整個手機無法響應用戶,整體性能降低,用戶體驗就會很差,也容易引起ANR(application not responding, 主線程(UI線程)如果在規定時內沒有處理完相應工作,就會出現ANR)等等一系列問題。
測試點:
1).在空閑時間(切換至后臺)的消耗,基本沒大應用使用cpu
2).在運行一些應用的情況下,cpu已占50%的情況下,觀察應用程序占用cpu的情況
3).在高負荷的情況下看CPU的表現(cpu占用應是在80%以上)
具體場景:
1、應用空閑狀態運行監測CPU占用率
空閑狀態:應用按Home鍵退到后臺,不再占用系統的狀態(通常是滅屏半分鐘后)
CPU占用率=0%
2、應用中等規格運行監測CPU占用率
中等規格:模擬用戶最常見的使用場景
CPU占用率≤30%
3、應用滿規格長時間正常運行監測CPU占用率
Monkey測試
CPU占用率≤30%
4、應用正常運行期間監測CPU占用率峰值
應用正常運行:打開應用進行基本操作
CPU占用率≤50%
測試方法:
1、使用adb命令:
1) top -m -s cpu |grep packageName
top cpu 參數:
-m 顯示最大數
-s 按指定行排序
-t 顯示進程名稱
-n 在退出前刷新幾次
-d 刷新間隔
如果反復進行某個操作,cpu占用過高且一直無法釋放,那便可能存在風險。
2)dumpsys cpuinfo |grep packageName
2、使用第三方測試工具:Emmagee、GT等。
3、使用AndroidStudio自帶的檢測工具Android Monitor。
四、FPS(應用的使用流暢度)
FPS是圖像領域中的定義,是指畫面每秒傳輸幀數,通俗來講就是指動畫或視頻的畫面數。FPS是測量用于保存、顯示動態視頻的信息數量。每秒鐘幀數愈多,所顯示的動作就會愈流暢。
′一般來說,Android設備的屏幕刷新率為60幀/s,要保持畫面流暢不卡頓,要求每一幀的時間不超過1000/60=16.6ms,這就是16ms的黃金準則,如果中間的某些幀的渲染時間超過16ms,就會導致這段時間的畫面發生了跳幀,因此原本流暢的畫面變發生了卡頓。
測試方法:
1、adb命令
1)打開手機:開發者選項—>profile GPU rendering —> in adb shell dumpsys gfxinfo
2) 操作要測試的apk
3) cmd窗口輸入命令:adb shell dumpsys gfxinfo packageName
4) 得到一個矩陣數據,計算矩陣中幀率大于16的點所占比例,即為卡頓比
含義:
Draw: 表示在Java中創建顯示列表部分中,OnDraw()方法占用的時間。
Process:表示渲染引擎執行顯示列表所花的時間,view越多,時間就越長。
Execute:表示把一幀數據發送到屏幕上排版顯示實際花費的時間。
Draw + Process + Execute = 完整顯示一幀 ,這個時間要小于16ms才能保存每秒60幀。
5)通過execl進行表格處理可以直觀的查看軟件的流暢度
2、除了使用adb shell, 還可以直接使用開發者選項自帶的圖表
1)打開手機:開發者選項—>profile GPU rendering —> on screen as bars
2) 操作被測的軟件
3)界面會顯示如下的一個統計數據表
2、使用第三方測試工具:Emmagee、GT等。
3、使用AndroidStudio自帶的檢測工具Android Monitor。
五、GPU渲染
GPU渲染是指在一個像素點上繪制多次(超過一次):顯示一個什么都沒有做的activity界面算作畫了1層,給activity加一個背景是第2層,在上面放了一個Text View(有背景的Text View)是第3層,Text View顯示文本就是第4層僅僅只是為了顯示一個文本,卻在同一個像素點繪制了四次,這是一定要優化的。過度繪制對動畫性能的影響是極其嚴重的,如果你想要流暢的動畫效果,那么一定不能忽視過度繪制。
測試方法:
1、手機自動的Debug GPU overdraw
1)打開手機—>設置—>開發者選項—>Debug GPU overdraw—>show overdraw areas
2)打開被測的應用
GPU過渡渲染不同的顏色代表不同的繪制程度
1)、原色:無過渡繪制
2)、藍色:繪制一次 (理想狀態)
3)、綠色:繪制二次
4)、淺紅:繪制三次 (可以優化)
5)、深紅:繪制四次 (必須優化)
測試指標:
1、控制過渡繪制為2x
2、不允許存在4x過渡繪制
3、不允許存在面積超過屏幕1/4的3x過渡繪制
六、耗電量
測試應用對電量的消耗前需要對手機本身的電量消耗有個大概了解,測試前先看規定時間內手機正常待機下(重啟后待機)電量消耗為多少。然后再啟動待測試APP看看消耗的電量增加了多少取差值。
測試點:
測試手機安裝目標APK前后待機功耗無明顯差異;
常見使用場景中能夠正常進入待機,待機電流在正常范圍內;
長時間連續使用應用無異常耗電現象。
測試方法:
(先關閉所有的應用,再打開被測app)
1、使用第三方測試工具:Emmagee、GT等,只需要測試的電流靜置一晚,待機電流在正常范圍內即可。一般是被測應用對比待機電流<=2mA。
2、使用adb命令
adb shell dumpsys batterystats |grep packageName
轉載自:
https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318
推薦閱讀
測試技術的提升你只需要關注這個!年薪20W都不是夢!
測試經理 : 不想測就不測唄,擺什么臭架子!
測試干了5年,薪資不如剛入行1年的小白?月薪28k真的是看工作年限嗎?
總結
以上是生活随笔為你收集整理的全网最全移动端App性能测试方法,值得收藏!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++ 中判断某一文件或目录是否存在
- 下一篇: ios截屏 u3d导出Xcode工程截屏