Android性能测试之概述(一)
来源:互联网 发布:uu黑历史知乎 编辑:程序博客网 时间:2024/04/30 23:14
我们知道,当一个软件功能测试进行得比较稳定的时候,将会进行软件的调优,给用户的第一印象是功能,但是能不能留住用户,就是性能了。
本篇将会讨论关于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性能测试之概述(一)
- Android 应用性能测试方案一之 log 分析
- android客户端性能测试 (一)
- android客户端性能测试 (一)
- Android测试原理概述(一)
- 性能测试体系概述
- Android开发之性能优化概述
- Android 性能测试之TraceView
- android自动化测试之dumpsys性能测试
- Android性能测试之耗电量测试
- 移动APP测试之android性能测试
- Android自动化测试之Tmts系统概述
- 性能测试之我见(一)
- 性能测试之LoardRunner 手动关联一
- 性能测试之LoadRunner使用(一)
- Android 性能测试实践(一)
- Android 性能测试实践(一)
- Android 性能测试实践(一)
- UVa 1599 Ideal Path
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- NodeJs 安全
- 数据库 select @@identity说明
- Python中指针式传递的函数遇到的问题
- Android性能测试之概述(一)
- 信号处理国际会议排名
- webservice第一天
- TCP的那些事
- 查找算法总结
- (4.3)uboot详解——异常和异常向量
- ListView嵌套GridView显示不全解决方法
- 【ZJOI2009】狼和羊的故事
- host-only 与bridge方式的区别