APP性能测试(启动速度、内存、CPU、FPS、GPU、耗电量)
2019-06-12 18:30
2586 查看
版权声明: https://blog.csdn.net/xiadanying/article/details/91587096
测试标准
测试方法
常用命令:https://www.jianshu.com/p/91727ab25227
方法2:使用adb
adb shell am start -W com.kwai.global.video.social.kwaigo/com.yxcorp.gifshow.transfer.splash.SplashActivity
方法3:使用charles抓包(查看duration)
关注点
进行某个操作后,内存是否增长过快
旧版本和新版本比较
新版本和竞品比较
测试方法
获取当前活动的包名和actively(adb shell dumpsys window | findstr mCurrentFocus)(mCurrentFocus—当前焦点)
关注参数
native heap alloc(JNI层的内存分配)
dalvik heap alloc (java层的内存分配)
pss:应用真正占据的内存大小 注意:如果前两个值一直增长,应用程序可能出现了内存泄漏
方法2:使用性能测试工具emmagee
使用方法
安装到emmagee到手机上,启动
选择需要测试性能的应用启动
被测应用界面会展示内存、cpu、电流、流量等数据
stop test后,本地sd卡中会保存一份性能测试数据((保存地址:/sdcard/Emmagee/******* .csv文件))
可以通过excel将数据转化为图表,更直观的查看各性能指标的数据
方法3:使用AndroidStudio 自带 CPU 和内存检测功能 – Android Monitor
方法4:内存检测工具 DDMS -->Heap
关注点
和竞品对比
自身app各个activity对比
测试方法
adb shell top -m 10 -s cpu (查看cpu占用前10的应用)
top cpu 参数:
-m 显示最大数
-s 按指定行排序
-t 显示进程名称
-n 在退出前刷新几次
-d 刷新间隔
adb shell dumpsys cpuinfo |grep 包名(一段时间的平均值)
方法2:使用第三方工具Emmagee、GT等
方法3:使用androidstudio自带的检测工具android monitor
测试方法
操作要测试的app
在cmd窗口输入adb shell dumpsys gfxinfo 包名
得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。
Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。
Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。
Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保证每秒60帧
Janky frames:丢帧率
方法2:直接使用开发者选择自带的图标
操作要测试的app
绿色的线是16ms的分隔线,可以直接看出来流畅度
方法3:使用第三方工具Emmagee、GT等
方法4:使用androidstudio自带的检测工具android monitor
测试方法
打开被测的应用,进行操作
颜色深的区域为过度绘制的地方
原色:无过度绘制
蓝色:绘制一次
绿色:绘制两次
浅红:绘制三次(可以优化了)
深红:绘制四次(必须优化)
测试方法
方法1:使用第三方测试工具:Emmagee、GT等,只需要测试的电流静置一晚,待机
电流在正常范围内即可。一般是被测应用对比待机电流<=2mA。
方法2:使用adb命令
改变手机电池状态
切换手机电池为非充电状态adb shell dumpsys battery set status 1
获取电量消耗信息
获取某个apk的电量消耗信息: adb shell dumpsys batterystats com.Package.name | more
文章目录
启动速度
- 测试内容 冷启动速度
- 热启动速度
- 完全启动速度
- 有网启动速度
- 无网启动速度
- 主要测试冷启动和热启动
-
测试标准:冷启动时间不超过1.5s, 热启动不超过1s
-
方法1:通过FFmpeg录屏拆帧
官网:https://ffmpeg.zeranoe.com/builds/
-
adb shell am start -W packageName(包名)/ActivityName(活动名)(绝对路径,首个Activity)
方法3:使用charles抓包(查看duration)
内存
在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(私有内存+比例分配共享内存)来衡量一个APP的内存开销
- 测试点 空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少
- 中强度状态:时间偏长的操作应用
- 强度状态:高强度使用应用,可以跑monkey来测试(通常用来测内存泄漏) 内存泄漏:指应用里的内存一直没有释放,内存一直增加,系统内存一直减少
-
退出某个页面后,内存是否有回落
-
方法1:使用adb命令
adb shell dumpsys meminfo packageName
native heap alloc(JNI层的内存分配)
dalvik heap alloc (java层的内存分配)
pss:应用真正占据的内存大小 注意:如果前两个值一直增长,应用程序可能出现了内存泄漏
-
Emmagee是网易开发的一款测安卓应用性能的测试apk
CPU
主要关注的是cpu的占用率
- 测试点 在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
- 在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
- 在高负荷的情况下看cpu的表现(cpu应该是在80%以上)
-
和自身app的上个版本对比
-
方法1:使用adb
adb shell top -m cpu |grep packageName(查看某个软件的cpu占用率)
FPS(应用的使用流畅度)
fps是指画面每秒传输的帧数,每秒钟帧数越多,所显示的动作就会越流畅,一般来说安卓设备的屏幕刷新率为60帧/秒,要保持画面流畅不卡顿,要求每一帧的时间不超过1000/60=16.6ms,否则就会出现跳帧、画面卡顿
- 关注点 高于16ms的帧率(即卡顿率)
-
方法1:adb命令
打开手机:开发者选项->GPU呈现模式分析->在adb shell dumpsys gfxinfo
-
打开手机:开发者选项->GPU呈现模式分析->在屏幕上显示为条形图
GPU渲染
GPU渲染是指在一个像素点上绘制多次(超过一次),过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能忽视过度绘制。
- 测试指标 控制过度绘制为2x
- 不允许存在4x过度绘制
- 不允许存在面积超过屏幕1/4的3x过度绘制
-
方法1:使用手机的开发者选项
打开手机:开发者选项->调试GPU过度绘制->显示过度绘制区域
耗电量
测试应用对电量的消耗前需要对手机本身的电量消耗有个大概了解,然后再启动待测试app看看消耗的电量增加了多少,取差值
- 测试点 测试手机安装目标apk前后待机功率有无明显差异
- 常见使用场景中能够正常进入待机,待机电流在正常范围内
- 长时间连续使用无异常耗电现象
-
先关闭所有的应用,再打开被测app
-
adb shell dumpsys batterystats |grep packageName
-
手机连接电脑,默认为充电状态
-
获取整个设备的电量消耗信息: adb shell dumpsys batterystats | more
相关文章推荐
- android中衡量一个APK性能的方法(fps、cpu、内存、gpu、io参数)
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
- Android手机APP性能测试-CPU内存流量监测工具--Emmagee
- ios端app性能测试(cpu/内存/耗电)
- iOS开发 - app性能测试(cpu/内存/耗电)
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
- android中衡量一个APK性能的方法(fps、cpu、内存、gpu、io参数)
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
- android中衡量一个APK性能的方法(fps、cpu、内存、gpu、io参数)
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
- linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具
- Android的multidex带来的性能问题-减慢app启动速度
- app渲染性能专项测试之Profile GPU Rendering
- ios性能测试-实时查看内存/cpu
- APP性能优化之启动速度
- [原创] android应用性能测试之CPU和内存占用
- 性能测试问题_tomcat占用内存很高,响应速度很慢
- Android APP专项测试整理-内存及cpu
- mongdb性能压力测试,随机查询,数据量1亿条记录 操作系统centos6.4x64位 从测试结果看,当mongodb将数据全部载入到内存后,查询速度根据文档的大小,性能瓶颈通常会是在网络流
- 测试Android应用内存、CPU以及耗电量