zoukankan      html  css  js  c++  java
  • APP测试内容 -- 流量测试常见测试方法

    大部分摘自:https://blog.csdn.net/baidu_21833433/article/details/63255182#commentBox

    一、Android自带统计功能(统计流量总数值)

      proc/uid_stat/{UID}/tcp_snd和tcp_rcv

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

      tcp_snd:表示发送数据累计大小,单位是字节(上行或上传)

      tcp_rcv:表示接收到的数据累计大小(下行或下载)。

      

    具体步骤:

      (1)安装被测APP到测试机,不启动APP。

      (2)通过包名获取app的PID,再访问/proc/{PID}/status文件查找app对应的UID;或者,使用adb连接到测试机,cat /data/system/packages.list | grep com.yftest.apk ---com.yftest.apk为包名,可以查看出该包的UID以及安装位置等

      (3)通过UID号加上100000号查看接收和发送的流量文件;或者,使用命令查看当前下行(下载)流量情况,cat /proc/uid_stat/UID号/tcp_rcv

      (4)启动APP到APP彻底启动,cat /proc/uid_stat/UID号/tcp_rcv

      (5)tcp_rcv代表下行流量,把tcp_rcv换为tcp_snd可以查看上行流量,cat /proc/uid_stat/UID号/tcp_snd

    该方法优势:简单,容易使用,容易测出对应场景下上下行流量,容易封装为脚本

         劣势:协议限制性,无法进行具体的剖析

    二、Wireshark+tcpdump抓包分析

    首先使用adb发送tcpdump文件到设备,如

    adb push d: cpdump /data/local/tmp

    tcpdump常见参数:

    -i指定网卡(interface),any表示无限网卡;

    -c指定接收的packets数量,接收完成后自动停止抓包;

    -w xxx:抓取到的包存放路径及存放格式。

    -s(--snapshot-length)指定在每个packet中最多截取的字节数,设置为0时表示截取上限取默认值262144,默认抓包抓取长度是68字节,加上-s 0可以抓到完整的数据包;

    -v/-vv/-vvv,指定输出的详细程度,针对流量测试,我们不需要非常详尽的输出数据,-v就可以了,抓包过程中显示抓包的数量

     su-c /data/local/tmp/tcpdump -v -i any -s 0 –c 3000 -w /sdcard/us.pcap

    使用上方命令就会调用指定位置的tcpdump把抓包的数据保存到制定文件中

    然后使用adb发送文件到PC本机

    adb pull /sdcard/us.pcap D:/

    使用wireshark打开抓取的pcap文件

    使用过滤器过滤需要显示的内容如:

    ip.addr == 192.168.10.101

    显示源或者目标IP为192.168.10.101的相关信息。

    可以按照时间顺序查看具体的网络通讯情况

    包括源IP、目标IP、协议、长度、信息

    可以根据此进行具体情况进行细节的分析。点击统计---》捕获文件属性

     使用“已显示”下分组的数据*平均分组大小/1024即可计算出被过滤的数据的数据大小。

    如上图就是

    260*503.5/1024=127.84

     

    优势:可以更深层次的判断具体的网络交互情况以定位网络问题。

    劣势:成本较高,耗时较久,且不容易和场景事物或者操作结合。

     当存在流量问题或者怀疑出现流量问题后使用tcpdump结合wireshark进行具体剖析 

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

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

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

  • 相关阅读:
    不会全排列算法(Javascript实现),我教你呀!
    驰骋页面,谁主沉浮-也谈清除浮动
    你不知道的parseInt
    Javascript函数重载,存在呢—还是存在呢?
    在这个看脸的世界,该如何优雅的创建JS对象
    Python 函数的使用小结
    Python 集合(set)的使用总结
    Python 文件操作
    python 中字典的操作(增、删、改、查)
    python 中list的操作(循环、切片、增、删、改、查、反转、排序)
  • 原文地址:https://www.cnblogs.com/hhnw/p/10321403.html
Copyright © 2011-2022 走看看