软件测试里面关于网络抓包的学习笔记&思考

打工人tips:

对于网络摄像机的而言,除了设备本身的网络通信以外,还要对接对应运营商的手机app端和web端。
前段时间对于设备的主板进行过tcp的抓包,是在应用层,利用tcpdump和iperf3进行丢包率和网络吞吐量的测试,再加上wireshark可以具体查看包的内容。除此之外设备也有对应的app和web端。最近拿到了web端的账号,在web端用的http协议也可以用fidder进行抓包。

网络测试理论

(参考来自:https://blog.csdn.net/weixin_42717928/article/details/107236014?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%BD%91%E7%BB%9C%E6%B5%8B%E8%AF%95&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-107236014.nonecase&spm=1018.2226.3001.4187 )
衡量网络好坏的标准

  1. 带宽:单位时间内传输的数据量,单位通常是:每秒比特数:bps。带宽反映了网络的传输能力。1M带宽即指1Mbps=1000Kbps=1000/8KBps=125KBps
  2. 丢包::数据丢包个数=发送的数据包数-接收的数据包数。丢包反映了网络可靠性,越小越好。
  3. 时延:数据包从发送开始到接收到该数据,所耗费的时间,单位通常是ms(毫秒)。时延反映了网络的速度。
  4. 抖动:指时延的变化,即两个数据包时延的差值。抖动反映了网络的稳定性
  5. 乱序:指接收到的数据包顺序和发送顺序不一致的次数。乱序反映了网络的稳定性,越小越好(以丢包为准,这一条经常可以忽略)
  6. 更多术语:
    a.上下行
    上行带宽即上行速率:本地信息上传到网络的速率。
    下行带宽即下行速率:网络信息下载到本地的速率。

上行速率不等于下行速率,在大多数情况下,下行带宽与上行带宽的比率可以达到10:1。用户习惯下载,浏览视频等,下行宽带使用较多,而上行使用较少(上传数据),为了上行资源不浪费,所以这样加以限制

b.上/下行丢包率

有时候打开网页特别慢,造成这种原因一是网站服务器问题,这个我们无能为力;二是我们自身网络问题,可能是线路、路由器、ADSL等问题,可以通过查看网络是否存在数据丢包或者网络延迟现象分析。

数据在网络上是以数据包为单位传输的,每包nK,由于种种原因,不可能百分百完成,碰到这种情况,网络会自动让双方的电脑根据协议来补包。如果你的线路好,速度快,包的损失会非常小,补包工作也容易完成,因此可以近似的将你的数据看做是无损传输。但是,如果你的线路较差,数据的损失量就会非常大,补包工作也不可能百分之百完成。在这种情况下,数据的传输就会出现空洞,造成丢包。

丢包率:1 - (指单位时间内接受到的数据包数 / 发送的总数据包数)
如果出现请求超时这种,说明丢包了

1、如果PING外网掉包,而内网网关不掉。应该是局域网路由器有问题,就要检查本地路由器。

2、如果内外网都掉包,就检查自己系统。如TCP/IP设置、网卡有没有禁用等,自己系统没问题,然后再检查局域网线路、路由器、ADSL(ADSL技术采用频分复用技术把普通的电话线分成了电话、上行和下行三个相对独立的信道,从而避免了相互之间的干扰)。

c.上/下行延迟(ms)

是由于网络在数据包发送和接受过程中,存在较大的网络延迟造成的。消息传送了很久仍没有得到响应。ping中时间就是延迟的大小(时间=32ms),越小越好

参考:
1-30ms:极快,几乎察觉不出有延迟
31-50ms:良好,没有明显的延迟情况
51-100ms:普通,能感觉出网络有明显延迟,稍有停顿
大于100ms:差,有卡顿,丢包并掉线现象

d.DNS延迟(ms)
DNS是域名解析服务器,延迟就是你和这个服务器的连接速度, DNS的作用就是把网址解析成IP地址,因为电脑网络连接只能通过IP连接。

弱网测试

网络条件复杂(WiFi,2/3/4/5G);而且目前三大运营商(移动、电信、联通),所提供的网络制式不太相同;而且用户使用场景(地铁,郊外,室内)也不一样。

所以对客户端的要求比较高,如果不做任何处理的话很可能会崩溃闪退,所以需要做容错处理(异常机制,缓存处理,重连机制,超时机制)

  • 异常机制:网络异常,没有正常收到服务端数据,需要进行容错处理,不然可能出现奔溃、闪退。
    (容错处理:指软件运行时,能对由非正常因素引起的运行错误给出适当的处理或信息提示,使软件运行正常结束。)

  • 超时机制:网络加载要时间,在加载过程中如果你看到菊花或者进度条,起码还有个期盼,比空白页面好多了,但是服务端一直没返回,时间过长用户的耐心也会消磨殆尽。一般用户所能忍受的最佳响应时间是2s,一般情况下超时时间设置为5s,不过这不是一定的,在2G下,5s就太短了(网络慢都还没加载好),但是在4G情况下,5s就相对长了点(网络快),具体根据网络制式来设置超时时间。

  • 重连机制:游戏中常见

  • 缓存机制:新闻app,页面显示是之前加载过的内容就可以继续浏览

Fiddler抓包原理:

Fiddler是位于客户端和服务器端之间的的HTTP代理, 也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。
它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大。

Fiddler的使用:
首先下载好后,根据提示对https进行授权。修改浏览器对应的代理地址还有端口号。如果是app客户端就要进行相关的授权和信任证书下载。
在chorme浏览器下面的代理配置在这里插入图片描述
我只有ios端系统的设备,要在用户端进行一个配置,大概的步骤就是先用pc去ping手机的ip地址(在设置-无线局域网-连接的wifi的右边的小标志可以看得到)可以ping通,就在页面下面设置HTTP代理,手动改输入我们fiddler的ip地址和端口号。在手机浏览器中输入这个ip+端口号,下载FiddlerRoot certification,在vpn与设备管理里面选择安装,再在关于本机里面选择信任证书,就可以抓到包了
(具体教程地址 : https://www.jianshu.com/p/d8619887805b)

Fiddler的数据包分析
在这里插入图片描述

左边一栏是session,记录了抓到的每条http请求,包括了url,协议,状态码,body等信息。最前面的小标志代表了不同的数据类型。
其中host字段经常会有多个子域名的响应,说明在大型网站的架构中,大多需要多个子域名,这些子域名可能是单独用于缓存静态资源的,也可能是专门负责媒体资源的,或者是专门负责数据统计的(如pingback)。
在这里插入图片描述

在这里插入图片描述

右边是详细的数据统计和展示,针对每条http请求的具体统计和数据包分析。
inspector
下面有headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息。
当点击一个具体的session时候,上面是http request header 下面是http response header。对于请求和响应的内容,还可以选择不同的格式查看。JPG 格式使用 ImageView 就可以看到图片,HTML/JS/CSS 使用 TextView 可以看到响应的内容。Raw标签可以查看原始的符合HTTP标准的请求和响应头。Auth则可以查看授权Proxy-Authorization 和 Authorization的相关信息。Cookies标签可以看到请求的cookie和响应的set-cookie头信息。
在这里插入图片描述
composer
composer面板下,则可以模拟向服务器发送数据的过程,跳过一切前端的限制,直接给服务器发请求并得到回应。从而达到一些特殊的测试目的。
在这里插入图片描述
也可以粘贴一次请求的raw http headers,直接excute,达到模拟请求的目的!

Filter
Filter标签则可以设置Fiddler的过滤规则,来达到过滤http请求的目的。
过滤内网http请求而只抓取Internet的http请求,或则过滤相应域名的http请求。也可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求
在这里插入图片描述
AutoResponder
Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。当勾选allow autoresponser 并设置相应的规则后在进行访问

breakpoint
HTTP断点调试

  1. 修改HTTP请求头信息。例如修改请求头的UA, Cookie, Referer 信息,通过“伪造”相应信息达到达到相应的目的(调试,模拟用户真实请求等)。

  2. 构造请求数据,突破表单的限制,随意提交数据。避免页面js和表单限制影响相关调试。(前端和服务器端可以各自模拟响应和工作,提高开发效率)

  3. 拦截响应数据,修改响应实体。

有两种方法设置断点

1.Fiddler菜单栏->rules->automatic Breakpoints->选择断点方式,这种方式下设定的断点会对之后的所有HTTP请求有效。
有两个断点位置:
a. before response。也就是发送请求之后,但是Fiddler代理中转之前,这时可以修改请求的数据。
b.after response。也就是服务器响应之后,但是在Fiddler将响应中转给客户端之前。这时可以修改响应的结果。

2.命令行下输入。Bpafter xxx或者bpv,bpu,bpm等设置断点。这种断点只针对特定类型的请求。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值