Android 性能测试,跟 pc 性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类:
- 一类为 rom 版本的性能测试:但针对 rom 版本的性能测试,一般关注功耗。
- 一类为应用的性能测试:对于应用性能测试,包括很多测试项,如启动时间、内存、CPU、GPU、功耗、流量等
一、 应用的性能测试
(1) 启动时间 --关于应用的启动时间的测试,分为三类:
1. 首次启动 --应用首次启动所花费的时间
2. 非首次启动 --应用非首次启动所花费的时间
3. 应用界面切换 -- 应用界面内切换所花费的时间
启动测试方法分为两类:软件测试和硬件测试
软件测试方法,使用android 提供的 DisplayManager 来获取 activity 的启动时间DisplayManager 的打印时间方法后,还有通过关注 am 的启动时间及 DisplayManager 打印的结束时间,通过两者时间之间想减也能得到应用的启动时间,还有可以通过 PowerManager 来计算打印时间,在应用启动的时候,我们可以关注 ActivityManager-Launch 的变化来计算应用的启动时间,还有可以通过截图统计启动时间,对于自研应用,最效率的莫过于直接在程序中插入打印时间的节点了。
硬件测试方法,可以使用高速相机或者手机,采用录像的方法把应用启动过程给录制下来,然后通过人工数帧或者程序数帧的方式计算启动时间
(2)内存消耗:这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念,
- 空闲状态
- 中等规格
- 满规格,
空闲状态:指打开应用后,点击 home 键让应用后台运行,此时应用处于的状态叫做空闲。 中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。
接下来我们说说在内存测试中,存在很多测试子项,如下清单所示
1.空闲状态下的应用内存消耗情况
2.中等规格状态下的应用内存消耗情况
3.满规格状态下的应用内存消耗情况
4.应用内存峰值情况
5.应用内存泄露情况
6.应用是否常驻内存
7.压力测试后的内存使用情况
内存获取方法,分为下面几类
1.使用 android 本身提供的 ActivityManager.MemoryInfo()
方法获得(此方法请百度或 google)此类第三方工具有如网易的 Emmagee、安测试、腾讯的 GT 等
2.使用 android 提供的 adb shell dumpsys meminfo |grep packagename >/address/mem.txt
来获取
3.使用 android 提供的 procrank
这里我们详解一下 procrank
方法(批处理)
参考链接:Android 性能测试初探 (三) · TesterHome
(3) CPU、GPU
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
CPU 基于低延时的设计:
GPU是基于大的吞吐量设计。
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 来获取.
。