常用流量测试方法及一些思考

导读

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(gh_2052d3e8c27d)

原文发表时间:2018-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏架构师小秘圈

大型网站图片服务器架构的演进

作者:丁浪,非著名架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技术研究和分享。 声明:版权归丁浪...

3354
来自专栏左瞅瞅,右瞅瞅

DNS上线之路(五)——DNS视图

智能DNS是域名服务在业界首创的智能解析服务。能自动判断访问者的IP地址并解析出对应的IP地址,使网通用户会访问到网通服务器,电信用户会访问到电信服...

1374
来自专栏码神联盟

架构之路 | 浅谈单点登录(SSO)技术实现机制

1何为单点登录? 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需...

3608
来自专栏皮振伟的专栏

[linux][storage]Linux存储栈

前言: 随着Linux的版本升高,存储栈的复杂度也随着增加。作者在这里简单介绍目前Linux存储栈。 分析: 1,storage stack ? 在用户态,可...

50713
来自专栏编程

7个来保护服务器的安全对策

设置基础架构时,启动和运行应用程序通常是您最关心的问题。但是,使您的应用程序正常运行而不解决基础架构的安全需求可能会导致灾难性的后果。

2620
来自专栏北京马哥教育

Linux运维工程师必备的80个监控工具全集(上)

随着互联网行业的不断发展,各种监控工具多得不可胜数。这里列出网上最全的监控工具。让你可以拥有超过80种方式来管理你的机器。 在本文中,我们主要包括以下方面: 命...

2896
来自专栏晓晨的专栏

IdentityServer4 实战文档

1022
来自专栏大魏分享(微信公众号:david-share)

微服务架构模式解析 | 大魏学微服务系列第一篇

微服务架构( Microservice Architecture MSA)环境的定义特征是:模块化服务是单独部署的、每个模块化服务可以独立于其他服务,或同一服务...

873
来自专栏EAWorld

微服务系统之认证管理详解

微服务大行其道,微服务安全也是非常热门的话题。本文向大家分享微服务系统中认证管理相关技术。其中包括用户认证、网关和 API 认证、系统间和系统内的认证,以及我们...

631
来自专栏逸鹏说道

分布式小文件系统fastdfs与weedfs的对比

小编小文件存储用的一直是Mongodb,Tair和FastDFS风评一直很不错,最近1年Net界用的比较多的基本上都是FastDFS或者Mongodb(分布式图...

4397

扫描关注云+社区