Android性能测试之概述(一)

原创 2015年11月18日 19:39:36

我们知道,当一个软件功能测试进行得比较稳定的时候,将会进行软件的调优,给用户的第一印象是功能,但是能不能留住用户,就是性能了。

本篇将会讨论关于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客户端性能测试 (一)

2.1 性能指标 a,响应时间/加载速度 b,动画帧率         图片处理器每秒刷新的帧数(FPS),可用来指示页面是否平滑的渲染。高的帧率可以得到更流畅,更逼真的动画,不过帧率达到60fps以...
  • marryshi
  • marryshi
  • 2015年03月10日 18:17
  • 17024

Python爬虫进阶一之爬虫框架概述

爬虫入门之后,我们有两条路可以走。
  • qq_37267015
  • qq_37267015
  • 2017年03月20日 10:06
  • 1145

性能测试体系概述

性能测试是对系统整体处理能力进行验证、度量、评价和确认的过程,整体处理能力包括可承受的负载、资源的消耗、用户体验以及可靠性等。全面的性能测试不光贯穿软件开发的整个过程,还包括系统上线后的运维、升级过程...
  • jhyxzsf
  • jhyxzsf
  • 2016年03月04日 15:41
  • 445

软件性能测试概述(1)

性能是个日常生活中我们广泛提及的词语,比如买计算机、买车,我们都会问“性能怎么样?”,我们都期望到手的东西性价比是最高的。对于不同的东西,性能代表的意义也不尽相同,比如计算机的性能,通常是指运行程序的...
  • jhyxzsf
  • jhyxzsf
  • 2016年02月17日 11:08
  • 353

Android性能测试工具之APT - gether

1.APT工具简介: APT是一个eclipse插件,可以实时监控Android手机上多个应用的CPU、内存数据曲线,并保存数据;另外还支持自动获取内存快照、PMAP文件分析等,方便开发人员自测...
  • gzh0222
  • gzh0222
  • 2015年01月07日 15:14
  • 1179

性能测试概念再理解——集合点

集合点可以简单得理解为一种控制虚拟用户行为的机制,该机制可以达到在一定时间范围内将一定数量的虚拟用户阻挡在一个操作行为点前的位置进行互相等待,在条件(达到虚拟用户数量或超时)到达后唤醒全部等待中的虚拟...
  • xreztento
  • xreztento
  • 2016年12月23日 11:23
  • 1087

数学之美 概述

经典书籍 《数学之美》 总结
  • lch614730
  • lch614730
  • 2014年03月18日 15:14
  • 1084

安卓手机性能测试方法

1.开机时间:     一般测试的方法是人工计时,这的确是个不错的方法,但是耗时耗力,最重要的人工测试误差较大,而我经过查问,知道了在adb工具下有个命令:     adb shell cat /...
  • xiaodanpeng
  • xiaodanpeng
  • 2016年07月07日 09:09
  • 1772

Android自动化测试之UIAutomator(一)

Android程序开发迭代周期短,测试case重复度高,大部分case属于功能验证,常规的测试方法是测试人员按照预先写好的Case手顺进行测试,人工比对操作结果和预期结果。这种测试手段重复度高,效率低...
  • xzy2046
  • xzy2046
  • 2014年09月14日 13:55
  • 5086

Java的数据库编程之背景概述

(一)首先简单介绍下Java数据库编程的发展史: 1996年,SUN公司发布了第1版的Java数据库连接(JDBC)API,使编程人员可以通过这个API连接到数据库,并使用SQL完成对数据库的各种操...
  • yu102655
  • yu102655
  • 2017年02月15日 10:19
  • 515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android性能测试之概述(一)
举报原因:
原因补充:

(最多只允许输入30个字)