最近发现本身学的不少东西没有作好积淀的工做,也萌生了写一些东西的念头。本人也没有写博客的习惯,下边就写一下手机端的性能测试。php
最近公司,要咱们从事对竞品的性能测试,我负责CPU和内存的性能测试,下面就和你们来分享一下android应用程序的CPU和内存的性能测试。linux
首先稍作分析一下测试环境:咱们知道CPU和内存占用是一个实时变化的状态,而市面上尚未具体的哪款android应用能作到实时监控CPU和内存占用并使用log日志保存。考虑到android的底层框架是基于Linux的平台,全部咱们能够经过Linux的资源监控命令来实现对android平台的资源实时监控。android
要作到上边的测试环境的实现,须要具有如下几点:shell
一、被测试的手机具有root权限:由于涉及到底层的linux命令,须要读取或执行相应的文件。至于如何root你的手机,不一样型号的手机root的方法不同,这里就不作介绍了。具体的能够在网上搜索一下本身手机型号的root教程,这里就不作介绍了。网络
二、须要搭建android的开发环境:由于咱们须要监控的是具体的某个应用资源占用的状况,因此须要知道这个应用对应的“安装的包名”是什么,这就须要使用android开发环境中DDMS模块中的Devices中查看,当启动被测软件时,其主应用程序的安装包名通常就会在列表的最下端出现(如google地图等除外,开机就启动了)。框架
经过上边的截图咱们能够看到百度地图的主程序包名为:com.baidu.BaiduMap性能
因为篇幅有限,具体的android开发环境的搭建流程,能够参见网络上的教程,这里就不赘述了。测试
三、经过Linux命令监控。前边都是一些初始的准备条件,下边其实就是实际的操做流程:google
(1)adb shell (进入linux的底层)spa
(2)echo 3>/proc/sys/vm/drop_caches (清除一下系统cache)
(3)top -d 1 | grep com.baidu.BaiduMap (以百度地图为例,每一秒打印一次资源利用状况)
至于上边每一列表明什么含义呢?因为使用到了复合查询“管道符”的方式,因此必须拥有root权限,不然grep的命令没法识别。
在这里咱们看到cmd并无显示出所对应的列的标题,因此咱们能够单独经过top命令来了解到:
至于以上各列的含义我不说我想你们也应该猜获得了,在这里仅说一下咱们要用到的两个参数,其余的能够再网上查询了解:
|--CPU%:CPU占用率
|--RSS:实际占用的物理内存数,单位KB
咱们能够针对不一样的业务,打印出不一样的“标签”,用于区别如今从事的那个业务,并为后期分析各业务模块中CPU和内存的占用以及对比使用。
上边就是对具体的某款android应用的评测的数据的获取,咱们将日志复制到excel的表格中,并画出相应的数据表。
最后,能够根据获得的图表进行性能分析(多款同类软件进行比较),得出本公司软件的评审标准出来。
你们有什么见解意见,请及时拍砖~