https://www.cnblogs.com/hyh-test/p/8629555.html
待测指标
1.关注资源消耗(CPU、内存、流量、功耗)
2.启动耗时(冷启、热启),(这个也是很多云测时用到的一个指标)
3.主要页面加载时间
4.内存泄漏、抖动、卡顿、页面渲染(FPS)
1. 获取待测APP包名
使用命令:adb shell pm list package -3 -f #获取第三方apk的包,也可以使用DDMS工具获取
2. CPU
cpu检测我们要分3种情况:
1.在空闲时间的消耗,基本没大应用使用cpu
2.在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
3.在高负荷的情况下看CPU的表现,我定义这个高负荷,cpu占用应是在80%以上
2.1 如何查看CPU的使用值
获取手机总内存,命令:adb shell cat /proc/meminfo |findstr MemTotal
使用命令:adb shell dumpsys cpuinfo apk包名
从上图我们可以看出:0.4%是针对这个CPU的占用率是0.4%,标红的地方0.3%占用率是用户使用的,0是内核的占用率,这个数只是针对1核来说,
问题:现在手机都是多核的了,那这样的值也不会太准确,那怎么做?
经验:一般这种取值的,在测试的时候,会多采集几次,求平均值
上面数据太多了,我们还可以可以用下面这个命令,和top命令,获取单个数据
adb shell dumpsys cpuinfo |grep packagename
3. 内存
3.1内存泄漏
说到内存方面,最经典的内存问题当数内存泄漏。百度上对内存泄漏的定义是这样的:内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。通俗点讲,在大部分应用中,会有一类功能是需要加载附加资源的,比如显示从网络下载的文本或图片。这类功能往往需要在内存中存放要使用的资源对象,退出该功能后,就需要将这些资源对象清空。如果忘了清理,或者是代码原因造成的清理无效,就会形成内存泄漏。
3. 2垃圾回收
说到了内存泄漏,又不得不提到垃圾回收(Garbage Collector,简称 GC),内存中的垃圾,主要指的是内存中已无效但又无法自动释放的空间,除非是重启系统不然永远也不会还给操作系统。这样以来,时间久了当程序运行的时候就会产生很多垃圾,一方面浪费了不少内存空间,另一方面如果同一个内存地址被删除两次的话,程序就会不稳定,甚至奔溃。
在 Java 程序运行过程中,一个垃圾回收器会不定时地被唤起检查是否有不再被使用的对象,并释放它们占用的内存空间。但垃圾回收器的回收是随机的,可能在程序的运行的过程中,一次也没有启动,也可能启动很多次,它并不会因为程序一产生垃圾,就马上被唤起而自动回收垃圾。所以垃圾回收也并不能完全避免内存泄漏的问题。
另一方面,垃圾回收也会给系统资源带来额外的负担和时空开销。它被启动的几率越小,带来的负担的几率就越小。
3.3. 内存指标
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS,一般测试中关注的比较多的是 PSS 这个指标。
vss,虚拟内存 ,每一个应用时一个java虚拟机,系统会分配一个内存,内存每做一个操作,这样是控制内存的大小,但是不会大于最大限制,虚拟内存就就消失掉,我们比较关心
Rss 物理内存(包含共享库的内存),应用实际占用的内存,
pss实际使用的物理内存(比例分配共享占用内存) 如3个进程,那么进程的消耗就应该是除以3,才表示一个
USS 进程中独自占用内存
USS针对某个进程开始有内存泄漏的情况,是一个程序启动了会产生的虚拟内存,一旦这个程序进程杀掉就会释放
具体更详细的参考博主:http://blog.csdn.net/bigconvience/article/details/35553983
3.4内存测试方法:
3.4.1方法一:用命令,多次采集,得出内存值,看内存是否异常
1.adb shell dumpsys meminfo
2.adb shell meminfo PID
内存要多次测试
使用PID的方式查看:
我们关注的是:Heap size 是实际用到的内存 Heap alloc :是实际分配的值
问题:但是你可以发现alloc<size,原因进程使用的是虚拟内存,虚拟内存使用远大于物理内存
内存我们还可以查看他的单个应用程序最大的内存限制
adb shell getprop |grep heapgrowthlimit
另外一种方式:我们还可以使用procrank工具,就可以查看内存值
3.4.2方法二:
Android Studio 自带的一个强大的性能分析工具,里面一共包含 5 个模块:Logcat、Memory、CPU、Network 及 GPU。
Memory Monitor 可以实时查看 App 的内存分配情况,判断 App 是否由于 GC 操作造成卡顿以及判断 App 的 Crash 是否是因为超出了内存。
4.流量
1、方法1:使用adb shell cat/proc/“+PID+”/net/dev 的命令来查看流量数
:2、方法2::通过抓包的方式,在一个操作内,看流量中的消耗,可以借助wireshork这个工具
总结:
做性能测试的方式有两种:1.竞品分析 2.版本对比 这是现在很多公司使用的一种方式