测试开发进阶(四十七)
日志分析
使用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
:INFOD
:DEBUGW
:WARINGE
: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"
查看启动时间
$ adb shell am start -W -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity
程序员角度:获取打开应用到第一帧出现的时间
使用soloPi来进行屏幕录制
录屏数帧
人工录制后数帧数
$ 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文件:决定电量测试是否准备的标准文件
手机中的每个组件,如CPU,LCD,GPS,WIFI,BT等,运行时的能耗标准都保存在power_profile.xml中
由于android手机厂商的差异,每个硬件模块耗电信息不同,所以每个厂商都会对power_profile.xml进行定制
android耗电量通过代码估算,没有硬件参与汇报,准确度取决于厂商ROM所提供的powerprofile.xml文件,不同厂商的powerprofile.xml准确度及源码有差异,因此不同手机,不同版本的数据可能存在较大差异
系统源码PowerProfile读取power_profile.xml,并提供API访问部件电流数值
怎么获取power_profile.xml:反编译framework-res.apk
上一篇: 项目问题总结