<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          全網(wǎng)最全移動端App性能測試方法,值得收藏!

          共 5105字,需瀏覽 11分鐘

           ·

          2021-06-03 04:47

          關(guān)注上方“測試開發(fā)技術(shù)”,選擇星標,

          干貨技術(shù),第一時間送達!

          普遍的apk性能測試,主要是以下七類

          1、響應(yīng)
          2、內(nèi)存
          3、cpu
          4、FPS (app使用的流暢度)
          5、GPU過度渲染
          6、耗電
          7、耗流
          (app除了這些性能測試,還有:手機版本號兼容性,屏幕分辨率兼容性,穩(wěn)定性測試,安全測試等,后續(xù)會持續(xù)更新… 流量測試同這些一起更新,這里就不在說明了 )





          一、響應(yīng)




          軟件的響應(yīng)時間和響應(yīng)速度直接影響到用戶的體驗度,如果一個軟件,遲遲加載不出來,會直接影響到軟件的日活、留存。因此對于一個軟件,對響應(yīng)速度測試是必不可少的。


          主要測試點:



          1、冷啟動:首次啟動app的時間間隔(只是啟動時間,不包括頁面加載)
          2、熱啟動:非首次啟動app的時間間隔(只是啟動時間,不包括頁面加載)
          3、完全啟動:從啟動到首頁完全加載出來的時間間隔
          4、有網(wǎng)啟動:從發(fā)起跳轉(zhuǎn),到頁面完全加載出來的時間間隔
          5、無網(wǎng)啟動:從發(fā)起跳轉(zhuǎn),到頁面完全加載出來的時間間隔
          (在項目中,主要測試關(guān)注點是冷啟動,熱啟動)
          測試方法:



          1、使用adb命令
          1) 冷啟動
          adb shell am start -W packageName/ActivityName(絕對路徑,首個Activity)

          含義:

          ThisTime: 該Activity的啟動耗時;
          TotalTime: 應(yīng)用自身啟動耗時, ThisTime+應(yīng)用application等資源啟動時間;
          WaitTime: 系統(tǒng)啟動應(yīng)用耗時, TotalTime+系統(tǒng)資源啟動時間


          2)熱啟動:按back按鍵后再啟動adb命令


          測試標準:冷啟動時間不超過1.5s, 熱啟動不超過1s.


          3)完全啟動,無網(wǎng)啟動,有網(wǎng)啟動都可以通過charles抓包來獲取啟動的時間


          charles是一個很強大的抓包工具,除了截取請求還能進行單接口壓測,修改請求參數(shù)并發(fā)出請求,以及模擬無網(wǎng),弱網(wǎng),2G,3G,4G等。能解決app的很多專項測試。


          限制網(wǎng)絡(luò)情況需要用到charles的一個功能:Throttle Setting



          通過設(shè)置網(wǎng)速和抓包,可以獲取啟動時間,但是有一定的誤差。在項目中,一般只需要測試冷啟動,熱啟動便可。


          2、使用AndroidStudio的Android Monitor,查看手機日志系統(tǒng)輸出
          Android Monitor總共有5大模塊:logcat, memory, cpu, network,GPU
          我們可以通過logcat獲取應(yīng)用的響應(yīng)時間(如何使用,內(nèi)存中有介紹)



          3、代碼日志輸入查看
          直接源碼打日志,輸入各個位置的耗時操作最為有效,需要源碼。


          4、借用工具,高速相機,但是成本較高。(如下圖:目前項目團隊使用的測試工具)
          原理:通過壓力感應(yīng)來自動識別起始點,回放圖片判斷結(jié)束點,(一般默認手機界面靜止不動為結(jié)束點), 鍵盤按S鍵為起始點,按F鍵為結(jié)束點。
          這里便不介紹用法了。





          二、內(nèi)存




          在Android系統(tǒng)中,每個APP進程除了同其他進程共享內(nèi)存(shared dirty)外,還獨用私有內(nèi)存(private dirty),通常我們使用PSS(私有內(nèi)存+比例分配共享內(nèi)存)來衡量一個APP的內(nèi)存開銷。由于一個移動設(shè)備的內(nèi)存是固定的,如果內(nèi)存消耗過大就會造成應(yīng)用卡頓或者閃退,需要對內(nèi)存進行測試。正常情況下,應(yīng)用不應(yīng)占用過多的內(nèi)存資源,且能夠及時釋放內(nèi)存,保證整個應(yīng)用內(nèi)的穩(wěn)定性和流暢性。


          測試點:



          1、空閑狀態(tài):切換至后臺或者啟動后不做任何操作,消耗內(nèi)存最少。
          2、中強度狀態(tài):時間偏長的操作應(yīng)用。
          3、高強度狀態(tài):高強度使用應(yīng)用,可以跑monkey來測試(通常用來測試內(nèi)存泄漏)。
          內(nèi)存泄漏:指應(yīng)用里的內(nèi)存一直沒有釋放,內(nèi)存一直增加 ,系統(tǒng)內(nèi)存一直減少 


          測試方法:



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


          獲取應(yīng)用包名和Actively:
          adb shell dumpsys window | findstr mCurrentFocus



          測試關(guān)注點:



          1、Native heap alloc
          2、Dalvik heap alloc
          3、PSS



          2、使用性能測試工具:Emmagee(只支持Android)
          Emmagee是網(wǎng)易開發(fā)的一款測安卓應(yīng)用性能的測試apk
          1、安裝Emmagee.apk,打開。
          2、選擇需要測試性能的應(yīng)用啟動
          3、被測應(yīng)用界面會展示內(nèi)存、CPU、電流、流量等數(shù)據(jù)
          4、stop Test之后,在本地SD卡中保存一份性能測試數(shù)據(jù),可以從里面獲取內(nèi)存信息。
          5、可以通過execl將數(shù)據(jù)轉(zhuǎn)化成圖表,更直觀的查看各性能指標的數(shù)據(jù)。
          (保存地址:/sdcard/Emmagee/******* .csv文件)



          生成的csv文件:




          原理Emmagee是使用Android自身提供的ActivityManager.MemoryInfo()方法獲得
          可查看:cpu 內(nèi)存 流量 電量 FPS(流暢度)是一個相對比較好的選擇
          但是只支持安卓6.0及以下的版本


          除了Emmagee,還有騰訊提供的一個同樣測試性能的app, GT。使用與Emmagee大體一致,但是GT除了支持Android,同樣支持ios。GT相對于Emmagee功能也更強大:性能測試(CPU、內(nèi)存、流量、電量、幀率/流暢度等等)、開發(fā)日志的查看、Crash日志查看、網(wǎng)絡(luò)數(shù)據(jù)包的抓取、APP內(nèi)部參數(shù)的調(diào)試、真機代碼耗時統(tǒng)計。


          3、使用AndroidStudio 自帶 CPU 和內(nèi)存檢測功能 – Android Monitor
          (首先要下載并安裝好Android Studio)
          Android Monitor 可以檢測CPU 和內(nèi)存,能夠繪制出變化圖,可以直觀明了的看出內(nèi)存和cpu的變化曲線。

          Android Monitor ,有5個模塊 :logcat、Memory、CPU、Network、GPU。


          關(guān)注點:



          1、退出某個頁面后,內(nèi)存是否有回落。
          如果沒有及時回落,且程序自動GC或者手動GC,那便可確認有問題。
          2、進行某個操作后,內(nèi)存是否增長過快。
          如果增長過快,也有可能存在風險,需重復(fù)操作確認。




          三、CPU




          CPU測試,主要關(guān)注的是cpu的占用率。很多時候,我們玩手機時,會出現(xiàn)發(fā)熱發(fā)燙,那是因為CPU使用率過高,CPU過于繁忙,會使整個手機無法響應(yīng)用戶,整體性能降低,用戶體驗就會很差,也容易引起ANR(application not responding, 主線程(UI線程)如果在規(guī)定時內(nèi)沒有處理完相應(yīng)工作,就會出現(xiàn)ANR)等等一系列問題。
          測試點:



          1).在空閑時間(切換至后臺)的消耗,基本沒大應(yīng)用使用cpu
          2).在運行一些應(yīng)用的情況下,cpu已占50%的情況下,觀察應(yīng)用程序占用cpu的情況
          3).在高負荷的情況下看CPU的表現(xiàn)(cpu占用應(yīng)是在80%以上)


          具體場景:



          1、應(yīng)用空閑狀態(tài)運行監(jiān)測CPU占用率
          空閑狀態(tài):應(yīng)用按Home鍵退到后臺,不再占用系統(tǒng)的狀態(tài)(通常是滅屏半分鐘后)
          CPU占用率=0%


          2、應(yīng)用中等規(guī)格運行監(jiān)測CPU占用率
          中等規(guī)格:模擬用戶最常見的使用場景
          CPU占用率≤30%


          3、應(yīng)用滿規(guī)格長時間正常運行監(jiān)測CPU占用率
          Monkey測試
          CPU占用率≤30%


          4、應(yīng)用正常運行期間監(jiān)測CPU占用率峰值
          應(yīng)用正常運行:打開應(yīng)用進行基本操作
          CPU占用率≤50%


          測試方法:



          1、使用adb命令:
          1) top -m -s cpu |grep packageName

          top cpu 參數(shù):
          -m 顯示最大數(shù)
          -s 按指定行排序
          -t 顯示進程名稱
          -n 在退出前刷新幾次
          -d 刷新間隔


          如果反復(fù)進行某個操作,cpu占用過高且一直無法釋放,那便可能存在風險。


          2)dumpsys cpuinfo |grep packageName


          2、使用第三方測試工具:Emmagee、GT等。
          3、使用AndroidStudio自帶的檢測工具Android Monitor。




          四、FPS(應(yīng)用的使用流暢度)




          FPS是圖像領(lǐng)域中的定義,是指畫面每秒傳輸幀數(shù),通俗來講就是指動畫或視頻的畫面數(shù)。FPS是測量用于保存、顯示動態(tài)視頻的信息數(shù)量。每秒鐘幀數(shù)愈多,所顯示的動作就會愈流暢。
          ′一般來說,Android設(shè)備的屏幕刷新率為60幀/s,要保持畫面流暢不卡頓,要求每一幀的時間不超過1000/60=16.6ms,這就是16ms的黃金準則,如果中間的某些幀的渲染時間超過16ms,就會導(dǎo)致這段時間的畫面發(fā)生了跳幀,因此原本流暢的畫面變發(fā)生了卡頓。


          測試方法:



          1、adb命令
          1)打開手機:開發(fā)者選項—>profile GPU rendering —> in adb shell dumpsys gfxinfo
          2) 操作要測試的apk
          3) cmd窗口輸入命令:adb shell dumpsys gfxinfo packageName
          4) 得到一個矩陣數(shù)據(jù),計算矩陣中幀率大于16的點所占比例,即為卡頓比


          含義:



          Draw: 表示在Java中創(chuàng)建顯示列表部分中,OnDraw()方法占用的時間。
          Process:表示渲染引擎執(zhí)行顯示列表所花的時間,view越多,時間就越長。
          Execute:表示把一幀數(shù)據(jù)發(fā)送到屏幕上排版顯示實際花費的時間。
          Draw + Process + Execute = 完整顯示一幀 ,這個時間要小于16ms才能保存每秒60幀。


          5)通過execl進行表格處理可以直觀的查看軟件的流暢度

          2、除了使用adb shell, 還可以直接使用開發(fā)者選項自帶的圖表
          1)打開手機:開發(fā)者選項—>profile GPU rendering —> on screen as bars
          2) 操作被測的軟件
          3)界面會顯示如下的一個統(tǒng)計數(shù)據(jù)表

          2、使用第三方測試工具:Emmagee、GT等。
          3、使用AndroidStudio自帶的檢測工具Android Monitor。




          五、GPU渲染




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


          測試方法:



          1、手機自動的Debug GPU overdraw
          1)打開手機—>設(shè)置—>開發(fā)者選項—>Debug GPU overdraw—>show overdraw areas
          2)打開被測的應(yīng)用

          GPU過渡渲染不同的顏色代表不同的繪制程度
          1)、原色:無過渡繪制
          2)、藍色:繪制一次 (理想狀態(tài))
          3)、綠色:繪制二次
          4)、淺紅:繪制三次 (可以優(yōu)化)
          5)、深紅:繪制四次 (必須優(yōu)化)


          測試指標:



          1、控制過渡繪制為2x
          2、不允許存在4x過渡繪制
          3、不允許存在面積超過屏幕1/4的3x過渡繪制




          六、耗電量




          測試應(yīng)用對電量的消耗前需要對手機本身的電量消耗有個大概了解,測試前先看規(guī)定時間內(nèi)手機正常待機下(重啟后待機)電量消耗為多少。然后再啟動待測試APP看看消耗的電量增加了多少取差值。


          測試點:



            測試手機安裝目標APK前后待機功耗無明顯差異;
            常見使用場景中能夠正常進入待機,待機電流在正常范圍內(nèi);
            長時間連續(xù)使用應(yīng)用無異常耗電現(xiàn)象。


          測試方法:



          (先關(guān)閉所有的應(yīng)用,再打開被測app)
          1、使用第三方測試工具:Emmagee、GT等,只需要測試的電流靜置一晚,待機電流在正常范圍內(nèi)即可。一般是被測應(yīng)用對比待機電流<=2mA。
          2、使用adb命令
          adb shell dumpsys batterystats |grep packageName


          轉(zhuǎn)載自:

          https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318


          推薦閱讀:

          1. Django+Vue+Docker搭建接口測試平臺實戰(zhàn)

          2. 接口自動化測試,一鍵快速校驗接口返回值全部字段

          3. 剛轉(zhuǎn)行1年測開新手:學(xué)習編程幾點經(jīng)驗分享


          END


          長按二維碼/微信掃碼  添加作者


          掃描上面二維碼,備注【交流群】,加入技術(shù)交流群


          瀏覽 81
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一本大道无码视频 | 精品熟人一区二区三区四区 | 天天色天天插 | 夜色AV8888 | 日本xxxx在线 |