測試開發進階(四十七)

日誌分析

使用adb獲取日誌

$ adb logcat
$ adb logcat > logcat_1215.log

I/SystemServer(  553): Package Manager
D/SELinuxMMAC(  553): Couldn't find install policy /data/security/mac_permissions.xml
W/PackageManager(  553): Unknown permission com.android.smspush.WAPPUSH_MANAGER_BIND in package com.android.phone

其中 I D W表示日誌優先級,類似於 Info Error

  • I:INFO

  • D:DEBUG

  • W:WARING

  • E:ERROR

斜槓後面表示日誌的 輸出模塊

括號中爲當前的 進程號

冒號後面內容爲 日誌主體

拉取 traces.txt文件(追蹤信息)

$ adb pull /data/anr/traces.txt /Users/zhongxin/Desktop

關鍵字

  • fatal exception嚴重異常

  • ANR IN

性能指標

CPU

很多時候,手機發熱發燙。是因爲CPU使用率過高,CPU過於繁忙,會導致手機無法響應用戶,整體性能降低,用戶體驗會很差,也容易引起ANR等一些列問題

CPU使用率分爲:用戶態 系統態 空閒態

  • 用戶態:CPU處於用戶態執行的時間

  • 系統態:CPU處於系統內核執行的時間

  • 空閒態:CPU處於空閒系統進程執行的時間

CPU使用率=CPU執行非系統空閒進程的時間/CPU總的執行時間

  • HZ

Linux核心每隔固定週期會發出timer interrupt(IRQ 0),HZ是用來定義每一秒有幾次timer interrupt

  • Tick

Tick是HZ的倒數,Tick = 1/HZ

即timer interrupt每發生一次中斷的時間

  • Jiffies

Linux核心變數,是一個unsigned long類型的變量,它被用來記錄系統自開機以來,已經過了多少tick。

每發生一次timer interrupt,Jiffies變數會被+1

CPU使用率=(用戶態Jiffies + 系統態Jiffies)/總Jiffies

CPU指標獲取

讀取proc文件
  • /proc/stat

  • /proc/<pid>/stat

cpu0表示CPU核心

cpu1表示CPU的第二個核心

cpu表示總和

查看模擬器的配置:雙核的CPU

查找對於app的cpu使用情況

$ cat /proc/1757/stat

獲取當前進程的Jiffies

$ cat /proc/1757/stat | awk -F " " '{print $14,$15}'
第三方工具GT/soloPi

https://gt.qq.com/download.html

將日誌保存到文件中

拉取至本地

$ adb pull /sdcard/GT/GW/com.sankuai.meituan/5.5.4/20191215/Pcp0_com.sankuai.meituan_20191215100605.csv /Users/zhongxin/Desktop

soloPi無法安裝到模擬器,暫不演示

啓動時間

2-5-8原則

App啓動方式

  • 冷啓動

後臺沒有進程,系統會重新創建一個新的進程分配給該應用

  • 熱啓動

後臺已有該進程,會從已有進程來啓動應用


查找包名

android 7.0以下

$ adb shell dumpsys activity | find "mFocusedActivity"

android 8.0以上

$ adb shell dumpsys activity | find "mResumedActivity"

  1. 查看啓動時間

$ adb shell am start -W -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity

程序員角度:獲取打開應用到第一幀出現的時間

  1. 使用soloPi來進行屏幕錄製

  2. 錄屏數幀

人工錄製後數幀數

$ adb shell screenrecord --bugreport /sdcard/launch.mp4

流量

手機上網所產生的流量數據。

讀取proc文件

$ cat /proc/net/xt_qtaguid/stats

  • iface 網絡性質 wlan-wifi流量 lo本地流量 rmnet0-3g/2g流量

  • uidtagint 應用UID

  • cnt_set 應用前後臺標識位 1-前臺 0-後臺

  • rx_bytes 接收數據

  • tx_bytes 傳輸數據

查看具體app的流量

使用 ps找到對於應用的 uid:u0_a35 = 10000+35

lo:網絡類型

10035:應用UID

0:後臺

132324:接收的流量數據消耗

2321:發送的流量數據消耗

電量

電量影響因素

  • cpu

  • wakelock(保持喚醒鎖)

  • 無線數據(2G/3G/4G)

  • wiif

  • 藍牙

  • 傳感器

  • 相機

  • 閃光燈

  • GPS

power_profile.xml文件:決定電量測試是否準備的標準文件

  1. 手機中的每個組件,如CPU,LCD,GPS,WIFI,BT等,運行時的能耗標準都保存在power_profile.xml中

  2. 由於android手機廠商的差異,每個硬件模塊耗電信息不同,所以每個廠商都會對power_profile.xml進行定製

  3. android耗電量通過代碼估算,沒有硬件參與彙報,準確度取決於廠商ROM所提供的powerprofile.xml文件,不同廠商的powerprofile.xml準確度及源碼有差異,因此不同手機,不同版本的數據可能存在較大差異

  4. 系統源碼PowerProfile讀取power_profile.xml,並提供API訪問部件電流數值

  5. 怎麼獲取power_profile.xml:反編譯framework-res.apk

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章