测试技术之APP性能测试指标和测试方法
白羽 2018-06-12 来源 :网络 阅读 1377 评论 0

摘要:本文将带你了解测试技术之APP性能测试指标和测试方法,希望对大家学测试技术有所帮助。


常用方法


方法一:Android系统自带统计功能(总体流量数值)

Proc/uid_stat/{UID}/tcp_snd和tcp_rcv

· UID是每个app安装时候分配的唯一编号用于识别该app.

· tcp_snd:表示发送数据累计大小,单位是字节

· tcp_rcv:表示接收到的数据累计大小。

具体步骤:

(1)通过包名获取app的PID;

(2)再访问/proc/{PID}/status文件查找app对应的UID;

(3)通过UID号加上100000号查看接收和发送的流量文件

方法二:Wireshark+tcpdump

./tcpdump -s 0 -w ./t1.pcap -v

· -s 0:默认抓包抓取长度是68字节,加上-s 0可以抓到完整的数据包。

· -w xxx:抓取到的包存放路径。

· -v:抓包过程中显示抓包的数量

方法三:GT(随身调)工具(直接调用android的api):

TrafficStats类是Android提供的一个流畅统计类,可以统计手机开机累计到现在使用的流量,也可以统计某个或者多个进程或者应用所使用流量,包括Wi-Fi和移动数据GPRS。

GT使用TrafficStats.getUidTxBytes(uid)来获取流量数据(该方法号称是获取到指定 uid 发送流量的总和,但实测情况是只有 tcp 层的流量)。

GT(随身调)是APP的随身调试平台,是直接运行在手机上的IDTE。可以使用GT对APP进行快速的性能测试(CPU、内存、流量、电量、帧率/流畅度等)、开发日志查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。

GT官网

流量测试的分析


· 域名的流量消耗:抓包后,利用现有工具统计不同域名下的流量消耗。便于发现某个服务器是否存在流量消耗过大。

· 协议的流量消耗:便于发现某个协议是否存在流量消耗过大或者协议拉取较频繁的现象。

电量


Battery Historian:Google提供的电量分析工具,Android 5.0以上支持

adb shell dumpsys battery //读取电量和温度

adb shell dumpsys batterystats --reset //重置电池统计信息

adb shell dumpsys batterystats > batterystats.txt // 获取电池统计信息

python historian.py batterystats.txt > batterystats.html //生成报告

参考

CPU


/proc 文件系统是一个伪文件系统,只存在内存中而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。

从proc文件可以获取:系统、进程、线程的CPU时间片使用情况,所以两次采集时间片的数据就可以获取进程CPU占用率。

CPU占用率=(进程T2-进程T1)/(系统T2-系统T1)

进程总CPU时间

 

总CPU时间 totalCPUTime=user+nice+system+idle+iowait+irq+softird

processCPUTime=utime+stime+cutime+cstime  

 

线程总CPU时间 threadCPUTime=utime+stime+cutime+cstime

· utime:该任务在用于态运行的时间,单位为jiffies

· stime:该任务在核心态运行的时间,单位为jiffies

· cutime:累计的该任务所有waited-for进程曾经在用户态运行的时间,单位为jiffies

· cstime:累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies

获取系统CPU时间片:读取proc/stat

获取进程CPU时间片:proc/pid/stat

线程时间片:/proc/pid/task/tid/stat

内存


· 系统内存:

· 系统内存:/proc/meminfo

· 系统空闲内存:ActivityManager

· 系统已有内存:总内存-空闲内存

· 进程内存:

· 进程内存上限、总内存都可以直接使用 am.getProcessMemoryInfo(PID)获取

· 也可以直接使用top命令

流畅度检测


流畅度:Android系统每隔16.7ms发出垂直同步信号(VSync信号)(1000ms/60=16.67ms)触发对UI进行渲染。流畅画面需要60帧/s,为了能够实现60帧/s,意味着计算渲染的大多数操作必须在16.7ms完成。

当绘帧间隔超过16.7ms,垂直同步机制会让显示器硬件等待GPU完成栅格化渲染操作,我们就可以说此时掉帧了,也会造成用户直接感官的卡顿。

1秒内vSync信号的次数定义为流畅值,即SM。

卡顿分类:

· 低流畅值区间:连续小卡顿造成的丢帧,即平均流畅值低于40帧/s的区间。

· 单次大卡顿:单次大卡顿造成的丢帧,即两次绘帧间隔大于70ms,相当于丢了4帧以上的区间。

Android的帧绘制流程是:CPU主线程图像处理->GPU进行光栅化->显示帧。APP产生掉帧的情况大多是由“CPU主线程图像处理”这一步超负载引起。

页面启动时长


页面启动时长:

· Activity启动时长:唤醒Activity到Activity在前台进行第一次绘制的时间,绘帧检测

· Fragment启动时长:唤醒Fragment到Fragment执行onResume的完成时间。

· 冷启动:页面从startActivity开始

· 热启动:页面从onStart或者onResume开始

 


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved