测试开发进阶(四十七)
日志分析
使用adb获取日志
1 | adb logcat |
1 | I/SystemServer( 553): Package Manager |
其中I
D
W
表示日志优先级,类似于Info
Error
I
:INFOD
:DEBUGW
:WARINGE
:ERROR
斜杠后面表示日志的输出模块
括号中为当前的进程号
冒号后面内容为日志主体
拉取traces.txt
文件(追踪信息)
1 | 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使用情况
1 | cat /proc/1757/stat |
获取当前进程的Jiffies
1 | cat /proc/1757/stat | awk -F " " '{print $14,$15}' |
第三方工具GT/soloPi
https://gt.qq.com/download.html
将日志保存到文件中
拉取至本地
1 | 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以下
1 | adb shell dumpsys activity | find "mFocusedActivity" |
android 8.0以上
1 | adb shell dumpsys activity | find "mResumedActivity" |
- 查看启动时间
1 | adb shell am start -W -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity |
程序员角度:获取打开应用到第一帧出现的时间
- 使用soloPi来进行屏幕录制
- 录屏数帧
人工录制后数帧数
1 | adb shell screenrecord --bugreport /sdcard/launch.mp4 |
流量
手机上网所产生的流量数据。
读取proc文件
1 | cat /proc/net/xt_qtaguid/stats |
- iface 网络性质 wlan-wifi流量 lo本地流量 rmnet0-3g/2g流量
- uid_tag_int 应用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所提供的power_profile.xml文件,不同厂商的power_profile.xml准确度及源码有差异,因此不同手机,不同版本的数据可能存在较大差异
- 系统源码PowerProfile读取power_profile.xml,并提供API访问部件电流数值
- 怎么获取power_profile.xml:反编译framework-res.apk