1. 程式人生 > 其它 >APP效能測試

APP效能測試

一、響應

測試點:

  1. 冷啟動:首次啟動APP的時間間隔(只是啟動時間,不包括頁面載入)
    adb shell am start -W packageName/ActivityName(絕對路徑,首個Activity)

    含義:
    ThisTime:該Activity的啟動耗時
    TotalTime:應用自身啟動耗時,ThisTime+應用application等資源啟動耗時
    WaitTime:系統啟動應用耗時,TotalTime+系統資源啟動時間
    測試標準:冷啟動時間TotalTime不超過1.5秒

  2. 熱啟動:按back鍵後再啟動adb命令

    測試標準:熱啟動時間不超過1秒

  3. 完全啟動:從啟動到首頁完全加載出來的時間間隔

  4. 有網啟動:從發起跳轉,到頁面完全加載出來的時間間隔
  5. 無網啟動:從發起跳轉,到頁面完全加載出來的時間間隔
    (一般只關注冷啟動和熱啟動即可)

二、記憶體

  在安卓系統中,每個APP程序除了其他程序共享記憶體之外,還獨用私有記憶體,通常我們用PSS(私有記憶體+比例分配共享記憶體)來衡量一個APP的記憶體開銷,。由於一個裝置的記憶體是固定的,如果記憶體消耗過大就會出現應用卡頓或者閃退,因此需要對記憶體進行測試。正常情況下,應用不應占用過多的記憶體資源,且能及時釋放記憶體,保證整個應用內的穩定性和流暢性。

測試點:

  1. 空閒狀態:切換至後臺或者啟動後不做任何操作,消耗最小  
  2. 中強度狀態:時間偏長的操作應用
  3. 高強度狀態:高強度使用應用,可以跑moneky來測試
    記憶體洩漏:應用內的記憶體沒有釋放,記憶體一直增加,系統記憶體一直減少

測試方法:

  1. 使用adb命令:
    adb shell dumpsys meminfo packageName

    關注點:
    1、Native heap alloc:JNI層的記憶體分配
    2、Dalvik heap alloc:Java層的記憶體分配
    如果這兩個值一直增長,應用程式可能出現了記憶體洩漏
    Total的PSS:應用真正佔據的記憶體大小

  2. 使用效能測試工具:Emmagge(一直沒更新了)、GT(需要接入sdk)、Android Monitor等
    關注點:
    1、退出某個頁面後,記憶體是否有回落:如果沒有及時回落,且程式自動GC或者手動GC,那便可確認有問題
    2、進行某個操作後,記憶體是否增長過快:如果增長過快,也可能有風險,需要重複操作確認

三、CPU

  cpu測試,主要是關注cpu的佔用率。cpu佔用率過高,容易引起無法響應、ANR(application not responding)等問題

測試點:

  1. 在空閒時間(切換至後臺)的消耗
  2. 在執行一些應用的情況下,觀察應用程式佔用cpu的情況
  3. 在高負荷的情況下,觀察應用程式佔用cpu的表現

具體場景:

  1、應用空閒狀態執行監測CPU佔用率   空閒狀態:應用按Home鍵退到後臺,不再佔用系統的狀態(通常是滅屏半分鐘後)   CPU佔用率=0%   2、應用中等規格執行監測CPU佔用率   中等規格:模擬使用者最常見的使用場景   CPU佔用率≤30%   3、應用滿規格長時間正常執行監測CPU佔用率   Monkey測試   CPU佔用率≤30%   4、應用正常執行期間監測CPU佔用率峰值   應用正常執行:開啟應用進行基本操作   CPU佔用率≤50%

測試方法:

  1. 使用adb命令
    1、adb shell top -n 3|grep packageName

    top cpu引數:
    -m 顯示最大數
    -s 按指定列序號排序(1-x,預設是9)
    -t 顯示程序名稱
    -n 在退出前重新整理幾次
    -d 重新整理間隔
    如果反覆進行某個操作,cpu佔用過高且一直無法釋放,那便可能存在風險

    2、adb shell dumpsys cpuinfo |grep packageName
  2. 使用第三方工具:Emmagee、GT等

  3. 使用Android Monitor  


四、FPS

  一般來說,安卓裝置的螢幕重新整理率為60幀/s,要保持畫面流暢不卡頓,要求每一幀的時間不超過1000/60=16.6ms,這就是16ms的黃金準則,如果中間的某些幀的渲染時間超過16ms,就會導致這一段時間的畫面發生跳幀,畫面會卡頓

測試方法:

  1. adb命令
    1)開啟手機:開發者選項-->GPU呈現模式分析 --> 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)通過Excel進行表格處理可以直觀的檢視軟體的流暢度
        

  2、使用開發者選項自帶的圖表
    1) 開啟手機:開發者選項 -->GPU呈現模式分析 --> 在螢幕上顯示為條形圖
    2)操作被測得軟體,介面會顯示條形圖
    

  3、使用第三方測試工具:Emmagee、GT等
   4、使用Android Monitor

五、GPU渲染

  gpu渲染是指在一個畫素點上繪製多次(超過一次):顯示一個什麼都沒有做的activity介面算作畫了1層,給activity加一個背景是第2層,在上面放了一個Text View(有背景的Text View)是第3層,Text View顯示文字就是第4層僅僅只是為了顯示一個文字,卻在同一個畫素點繪製了四次,這是一定要優化的。過度繪製對動畫效能的影響是極其嚴重的,如果你想要流暢的動畫效果,那麼一定不能忽視過度繪製。

測試方法:  

  1)開啟開發者選項 -- > 除錯GPU過度繪製 --> 顯示過度繪製區域
  2)開啟被測應用,可以看到不同顏色的繪製程度
    原色:無過度繪製
    藍色:繪製一次(理想狀態)
    綠色:繪製兩次
    淺紅:繪製三次
    深紅:繪製四次(必須優化)

測試指標  

  1. 控制過濾繪製為2x
  2. 不允許存在4x過度繪製
  3. 不允許存在面積超過螢幕1/4的3x過度繪製

六、耗電量

  測試前先看下規定時間內手機正常待機下耗電量為多少,然後再啟動APP測試耗電量

測試點:

  1. 測試手機安裝apk前後待機狀態功耗無明顯差別
  2. 常見使用場景中,耗電量在正常範圍內
  3. 長時間連續使用應用,耗電量正常

測試方法:

  1. adb命令

    #設定,目的:依照時間順序展示各個wakelock的詳細資訊
    adb shell dumpsys batterystats --enable full-wake-history
    #重置batterystats資料
    adb shell dumpsys batterystats --reset
    #執行測試用例
    #完成測試用例執行,連線裝置,匯出資料
    adb shell dumpsys batterystats > bugreport.txt
    #Android 7.0及以上
    adb bugreport bugreport.zip

  2. 使用第三方測試工具:Emmagee、GT等