APP效能測試指標和測試方法

來源:互聯網
上載者:User

標籤:記憶體   sha   移動   一個   現象   通訊   參數   wait   memory   

流量常用方法

方法一:Android系統內建統計功能(總體流量數值)
Proc/uid_stat/{UID}/tcp_snd和tcp_rcv

  • UID是每個app安裝時候分配的唯一編號用於識別該app.
  • tcp_snd:表示發送資料累計大小,單位是位元組
  • tcp_rcv:表示接收到的資料累計大小。

具體步驟:
(1)通過包名擷取app的PID;
(2)再訪問/proc/{PID}/status檔案尋找app對應的UID;
(3)通過UID號加上100000號查看接收和發送的流量檔案

方法二:Wireshark+tcpdump

./tcpdump -s 0 -w ./t1.pcap -v

  • -s 0:預設抓包抓取長度是68位元組,加上-s 0可以抓到完整的資料包。
  • -w xxx:抓取到的包存放路徑。
  • -v:抓包過程中顯示抓包的數量

方法三:GT(隨身調)工具(直接調用android的api):
TrafficStats類是Android提供的一個流暢統計類,可以統計手機開機累計到現在使用的流量,也可以統計某個或者多個進程或者應用所使用流量,包括Wi-Fi和移動資料GPRS。
GT使用TrafficStats.getUidTxBytes(uid)來擷取流量資料(該方法號稱是擷取到指定 uid 發送流量的總和,但實測情況是只有 tcp 層的流量)。
GT(隨身調)是APP的隨身調試平台,是直接運行在手機上的IDTE。可以使用GT對APP進行快速的效能測試(CPU、記憶體、流量、電量、幀率/流暢度等)、開發日誌查看、Crash日誌查看、網路資料包的抓取、APP內部參數的調試、真機代碼耗時統計等。

GT官網

流量測試的分析
  • 網域名稱的流量消耗:抓包後,利用現有工具統計不同網域名稱下的流量消耗。便於發現某個伺服器是否存在流量消耗過大。
  • 協議的流量消耗:便於發現某個協議是否存在流量消耗過大或者協議拉取較頻繁的現象。
電量

Battery Historian:Google提供的電量分析工具,Android 5.0以上支援

adb shell dumpsys battery //讀取電量和溫度adb shell dumpsys batterystats --reset //重設電池統計資訊adb shell dumpsys batterystats > batterystats.txt // 擷取電池統計資訊python historian.py batterystats.txt > batterystats.html //產生報告

參考

CPU

/proc 檔案系統是一個偽檔案系統,只存在記憶體中而不佔用外存空間。它以檔案系統的方式為核心與進程提供通訊的介面。
從proc檔案可以擷取:系統、進程、線程的CPU時間片使用方式,所以兩次採集時間片的資料就可以擷取進程CPU佔用率。

CPU佔用率=(進程T2-進程T1)/(系統T2-系統T1)進程總CPU時間 總CPU時間 totalCPUTime=user+nice+system+idle+iowait+irq+softird processCPUTime=utime+stime+cutime+cstime  線程總CPU時間 threadCPUTime=utime+stime+cutime+cstime
  • utime:該任務在用於態啟動並執行時間,單位為jiffies
  • stime:該任務在核心態啟動並執行時間,單位為jiffies
  • cutime:累計的該任務所有waited-for進程曾經在使用者態啟動並執行時間,單位為jiffies
  • cstime:累計的該任務的所有的waited-for進程曾經在核心態啟動並執行時間,單位為jiffies

擷取系統CPU時間片:讀取proc/stat
擷取進程CPU時間片:proc/pid/stat
線程時間片:/proc/pid/task/tid/stat

記憶體
  • 系統記憶體:
    • 系統記憶體:/proc/meminfo
    • 系統空閑記憶體:ActivityManager
    • 系統已有記憶體:總記憶體-空閑記憶體
  • 進程記憶體:
    • 進程記憶體上限、總記憶體都可以直接使用 am.getProcessMemoryInfo(PID)擷取
    • 也可以直接使用top命令
流暢度檢測

流暢度:Android系統每隔16.7ms發出垂直同步訊號(VSync訊號)(1000ms/60=16.67ms)觸發對UI進行渲染。流暢畫面需要60幀/s,為了能夠實現60幀/s,意味著計算渲染的大多數操作必須在16.7ms完成。

當繪幀間隔超過16.7ms,垂直同步機制會讓顯示器硬體等待GPU完成柵格化渲染操作,我們就可以說此時掉幀了,也會造成使用者直接感官的卡頓。
1秒內vSync訊號的次數定義為流暢值,即SM。

卡頓分類

  • 低流暢值區間:連續小卡頓造成的丟幀,即平均流暢值低於40幀/s的區間。
  • 單次大卡頓:單次大卡頓造成的丟幀,即兩次繪幀間隔大於70ms,相當於丟了4幀以上的區間。

Android的幀繪製流程是:CPU主線程影像處理->GPU進行光柵化->顯示幀。APP產生掉幀的情況大多是由“CPU主線程影像處理”這一步超負載引起。

頁面啟動時間長度

頁面啟動時間長度:

  • Activity啟動時間長度:喚醒Activity到Activity在前台進行第一次繪製的時間,繪幀檢測
  • Fragment啟動時間長度:喚醒Fragment到Fragment執行onResume的完成時間。
  • 冷啟動:頁面從startActivity開始
  • 暖開機:頁面從onStart或者onResume開始

APP效能測試指標和測試方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.