Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为2类,对于应用性能测试,包括很多测试项,如启动时间、内存、CPU、GPU、功耗、流量等。但针对rom版本的性能测试,一般关注功耗。

一、不同版本的性能测试

1、rom版本的性能测试

rom版本一般就关注功耗测试,不过rom版本的功耗测试跟应用的功耗测试会有所差异,当然只是用例设计方面的差异,工具仍然采用安捷伦电源仪进行。

2、应用的性能测试

应用的性能测试,对于启动时间、内存、CPU测试大家一般都使用外部提供的第三方工具来辅助测试,如GT、安测试等、这些工具的原理都是基于调用Android底层的一些api来获取到测试所用到的值,当然我们也可以采用其他方法,如使用Android本身提供的一套adb即可完成上述测试。

对于GPU、功耗、等测试来说,用第三方工具测试得到的数值一般都不是很准确,这个时候我们需要引入硬件来进行测试了,GPU可以采用高速相机来进行测试,功耗可以使用万用表或安捷伦电源仪来进行测试(ps:有硬件动手能力的可以DIY一个小板进行)。

3、Android的性能测试

该本分内容为今天主要详述的内容,具体分析见下文。

二、关于Android的性能测试

1、启动时间

首先,我们来说说启动时间。关于应用的启动时间的测试,分为三类:

①首次启动--应用首次启动所花费的时间

②非首次启动--应用非首次启动所花费的时间

③应用界面切换--应用界面内切换所花费的时间那么如何来做启动时间的测试呢,一般我们分为2类,一类为使用软件来测试,一类为使用硬件来测试,首先我们说说软件测试的方法,可能大部分人都比较通晓使用Android提供的DisplayManager来获取activity的启动时间。

步骤:

通过计算activity最后剩余的时间之和即可(这里可以使用excel表格自动相加也可以使用算法,我就不详细介绍了)。

除了Display Manager的打印时间方法后,还有通过关注am的启动时间及Display Manager打印的结束时间,通过两者时间之间想减也能得到应用的启动时间,还有可以通过Power Manager来计算打印时间,在应用启动的时候,我们可以关注Activity Manager-Launch的变化来计算应用的启动时间,还有可以通过截图统计启动时间,对于自研应用,最效率的莫过于直接在程序中插入打印时间的节点了。

除了软件测试的方法,还有硬件测试,我们可以使用高速相机或者手机,采用录像的方法把应用启动过程给录制下来,然后通过人工数帧或者程序数帧的方式计算启动时间。

2、内存消耗

1)内存消耗概念

这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格。

空闲状态:指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲。

中等规格和满规格:指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。

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

①空闲状态下的应用内存消耗情况

②中等规格状态下的应用内存消耗情况

③满规格状态下的应用内存消耗情况

④应用内存峰值情况

⑤应用内存泄露情况

⑥应用是否常驻内存

⑦压力测试后的内存使用情况

2)关于Android内存测试方法分类

①使用Android本身提供的ActivityManager.MemoryInfo()方法获得(此方法请百度或google)此类第三方工具有如网易的Emmagee、安测试、腾讯的GT等。

②使用Android提供的对应内容,来获取。

③使用Android提供的procrank。这里我们详解一下procrank方法(批处理)。

首先,去google获取procrank、procmem、libpagemap.so三个文件;然后push文件,执行;最后,剩下的就是整理测试数据了。

3)关于内存泄露方面的测试

可以通过几个方面来测试:

①通过monkey压力测试记录内存使用情况,分析数据曲线图及日志情况;

②通过eclipse上的mat+heap来分析存在内存泄露方面的节点。

3、CPU方面的测试

1)子项清单

CPU跟内存一样,存在一些测试子项,如下清单所示:

①空闲状态下的应用CPU消耗情况

②中等规格状态下的应用CPU消耗情况

③满规格状态下的应用CPU消耗情况

④应用CPU峰值情况

2)CPU的测试方法

1.使用Android提供的

2.使用top命令

3.第三方软件

例如:3Dmax、安兔兔等。

3)GPU的测试方法

自从CPU及内存后,GPU这个词对于PC性能测试者也不陌生了。3Dmax、安兔兔等之类的第三方软件,让GPU在移动端性能测试领域都知晓。但对于应用的GPU该如何来测试呢?我们先引入几个名词:过度绘制、帧率、帧方差。

过度绘制:是指界面显示的activity套接了多层而导致;

帧率:是指屏幕刷新率;

帧方差:是指屏幕刷新帧间隔方差。

对于GPU的测试主要包括以下几个测试子项:界面过度绘制、屏幕滑动帧速率、屏幕滑动平滑度。

①过度测绘

它主要通过人工进行测试。打开开发者选项中的显示GPU过度绘制来进行测试(PS:只有Android4.2及以上的版本才具备此功能)。验收的标准为:

a、不允许出现黑色像素

b、不允许存在4x过度绘制

c、不允许存在面积超过屏幕1/4区域的3x过度绘制(淡红色区域)

②屏幕滑动帧速率的2种主要方法

→ 软件测试方法

a、手机端需打开开发者选项中的启用跟踪后勾选Graphics和View

b、启动SDK工具Systrace插件,勾选被测应用,点击Systrace插件,在弹出的对话框中设置持续抓取时间,在tracetaps下面勾选gfx及view选项,

c、人滑动界面可以通过节拍来进行滑动或者扫动,帧率数据会保存到默认路径下,默认名称为trace.html

d、将trace.html文件拷贝到linux系统下通过命令进行转换,生成trace.csv文件:

e、用excel打开文件计算得到帧率

→ 硬件方法

这里需要引入高速相机,打开高速相机,开启摄像模式,录制人滑动或者扫动被测应用的视频,再通过人工或者程序数帧的方法对结果进行计算得到帧率。

③屏幕滑动平滑度测试

方法如同帧率测试,唯一的差异就是最后的结果计算公式的差异。GPU的测试目前业界使用的均为硬件来进行,软件测试的数据相较硬件差异较大,对于帧率及帧方差的测试标准而言,需对待不同机型设定不同的标准。

4、功耗测试

1)功耗测试类别

功耗测试主要从以下几个方面入手进行测试:

a、测试手机安装目标APK前后待机功耗无明显差异。

b、常见使用场景中能够正常进入待机,待机电流在正常范围内。

c、长时间连续使用应用无异常耗电现象。

2)测试方法

①软件测试

A、第三方工具:如金山电池管家之类的;

B、自写工具:这里一般会使用3种方法:

第一种,基于Android提供的PowerManager.WakeLock来进行;

第二种,比较复杂一点,功耗的计算=CPU消耗+Wakelock消耗+数据传输消耗+GPS消耗+Wi-Fi连接消耗;

第三种,通过adbshelldumpsysbattery来获取。

②硬件测试

在这里,我们一般使用万用表或者功耗仪进行测试。使用功耗仪测试的时候,需要制作假电池来进行的,有些不能拔插电池的手机,还需要焊接才能进行功耗测试。

5、流量测试

性能测试的——流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。

1)流量测试,同样需要引入几个名词:中等负荷、高负荷。

中等负荷:应用正常操作

高负荷:应用极限操作

2)测试项包括:

a、应用首次启动流量提示;

b、应用后台连续运行2小时的流量值;

c、应用高负荷运行的流量峰值;

d、应用中等负荷运行时的流量均值;

3)流量测试一般都是用软件来进行的,这里我们一般分为2类:

a、采用市场提供的第三方工具来进行测试,如流量宝之类的;

b、自研工具进行测试。

今年金九银十我花一个月的时间收录整理了一套知识体系,如果有想法深入的系统化的去学习的,可以点击传送门,我会把我收录整理的资料都送给大家,帮助大家更快的进阶。

android java 时间测试方法_一个让你开挂的Android 性能测试方法相关推荐

  1. android java 时间格式化_(Java / Android)计算两个日期之间的日期,并以特定格式显示结果...

    我试图在2个日期之间计算日期如下: >获取当前日期 >获取过去或未来的日期 >计算不同的差异. 1和否2 >以下列格式显示日期 >如果结果是在过去(2天前)或将来(在2天 ...

  2. android java花指令_[原创]#30天写作挑战#Android记去花指令还原算法

    0x00 前言 小伙伴给我发来一道android题,涉及花指令,记录一下去除花指令和算法还原的过程. 样本 强网杯 flower.apk 0x01 花指令 花指令是企图隐藏掉不想被逆向工程的代码块(或 ...

  3. java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...

    折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...

  4. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  5. java notify视频_一个很好的小例子来演示java中的wait()和notify()方法

    任何人都可以在 java中为我提供一个很好的小例子演示wait()和notify()功能.我尝试使用下面的代码,但它没有显示我的预期. public class WaitDemo { int i = ...

  6. java多状态机_一个java状态机样例的代码

    在UML当中有状态机视图,这个状态机可以用于自动售货机,自动售票机等等场景,下面是用java代码模拟的一个状态机: 1.状态机接口 package stateMachine; /** * 状态机接口 ...

  7. android bitmap转图片_这是一份面向Android开发者的复习指南

    来自:简书,作者:九心 链接:https://www.jianshu.com/p/b3c1b9c6dd40 前言 相信很多同学都会有这样的感受,前三天刚刚复习的知识点,今天问的时候怎么就讲不出个所以然 ...

  8. android 日志框架封装,FLog: 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性、扩展性...

    FLog 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性.扩展性 下载 在根目录下的build.gradle中添加jitpack.io的maven地址 allprojects ...

  9. android 上下滚动文字_计算机毕设项目004之Android系统在线小说阅读器

    计算机毕设项目004之Android系统在线小说阅读器 一. 项目名称 基于Android系统的在线小说阅读器 二. 项目简介 项目中的角色功能: 支持翻页动画:仿真翻页.覆盖翻页.上下滚动翻页等翻页 ...

最新文章

  1. 【Swift】 GETPOST请求 网络缓存的简单处理
  2. UOJ#370. 【UR #17】滑稽树上滑稽果 动态规划
  3. 让Exchange 2010 (2007适用)可以收发外部邮件
  4. python和c哪个好学-C/C++和Python哪个更有前景?
  5. ORACLE穿透防火墙问题
  6. MySQL exists的用法介绍
  7. 临近春招,Kafka是不是忘完了,给你一文概括Kafka
  8. vb treeview 展开子节点_详解最长公共子序列问题,秒杀三道动态规划题目
  9. java 编程原理_Java网络编程 -- 网络编程基础原理
  10. 【数据结构----笔记3】插入排序算法之【直接插入排序】
  11. Serverless 是一种思想状态
  12. markdown与latex:像小学生一样写乘X号\times
  13. 打开计算机显示远程控制,win7系统远程协助怎么打开?开启远程协助功能教程...
  14. CTWAP、CTNET、彩信
  15. 链塔区块链数据平台周报:新增富豪榜、项目点评、收藏等功能 | 链塔数据
  16. 使用AHK减少鼠标和方向键的使用频率,高效编辑
  17. 计算机三级网络技术分值占比,大一能考计算机三级吗?计算机三级考试题型分析...
  18. Java处理小数点精度
  19. 【微信小程序云开发】利用excel导入到云数据库时乱码
  20. 背景橡皮擦,通道抠图

热门文章

  1. Linux 学习笔记_12_文件共享服务_3_NFS网络文件服务
  2. 关于matlab中的梯度使用
  3. JVM内存管理------垃圾搜集器简介
  4. 跨平台的 .NET 运行环境 Mono 3.2 新特性
  5. Oracle 字符转date类型问题,未解决
  6. 浅谈Android引用计数(2)
  7. Windows2003实用技巧
  8. [swift]-使用JavaScript解决WKWebView无法发送POST参数问题
  9. 《实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)》一导读
  10. 不计前嫌,握手言和:Microsoft宣布新版SQL Server将同时支持Windows与Linux两大平台...