Android性能测试之概述(一)
2015-11-18 19:39
218 查看
我们知道,当一个软件功能测试进行得比较稳定的时候,将会进行软件的调优,给用户的第一印象是功能,但是能不能留住用户,就是性能了。
本篇将会讨论关于Android中几个最重要的性能指标,将对性能这个玩意有一个整体的认知,之后的篇幅将会对这几个指标的原理以及测试方法做一个全面的讲解。
指标:时延(流畅度) 内存 CPU 流量 功耗 5大块
时延:
时延指的是时间延迟了,我把它和流畅度归类到一起了。
这里如果设计测试场景的话,涉及到比较简单的几个方面:
第一次加载应用
非第一次加载应用
各个页面滑动的流畅度
衡量的方法也是非常简单,logcat只要过滤Displayed标签就可以得到各个Activity启动的时间,当然我们一般加上ActivityManager这个标签表示启动的哪一个activity
如图了,+428ms就是我们需要的数值了。
对于流畅度,安卓也提供了方法给我们
首先,打开开发者调试--监控--GPU呈现分析--选择在adb shell dumpsys gfxinfo这一项
打开之后只要在操作某一步骤之后输入命令dumpsys gfxinfo这个命令就可以取到GPU绘制的相关信息,打开这个文件找到Profile data in ms这个字段,就可以看到是否流畅了,一般而言ms数不要超过16ms就算ok
这张图我做的操作只是滑动一个自定义控件得到的数值。
当然,这个文件的其他部分也是很有意思的,有兴趣可以看看,以后看时间写一下各个字段含义
最后,衡量流畅度还有帧率(第三方软件还是很多的),屏幕过度绘制等等指标。
内存:
内存
android内存分为两部分 native和dalvik 其中bitmap是算在native里面的 而dalvik是java的代码堆
我们可以直接通过dumpsys meminfo [packagename]这条命令列出进程相关内存状态
具体解释内容放在提高篇再详细写吧,不过先记几个概念再说:
vss:虚拟机的内存
rss:实际占用的内存,包含共享内存+私有内存
pss:私有内存和共享内存的平均,即总的共享内存/各个应用+私有内存
uss:就是私有内存
上面4个参数还是挺重要的。
CPU:
CPU可能是性能最简单衡量的一个了,直接调用linux命令的top,就直接打出来了,不过说,常用两个参数
-m mun打印出前面多少各进程
-s sort,按什么顺序排列,有cpu vss虚拟机内存 rss实际内存 thr线程
流量:
测试流量两种方法,第一种直接用市面上的第三方工具统计,本质就是调用api接口,安卓给我们封装了一个非常好用的接口TrafficStats,强大的类,强大的方法,如果怕第三方本身就是耗流量的也可以自己实现apk去统计,更加准确。
第二种方法就是直接读取应用的流量统计数据文件,安卓的类统计本质上就是读取这个文件+计算得到的,本人还是建议用api接口把,简单,强大。
linux目录在/proc/[uid]/net/dev这个目录,UID的获取可以用dumpsys package [packageName]得到,UID是个啥?简单的说就是用来区分应用程序的一个id,且每个机型都是唯一的,UID相同才能互相访问资源,保护应用的安全....等等特性了。
功耗:
就是耗电,自带的统计就可以看到了,记得很多人研究过耗电,但是都没有结果,原因是耗电这个数据差异性太大,尤其是通过软件的检测,所以这个玩意只能作为一个参考,正真的大公司都是通过硬件检测电流来计算的,打算用一个篇幅学习一下耗电的原因和api统计耗电的实现。
好了,今天就写这么多吧,下班,回家!
本篇将会讨论关于Android中几个最重要的性能指标,将对性能这个玩意有一个整体的认知,之后的篇幅将会对这几个指标的原理以及测试方法做一个全面的讲解。
指标:时延(流畅度) 内存 CPU 流量 功耗 5大块
时延:
时延指的是时间延迟了,我把它和流畅度归类到一起了。
这里如果设计测试场景的话,涉及到比较简单的几个方面:
第一次加载应用
非第一次加载应用
各个页面滑动的流畅度
衡量的方法也是非常简单,logcat只要过滤Displayed标签就可以得到各个Activity启动的时间,当然我们一般加上ActivityManager这个标签表示启动的哪一个activity
如图了,+428ms就是我们需要的数值了。
对于流畅度,安卓也提供了方法给我们
首先,打开开发者调试--监控--GPU呈现分析--选择在adb shell dumpsys gfxinfo这一项
打开之后只要在操作某一步骤之后输入命令dumpsys gfxinfo这个命令就可以取到GPU绘制的相关信息,打开这个文件找到Profile data in ms这个字段,就可以看到是否流畅了,一般而言ms数不要超过16ms就算ok
这张图我做的操作只是滑动一个自定义控件得到的数值。
当然,这个文件的其他部分也是很有意思的,有兴趣可以看看,以后看时间写一下各个字段含义
最后,衡量流畅度还有帧率(第三方软件还是很多的),屏幕过度绘制等等指标。
内存:
内存
android内存分为两部分 native和dalvik 其中bitmap是算在native里面的 而dalvik是java的代码堆
我们可以直接通过dumpsys meminfo [packagename]这条命令列出进程相关内存状态
具体解释内容放在提高篇再详细写吧,不过先记几个概念再说:
vss:虚拟机的内存
rss:实际占用的内存,包含共享内存+私有内存
pss:私有内存和共享内存的平均,即总的共享内存/各个应用+私有内存
uss:就是私有内存
上面4个参数还是挺重要的。
CPU:
CPU可能是性能最简单衡量的一个了,直接调用linux命令的top,就直接打出来了,不过说,常用两个参数
-m mun打印出前面多少各进程
-s sort,按什么顺序排列,有cpu vss虚拟机内存 rss实际内存 thr线程
流量:
测试流量两种方法,第一种直接用市面上的第三方工具统计,本质就是调用api接口,安卓给我们封装了一个非常好用的接口TrafficStats,强大的类,强大的方法,如果怕第三方本身就是耗流量的也可以自己实现apk去统计,更加准确。
第二种方法就是直接读取应用的流量统计数据文件,安卓的类统计本质上就是读取这个文件+计算得到的,本人还是建议用api接口把,简单,强大。
linux目录在/proc/[uid]/net/dev这个目录,UID的获取可以用dumpsys package [packageName]得到,UID是个啥?简单的说就是用来区分应用程序的一个id,且每个机型都是唯一的,UID相同才能互相访问资源,保护应用的安全....等等特性了。
功耗:
就是耗电,自带的统计就可以看到了,记得很多人研究过耗电,但是都没有结果,原因是耗电这个数据差异性太大,尤其是通过软件的检测,所以这个玩意只能作为一个参考,正真的大公司都是通过硬件检测电流来计算的,打算用一个篇幅学习一下耗电的原因和api统计耗电的实现。
好了,今天就写这么多吧,下班,回家!
相关文章推荐
- Android多媒体分析-通过MediaStore获取Audio信息
- Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数
- 思路超简单的Android Socket 通信 Demo 注释详细
- 创建android项目时没有自动生成R.java文件的解决方法
- android 通过Camera和Surfaceview实现照相 图片预览 保存图片到本地 手动聚焦 FaceDetectionListener实现人脸识别
- Android_Fragment
- Android中ContentObserver的使用
- Android开发艺术探索学习-IPC之Binder(一)
- 高德地图AndroidSDK错误码返回值为32解决办法(暨如何获取SHA1值的正确方法)
- Android中的savedInstanceState
- 最新 Android 视频分享
- 首页增加沉浸式状态栏,仅支持android4.4及以上
- Android定时器Timer.schedule
- 穿越之旅之--android中如何执行java命令
- 不可不知的android开发冷知识3
- android布局的优化
- Android中调用c函数来打印log---(JNI)
- android控件的绘制过程
- Android 屏幕适配方案
- Android Studio中代码混淆