性能测试 不管是Android还是pc的,都是分为客户端和服务端 2部分。不同的地方是 测试Android在客户端的性能测试有2部分组成: 本文主要是写的对app的性能测试 不关注rom包的性能测试。

 第一类:rom包版本的性能测试 ,一般只关注功耗。

 第二类:app应用的性能测试 包括很多,比如:app启动时间,cpu,gpu,功耗流量等。对于启动时间,内存和cpu等一般

是采用第三方提供的工具,比如GT、安测试等,这些工具都是基于调用android底层的api来获取测试所需要的数据。或者我们

可以使用android自带的adb命令来实现。

而对于gpu和功耗来说,使用第三方提供的工具获取的数据可能不太准确 ,这就需要借助硬件来实现,比如测试gpu时,可以

借助高速相机,而对于功耗,可以采用万用表或者安捷伦电源仪。

启动时间的测试 :

启动时间分为三类:

1 首次启动app --冷启动

2 非首次起app--热启动

3 应用间界面切换

使用adb命令获取app的冷启动时间:adb shell am start -W -n 包名/主activity名

取waittime1144ms。

启动app后关闭app 使用命令 adb shell am force-stop 包名

热启动获取 ,打开app,使用命令adb shell input keyevent 3 按返回或者home键将app退到后台,再次使用

adb shell am start -W -n 包名/主activity名 获取热启动时间

关于内存:移动端关注的是内存消耗,目的是为了不让app占用过多的系统资源,并且可以及时的释放内存,保证系统的稳定

性。在测试内存的时候 有几个状态需要测试 ,分别是 空闲状态,中等规格 和满规格 三种状态。

空闲是指:打开应用后,点击home键让app进入后台运行。

中等规格是对应用的操作时间较长,而满规格是对应用的操作时间较短。

关于内存情况 还有几个点,分别是内存峰值,内存泄漏和常驻内存。所以对应内存的测试 大约有如下7种场景

1 空闲状态下app的内存消耗

2 中等规格下app的内存消耗

3 满规格下app的内存消耗

4 app的内存峰值

5 app的内存泄漏

6 app的常驻内存是多少

7 压测后的内存使用情况

获取内存信息并保存到某文件中:

adb shell dumpsys meminfo 包名 >路径

对应cpu测试同样是对空闲状态 中等规格和满规格状态的cpu消耗

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

获取cpu信息:

adb shell dumpsys cpuinfo | findstr 包名

adb shell top -n 1 |findstr 包名

VSS (Virtual set size)是虚拟内存 RSS(Resident) 是实际使用内存

关于GPU测试,首先了解几个名词:

过度绘制 :界面显示的activity套接了多层导致,可以在手机设置中打开

  显示过度绘制手机屏幕会出现不同的颜色,

 深红色:绘制5次及以上,必须要优化了,红色:绘制4次,要优化

绿色:绘制3次,蓝色:绘制2次,理想状态;白色无色,绘制一次。

帧率 :屏幕刷新率

帧方差:屏幕刷新帧间隔方差

测试项:

1 界面过度绘制   2 屏幕滑动帧速率  3  屏幕滑动平滑度

对gpu过度绘制的验收标准是 :1 不允许出现黑色像素  2 不允许存在4x的过度绘制 (红色)

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

 

获取GPU信息:

adb shell dumpsys gfxinfo 包名

对于GPU的测试,业界均为硬件来进行测试,软件测试的数据相比硬件得到的测试数据差异很大,对于帧率很帧方差

需要对不同的机型设置不同的标准,而硬件测试GPU ,通常是引入高速相机,录制滑动app的视频,通过人工数帧或

程序数帧的方法对结果计算统计得到帧率。

功耗测试(电量测试)

对于功耗的测试要从以下几个方面进行测试:

1测试手机安装apk前后待机功耗是否有明显区别

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

3 长时间联系使用手机电量无异常耗电现象

也分为硬件测试和软件测试

软件测试可以使用第三方软件 比如金山电池管家等或者使用adb命令获取电量信息:adb shell dumpsys battery

硬件测试就是使用万用表或者功耗仪。

这个图中标红部分 状态为2  就是usb连接手机 手机处于充电状态,当然 这个时候的电量是不准确的,那么就可以

使用该命令切换为非充电状态  sdb shell dumpsys battery set status 1

这样就是非充电状态了 

针对流量测试 同样需要了解几个名词,

中等负荷:应用正常操作 高负荷:应用极限操作

流量测试包括以下测试项:

1 应用首次启动流量提示。

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

3 应用高负荷运行的流量峰值

4 应用中等负荷的流量均值。

使用工具或者第三方软件进行测试 如流量宝等

在不使用第三方软件时 有2类方法 ,主要使用adb命令获取

1 通过tcpdump抓包,然后在使用wireshark直接读取报数据来获取流量。

2 首先获得待测app的uid信息 查看uid 分2步 首先使用 adb shell ps|finstr 包名 得到pid 然后在用adb

adb shell cat /proc/pid/status得到uid。这是获取uid的截图。

使用 adb shell cat/proc/pid/net/dev     查看receive和transmit的值

然后对app进行业务操作,完成后再次执行命令 adb shell cat/proc/pid/net/dev  来比较差值,就是该业务使用的流量情

况。

 

 

 

 

 

更多相关文章

  1. [置顶] android图形系统详解六:View layer
  2. Android(安卓)图片内存溢出(Out of Memory)
  3. Android中View的绘制
  4. 星云精准测试对安卓底层驱动代码的测试案例分析
  5. android基础知识16:多分辨率屏显设计及其兼容性测试
  6. Android真机测试 连接本地服务器 手机测试访问本地服务器 androi
  7. Android(安卓)XML shape 标签使用详解(apk瘦身,减少内存)
  8. 『Android自定义View实战』自定义带入场动画的弧形百分比进度条
  9. Android(安卓)性能优化5 - 内存优化

随机推荐

  1. Android:An SDK Target must be specified
  2. android获取网络图片
  3. Android下调用jni时进行的转码操作实例
  4. android 读书笔记 1
  5. 初学Android(一)
  6. template class build errors in android
  7. Android中的string资源占位符及Plurals s
  8. android中的权限说明
  9. Android(安卓)adb setuid提权漏洞的分析
  10. 通过AIDL及反射机制,使用隐藏API挂断电话