简介
mobileperf is python PC 工具,可以收集Android性能数据: cpu 内存 流畅度fps logcat日志 流量 进程线程数 进程启动日志,mobileperf也支持原生monkey test
该项目是由天猫团队开源的PC Android性能稳定性测试工具,可以收集Android性能数据: cpu 内存 流畅度fps logcat日志 流量 进程线程数 进程启动日志,mobileperf也支持原生monkey test,
工具稳定性:mobileperf 能支持跑 72 个小时以上,adb 断开重连都能继续采集
mobileperf 整体架构图:
环境搭建
- 项目地址
- 安装python3.7 python下载链接,加入到环境变量中,执行python --version,确保是python3
C:\Users\admin>python --version
Python 3.7.4
- 安装adb,确保adb devices能找到设备
C:\Users\admin>adb devices
List of devices attached
5d0c9ab6 device
- 修改配置文件,示例参考根目录下config.conf
[Common]
#test process,example: package=com.alibaba.ailabs.genie.contacts
#测试流程,示例:package=com.alibaba.ailabs.genie.contacts
#support multi process,separate use; if contains child process,first must be main process
#支持多进程,分开使用;如果包含子进程,首先必须是主进程
#com.tencent.mm com.sina.weibo com.taobao.taobao
package=com.example.myapplication #修改成自己手机上要测试的
#collect frequency, int type,unit: second
#采集频率,int类型,单位:秒
frequency=5 # 采集频率
#collect timeout ,int type ,unit:minute, for example:72 hours 4320
# 收集超时时间,int类型,单位:分钟,例如:72小时4320
timeout=3 # 采集时长
#dumpheap frequency, int type,unit: minute
#dumpheap频率,int类型,单位:分钟
dumpheap_freq=1
#adb serialnum,adb devices result example WSKFSKBQLFA695D6
serialnum=5d0c9ab6 # 修改成自己的,adb devices
#except log tag,tools will check in logcat,save exception log in exception.log,multi tags separate use ;
#日志标签除外,工具会在logcat中检入,异常日志保存在exception.log中,多标签分开使用;
exceptionlog=fatal exception;has died
#monkey test,true will enable,other disable
#monkey 测试,true 将启用,其他禁用
monkey=
#test results save path,forbidden space, default None,will save in mobileperf/results
#测试结果保存路径,禁止空格,默认无,会保存在mobileperf/results
#example save_path=/Users/look/Desktop/project/mobileperf_output
save_path=
#device pull path,test end,tool pull path to PC,multi path separate use;
#设备拉路径,测试端,工具拉路径到PC,多路径分开使用;
phone_log_path=/data/anr # 日志文件
#mailbox Reserved, no use
mailbox=390125133@qq.com
- 运行,mac、linux 在mobileperf工具根目录下执行sh run.sh,windows 双击run.bat,结束测试,等待设置测试时长到或按Ctrl+C
测试案例
测试报告
报告分析
cpu
采集时间间隔 ,配置文件中默认 5 秒,由于对采集频率要求不高,top 支持同时采集多进程,结果简单易处理,实时性 可信度高,采用 top 的方式
测试过程中会生成 cpuinfo.csv,可以测试过程中查看,表中各列解释
内存
整机内存 可用内存通过 dumpsys meminfo 获取 Total RAM 、Free RAM
各进程 pss 通过 dumpsys meminfo package 获取 TOTAL 行 Pss Total 所在列的值,各进程 PSS 也可以通过 dumpsys meminfo 获取,只是拿不到各进程更详细的内存占比情况,比如堆大小、native、system、so 大小等
经在 CC 上测试发现 dumpsys meminfo 比 dumpsy meminfo package 耗时长,dumpsys meminfo 耗时 6s 多,dumpsys meminfo package 能在一秒内完成,采集频率 5s,dumpsy meminfo 会导致 CC 上 system_server 系统进程 cpu 由 2%增高到 80%,所以降低了 dumpsys meminfo 采集频率,采用 10 倍设置频率采集(比如 dumpsys meminfo package 5s,dumpsy meminfo 则 50s)
由于要支持多进程的情况,现在各进程 pss 通过解析 dumpsys meminfo 结果得到,dumpsys meminfo package 来获取各个进程的详细内存情况
在测试过程中会生成一个 meminfo.csv 文件,可以查看,表中各列解释
这个 csv 表格是用 dumpsys meminfo 得出的,汇总 xlsx 文件会在测试结束后生成,对应 meminfo 这个表格
logcat 日志(支持异常日志检测)
工具会保留全量 logcat 日志,每隔 60 万行会新建文件,辅助定位问题
如果配置文件中配置了异常日志
exceptionlog=fatal exception;has died
会将 logcat 中出现的异常日志都保存在 exception.log 中