• 0
  • 1
分享
  • 快速锁定Bug!掌握抓包技术,提升测试效率——软件测试圈
  • 曼倩诙谐 2024-06-11 13:34:43 字数 2924 阅读 536 收藏 1

  前言

  相信做了测试一段时间的小伙伴都会开始意识到抓包对于测试的重要性,它涉及到功能测试、性能测试、自动化测试、安全测试和数据库测试等等。可以说我们要想做好测试就必须和抓包打交道,脱离抓包的测试是不合格的。人们都说黑客利用Wireshark等抓包工具监视别人,但是你同时会发现,监视也是测试的重要组成部分。你会通过监视来判断pass或是fail,你会通过监视来定位bug,你会通过监视来分析性能测试的结果……

  1、什么是抓包

   我们一般所指的“监视”,其实有个专业名称——抓包。抓包是指在计算机网络中,通过使用抓包工具截获(捕获)和分析网络数据包的过程。网络数据包是在计算机网络上传输的基本单元,它包含了通信中的信息、源地址、目标地址、接口信息、传输协议类型等重要信息。

  2、抓包有什么作用

  抓包在计算机网络和软件开发领域中有多种用途,其主要功能包括:

  1)网络调试和故障排查:抓包是网络调试和故障排查的关键工具。通过捕获和分析网络数据包,可以识别网络通信中的错误、异常和延迟。这有助于开发人员和网络管理员快速定位和解决问题,确保系统正常运行。

  2)性能优化:通过监视和分析网络流量,可以评估应用程序的性能,并找出导致性能瓶颈的原因。这有助于优化网络通信,提高应用程序的响应速度和效率。

  3)用户行为分析:对于网络应用程序,抓包可用于分析用户的操作行为,了解他们与应用程序之间的交互。这对于优化用户体验和改进应用设计非常有帮助。

  4)安全审计:抓包用于监控网络流量,检测潜在的安全威胁和异常行为。安全专业人员可以通过抓包来分析攻击、异常流量和潜在的漏洞,以提高系统的安全性。

  5)协议分析:抓包工具能够解析和分析各种网络协议,帮助理解应用程序的通信机制。这对于开发人员理解系统的工作原理、确保协议遵循和检测潜在问题非常有价值。

  6)网络性能评估:抓包工具可以用于评估网络的整体性能,包括检查带宽利用率、网络拓扑结构等,从而更好地了解网络的运行状况。

  说了这么多那我们测试人员能用到哪些呢,那我进一步总结一下:

  1)当发现测试设备或者网站等表现不符合预期时,抓包是进一步定位问题的最常用方法。比如你在地址栏中输入了某网站的内容,结果却返回502错误,那这个时候你得会通过抓包就可以得到大体的问题原因。

18-1.png

  2)抓包可以对抓取的数据进行分析,并进行伪造,这是功能测试、性能测试和自动化测试中常见的手法。比如,在网站测试中,我们通过抓取到的数据包,然后更改里面的IP地址进行欺骗,看看服务器端作何回应。又比如一般的机顶盒测试,我们可以通过抓取数据包,并用脚本去和电视终端联通。

18-2.png

  3)通过抓包我们可以判断Bug是归前端还是归后台,特别是开发在前后端分离后,测试对于Bug的前后端指派需要更精准,这就要求我们能够通过抓包分析Bug的前后端归属,那么可以通过抓包工具,确实是数据传递问题还是前端显示的问题。如果抓出来的数据就有问题的话,那么一般是后端的问题;如果抓出来的数据是正确的,那么基本上可以断定是前端显示的问题。

18-3.png

  3、分层去抓包

  我们都知道,数据在发送的过程中是层层封装一个头部的,最终通过物理接口发送出去,而数据的接收过程则刚好反过来,所以我们根据这个特点可以在抓包中有舍有得,就是需要哪一层的数据,就去协议栈把哪一层的数据捞出来,这个捞的过程就得靠我们的抓包工具了。(友情推荐几款:Wireshark、Fiddler、tcpdump、tcpflow、Ethereal、Charles,我用Fiddler较多。)这种分层抓包对于我们过滤且快速抓取有用信息是十分有益的,如果你想要抓取应用层的数据却要去底层捞数据那么还得一层层解封装,甚至可能还得解密,这就费时费力太低效了。

18-4.png

  PS:这里将我常用的两款软件补充说明一下,Fiddler只能抓取http和https协议,而Wireshark就较为强大了,我们常见的协议都是支持的,只是Wireshark无法解析https协议。

18-5.png

  我们可以在右边Inspectors中查看信息。

18-6.png

  上图中的Protocal一栏对应了各个协议层的请求和响应,可以根据自己需要查看相应协议层的信息!知道为啥黑科钟情于Wireshark了吧,它实在太强大了!所以需要哪款软件还得根据自己需求来。

  4、有哪些抓包的方式

  抓包的方式主要分为两种:主动抓包和被动抓包。下面对这两种方式进行详细说明:

  4.1)主动抓包:

  使用抓包工具:这是最常见的主动抓包方式。通过使用专门的抓包工具,用户可以选择在何时、何地、以及对哪些数据包进行抓包。用户需要手动启动抓包工具,并根据需要设置过滤条件,以便只捕获感兴趣的数据包。

  命令行工具:一些命令行工具如 tcpdump 可以通过在终端中运行命令来主动捕获网络数据包。用户可以使用命令行参数指定捕获条件,例如捕获特定端口或协议的数据包。

18-7.png

  4.2)被动抓包:

  网络设备抓包:网络设备(如路由器、交换机、防火墙等)通常具有抓包功能。管理员可以配置这些设备以在网络流经设备时自动抓取数据包。这对于监控整个网络流量、进行安全审计等很有用。

  代理服务器:在某些情况下,代理服务器可以用于被动抓包。代理服务器充当客户端和服务器之间的中介,可以捕获通过它的数据流量。工具如 Fiddler 就是基于代理服务器的抓包工具。

18-8.png

  4.3)混合方式:

  有时,可以通过在网络中插入设备或利用网络中的镜像端口(SPAN或RSPAN)来实现混合方式的抓包。这样的方式既能被动地监控整个网络流量,又能主动选择关注的部分。

  5、实战

  以上对抓包的原理和作用进行了一些介绍,那么肯定很多小伙伴还意犹未尽,你们肯定想看看某款抓包工具具体怎么抓包的,那就满足一下你们,是骡子是马拉出来遛遛,接下来我就以fiddler来进行一次实际演练。

  我们就以篡改百度访问请求为跳转淘宝网为例吧。

  5.1)先设置全局断点:单击菜单栏中的 Rules -- Automatic Breakpoint -- Before Requests,会拦截全部请求报文。

18-9.png

  5.2)然后对请求的网址进行过滤

18-10.png

  5.3)然后我们去浏览器中输入百度的网址www.baidu.com并按下回车,浏览器会一直转圈等待响应,同时电脑任务栏fiddler图标会闪烁。

18-11.png

18-12.png

  5.4)然后我们去fiddler里面找到对应的请求,转到Inspectors页如下所示,像图中那样双击百度网址。

18-13.png

  5.5)然后改成如下的淘宝网址并点击save

18-14.png

  5.6)接下来点击图中绿色按钮放行该请求

18-15.png

  5.7)会发现刚才转圈的请求状态会立马跳转到淘宝网,这里某些聪明的娃肯定联想到了什么,嘿嘿,稍微懂点网络安全的都知道黑客篡改跳转页面吧,这就是原理啦!

18-16.png

  总结

  今天对抓包进行了原理和实战的一些讲解,希望能够助力大伙在往后的测试工作中更加深入的分析和定位Bug,有机会的话我还会再出几期解析抓包数据信息的内容!


作者:有房车的直男    

来源:http://www.51testing.com/html/83/n-7801183.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、 规范性能测试实施流程的意义规范的性能测试实施流程能够加强测试工作流程控制,明确性能测试各阶段应完成的工作,指导测试人员正确、有序的开展性能测试工作,提高各角色在性能能测试中的工作效率。本次分享的性能测试实施流程是性能测试开展的” 指导方针”,希望帮助您可以早日成为性能测试” 达人”。二、 性能测试实施流程性能测试流程分为五个阶段,分别是【需求调研阶段】→【测试准备阶段】→【测试执行阶段】→【测试报告阶段】→【测试总结阶段】。每个阶段做什么事情?重点关注什么?1. 需求调研阶段1.1. 阶段概述调研阶段的主要工作为:组建工作小组、项目创建、需求分析、模型构建、定制性能测试详细实施计划。重点...
            0 1 1185
            分享
          •   好多人都觉得测试经理已经不进行实际的测试工作了,是不是只是管管人就行了?  当然不是了,下面我们就来探讨一下测试经理到底每天都在干什么。  需求分析  作为测试经理来讲,必须对需求了解的非常透彻,那么在拿到一个需求或者项目的时候,通过需求分析报告,能准确的提出项目的可行性建议以及可能存在的风险。  避免在项目进行过程中发现了方向性的问题或者无法跨越的鸿沟。  编写测试计划  拿到测试需求后,最主要的工作不是马上就开始测试,而是需要根据提测的功能,合理的分配测试人员,编写可行性的测试计划,以保证项目或者需求能按时的完成。  用例评审  在测试人员根据需求编写完测试用例之后,测试经理应该组织相...
            0 0 1801
            分享
          • 1 引言记得小鱼在上一篇聊到三种高性价比的测试,有的测开的同学就反馈,写的还过得去,希望再多讲一些测开领域资深的内容。好的, 安排~ ~我们今天就来聊一聊,测试模型。我们都知道,项目有项目的模型,那么,测试策略,是否也有模型呢?2 金字塔2.1 金字塔模型 引入金字塔模型,是一种非常重要也很常见的软件测试策略模型,在很多场合被奉为“金科玉律” 。测试金字塔告诉我们,在单元测试,集成测试和端到端测试三个阶段的测试资源投入,应该满足接近7:2:1的关系。在金字塔模型中,软件测试的重心是在开发阶段的单元测试。通过测试左移和质量内建,从源头上保障软件质量,实现预防bug(而非发现bug)的目标。单元测...
            1 0 30555
            分享
          • 基于需求的设计RBT(Requirements-BasedTesting)是基于需求的测试方法,会使测试更加有效,因为它使测试专注于质量问题产生的根源,即需求。基于需求的测试是一种最根本的软件测试,重点关注以下两大关键问题:验证需求是否正确、完整、无二义性,并且逻辑一致;要从“黑盒”的角度,设计出充分并且必要的测试集,以保证设计和代码都能完全符合需求。等价类思想:把输入划分为若干个等价类,从每一个等价类当中选一个测试用例进行测试,如果这个测试用例测试通过,我们就说这个等价类测试通过。有效等价类:根据需求规格,有意义的数据集合。无效等价类:不符合需要所要求的数据集合。边界值针对输入和输出的边界进...
            0 0 1641
            分享
          •   Jmeter作为性能或自动化测试工具在开展工作时,其扮演的角色是模拟用户操作,而后记录响应结果并统计如响应时间、TPS等性能指标,而实现请求访问这个场景就要用到工具中取样器的相关功能。  取样器的主要用来模拟用户操作向服务器发出各位请求,如webservice或Java请求等,然后根据请求获取对应的响应信息,同时配合监听器结果树等验证该接口的响应是否合理。在Jmeter中取样器的种类很多,常见的主要有HTTP请求和JDBC reques两类。  一、HTTP请求  1.首先在测试计划下添加线程组,在线程组中添加取样器<HTTP请求>,如图所示:  2.相关参数设置说明:  名称...
            13 13 2299
            分享
      • 51testing软件测试圈微信