性能测试 不管是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 来比较差值,就是该业务使用的流量情
况。