移动性能测试 Android 性能测试初探 (三)

卡斯 · February 19, 2014 · Last by sad_orange replied at February 15, 2017 · 6600 hits
本帖已被设为精华帖!

书接上文 Android 性能测试初探(二) 本文接着往下聊,今天主聊 CPU内存

看到这两个名词,做过PC性能测试的就比较熟悉了,同样的性能测试关注点 :)

首先说说内存,移动端关注的是内存消耗,这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念,

  • 空闲状态
  • 中等规格
  • 满规格,

空闲状态:指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲。 中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。

接下来我们说说在内存测试中,存在很多测试子项,如下清单所示

1.空闲状态下的应用内存消耗情况
2.中等规格状态下的应用内存消耗情况
3.满规格状态下的应用内存消耗情况
4.应用内存峰值情况
5.应用内存泄露情况
6.应用是否常驻内存
7.压力测试后的内存使用情况

说了一些关于内存测试方面的设定,接下来我们聊聊测试方法DIY,现在关于android内存测试的方法基本分为几类,

1.使用 android 本身提供的 ActivityManager.MemoryInfo() 方法获得(此方法请百度或google)此类第三方工具有如网易的Emmagee、安测试、腾讯的GT等
2.使用 android 提供的 adb shell dumpsys meminfo |grep packagename >/address/mem.txt 来获取
3.使用 android 提供的 procrank

这里我们详解一下 procrank 方法(批处理)

首先去google获取procrank、procmem、libpagemap.so 三个文件 .

然后push文件,执行 adb push procrank /system/xbin adb push procmem /system/xbin adb push libpagemap.so /system/lib

赋权 adb shell chmod 6755 /system/xbin/procrank adb shell chmod 6755 /system/xbin/procmem adb shell chmod 6755 /system/lib/libpagemap.so ,

在开启工具记录 adb shell procrank |grep packagename >/address/procrank.txt

剩下的就是整理测试数据了

关于内存泄露方面的测试,可以通过几个方面来测试

1.通过monkey压力测试记录内存使用情况,分析数据曲线图及日志情况
2.通过eclipse上的mat+heap来分析存在内存泄露方面的节点

说了这么多内存的,我们再来说说CPU方面的,CPU跟内存一样,存在一些测试子项,如下清单所示

1.空闲状态下的应用CPU消耗情况
2.中等规格状态下的应用CPU消耗情况
3.满规格状态下的应用CPU消耗情况
4.应用CPU峰值情况

CPU的测试方法分为几类
1.使用android提供的adb shell dumpsys cpuinfo |grep packagename >/address/cpu.txt来获取
2.使用top命令 adb shell top |grep packagename>/address/cpu.txt 来获取
恩,说了大半章了,cpu及内存的测试相信各位应该有所了解了,下回继续聊其他测试项

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 22 条回复 时间 点赞

学习了, 问题主要集中报在内存这块.

感谢分享 不知楼主在性能测试方面的测试有无具体的标准? 比如CPU使用率应该在多少以下 PSS、VSS不能超过多少之类的

标准肯定有的,都是基于分辨率来设定的

这个和华为的测试基准是差不多一致的哦~

怎么去google获取procrank、procmem、libpagemap.so 三个文件?

关键是命令吐出来的,怎么去取?

菜鸟表示明白了一个大致的轮廓

内存泄漏的bug, 你们发现了多少

泄露有很多~

我觉得安卓性能测试取数据都是次要关注的,毕竟方法就这么几种,工具网上也很多,测试人员应该重点关注测试方案,拿到app对app做哪些操作然后读取值,以及读取了内存值之后如何判断是否有异常

adb shell dumpsys meminfo packagename
为什么我每执行一次这个命令,packagename的Dalvik Heap都会增大一点点,增大到一定程度就会回收一些,再继续增大,大家有遇到这样的问题吗?执行这个命令的过程中没有做任何操作啊

#10楼 @w263044840 不能更同意,定个合理的标准也很重要

用Android studio去监控吧,还那么原始于5年前~

我是菜鸟的,希望楼主帮忙解答下我的疑问的:

  1. "通过monkey压力测试记录内存使用情况,分析数据曲线图及日志情况",请问这个是monkey的健壮性测试的那个命令吗? 2.通过eclipse上的mat+heap来分析存在内存泄露方面的节点”,这个里面说的节点,假如说内存泄露了,请问节点是什么样子的?曲线图大概什么样子的呢?

#13楼 @shanghai_terry 用android studio如何监控?求教~

root之后装个管理器,设置权限
adb push文件的时候,我遇到的问题:
1、Read-only file system。
2、Operation not permitted
解决办法:
adb shell
$ su
# mount -o rw,remount /system
# chmod 777 /system
# cd system
# chmod 777 xbin
# cd xbin
# exit
$ exit
然后再执行adb push 就可以了
以上供参考~

17Floor has been deleted

同问android studio如何监控,楼主能出点教程福利么。

恒温 [Topic was deleted] 中提及了此贴 18 Jul 15:54
卡斯 [Topic was deleted] 中提及了此贴 18 Jul 15:54

procrash 的三个文件不能push到系统目标文件夹怎么回事呢?已经给目标文件读写权限

#16楼 @ping_sky 还是不行怎么办呢?

卡斯 #23 · August 08, 2016 作者

@uuuu 你手机没有root

“通过eclipse上的mat+heap来分析存在内存泄露方面的节点” 这块看了GC root,但是看不明白

恒温 《Android 性能测试初探》合集 中提及了此贴 29 Nov 15:15
卡斯 Android 性能测试初探 (四) 中提及了此贴 09 Jan 14:50

内存泄漏测试,是否跟Java和C++语言类别相关?

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up