测试基础 [腾讯 TMQ] 常用流量测试方法及一些思考

匿名 · 2018年03月07日 · 1807 次阅读

导读

app 性能测试中流量测试是其中重要的一项,网络场景(wifi、非 wifi)、用户使用场景(页面加载流量、场景使用流量、待机流量),这些都是需要考虑的测试点。

各个业务的产品形式不同,因此场景选择及流量目标需要根据项目实际情况来进行。本文主要讲解一些常用的流量测试方法,以及在测试过程中获取到一些可以协助分析定位的信息。

常用 APP 流量测试方法

App 的流量测试方法有很多种,说起流量测试,也许大家的第一反应就是 tcpdump/wireshark 这类网络抓包工具。的确,Android 系统确实也支持 tcpdump 工具,通过 tcpdump,我们可以实现非常精准的流量测试。其实,对于特定 apk 的整体流量数据,在 Android 系统中都会存储到对应文件中,我们完全可以通过读取对应文件来获得当前 apk 的流量信息。

方法一

————android 系统自带统计功能

通过直接读取 android 系统上的两个文件的内容:Proc/uid_stat/{UID}/tcp_snd 和 tcp_rcv,其中 UID 是每个 app 安装时分配的唯一编号用于识别该 app,tcp_snd 中的数据表示发送的数据累计大小,单位是字节,tcp_rcv 表示接收到的数据累计大小。

通过 adb 命令进入 shell 可以获取到这些数据。

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

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

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

这个做法也是很多手机安全软件的做能比较简单的给出各个 app 的流量消耗情况,如果我们只关注总体的流量数值还好,但要是我们希望能测试得到更细化的数据,该方法就没法满足我们的测试需求了。

方法二

————wireshark+tcpdump

常用的在手机上抓包的工具是 wireshark 和 liunx 下的 tcpdump。Tcpdump 抓包需要 root 权限,ios 的话需要越狱。

(1)在一台 root 手机上先下载 tcpdump 可执行文件,通过 adb push 命令上传到手机上。有时候直接 push 到/data 目录下会存在权限问题,这个时候可以先将 tcpdump 文件 push 到 sdcard,在从 sdcard 中将文件 cp 到/data/local 目录,其他目录下的权限问题较多。在将 tcpdump 文件赋读写权限。

(2)然后可以进入 tcpdump 所在目录执行命令抓包了, ./tcpdump -s 0 -w ./t1.pcap -v。

上方这个 Got 的数据会随着访问不断变化。

关于 tcpdump 的命令可以参考命令手册,不再展开,上面的几个参数的含义:

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

-w ./t1.pcap:将抓到的内容存入 t1.pcap 文件。

-v:在抓包过程中显示抓包的数量。就是 Got 旁的数据。

(3)抓包结束后,将 t1.pacp 传到电脑用 wireshark 分析工具进行查看和分析。

方法三

————GT 工具

GT(随身调)是 APP 的随身调测平台,它是直接运行在手机上的 “集成调测环境”(IDTE, Integrated Debug Environment)。利用 GT,仅凭一部手机,无需连接电脑,您即可对 APP 进行快速的性能测试 (CPU、内存、流量、电量、帧率/流畅度等等)、开发日志的查看、Crash 日志查看、网络数据包的抓取、APP 内部参数的调试、真机代码耗时统计等。GT 中的抓包工具就是对方法二 tcpdump 进行的易用性封装,无需连接电脑,随时随地随心所欲的抓包。关于更多的使用方法请查阅http://gt.qq.com/index.html

如何进行流量测试的分析

单纯只测试出一个总体的结果,不管是给我们自己进行分析或是丢给开发定位,给到的信息都是不够的。那使用什么样的方法可以在测试流量的过程中,同时获取到一些便于我们分析和定位的数据呢?

下边跟大家说说我是如何思考和实践的:

流量测试既关注域名的流量消耗,又关注协议的流量消耗。对于域名的流量消耗,只需通过抓包后,再利用现有工具统计不同域名下的流量消耗即可。

但是协议的流量消耗呢?如何统计不同域名下的不同协议拉取频率和每次拉取的流量消耗?如何定位拉取频率是否过高,是否有某次摘取流量消耗异常过大呢?

我们的测试策略是:需要在有网络请求的地方把相关协议名称、请求 ID、请求大小、回包大小通过本地协议日志文件输出,再接合抓取的包进行解析,根据请求 ID 来确认该域名的协议名称。

如下图所示:

测试结果得到域名流量和协议流量文件,基于域名流量统计主要目的是便于发现某个服务器是否存在流量消耗过大;基于协议流量统计主要便于发现某个协议是否存在流量消耗过大或者协议拉取较频繁的现象。

版权所属,禁止转载!

扫描下方二维码,关注微信公众号:腾讯移动品质中心 TMQ,获取更多测试干货!

暫無回覆。
需要 登录 後方可回應,如果你還沒有帳號按這裡 注册