我是一枚在软件测试行业泡了7年的妹纸,想分享点自己的一些心得体会。在我刚接触协议测试那会,相当迷茫。过程中一系列的问题便不约而至,例如:

·如何明确入参出参?

·如何掌控流量?

·如何重现bug?

·如何模拟使用不常见协议的流量?

·如何模拟大数据量,进行性能和稳定性测试?

这么多问题,通过手工显然无法实现,一定要利用好工具,实现自动化测试。无疑对我这样一个菜鸟来说,是一个全新的挑战。

谈到网络协议,我们自然而然会想到Wireshark、tcpdump等抓包工具,而tcpreplay即是为它们而生。有了tcpreplay,如获至宝,几乎每一次执行测试,都少不了它的身影。

今天,给大家分享下测试过程中tcpreplay的一些应用。

Tcpreplay,顾名思义,重放tcp的报文,是一种功能强大,操作简单的自动化测试工具。它可以将用Wireshark、tcpdump工具抓下来的包原样或经过任意修改后重放回去,还原网络的实际运行状态。

Tcpreplay安装

说到tcpreplay安装超级简单,直接yum安装即可,如果yum未添加epel源,执行

1.# yum install epel-release

2.然后再执行安装

3.# yum install tcpreplay

Tcpreplay使用

1.通过执行

2.# tcpreplay -h

3.Tcpreplay的参数很多,可根据不同的测试场景进行设置。

基本用到的几个必要参数

1.指定发送端口:--intf1、--intf2

2.设置发送次数:--loop(当--loop=0,即持续循环播放)

3.控制发送速度:--pps、--topspeed

如以1000pps的速度重放10次coss_mqorclhttp.pcap数据包,命令如下:

Tcpreplay应用

1、功能测试

我们只需搭建一次应用环境,根据测试用例分别抓包保存为.pcap文件,后续均通tcpreplay重放测试即可。即提高工作效率,又保证稳定可控的入参,能更准确验证解析结果。

2、bug重现

程序出现bug,开发人员的反应,怎么可能?无法复现!此时只要你够机灵,能够在出现bug的时候将数据包保存下来,tcpreplay随时帮你重现。

3、性能测试

在性能测试方面,只要控制好--pps参数即可,通过不断加大--pps参数值来对系统进行加压,在这个过程中,同时通过iftop记录端口流量,就可轻松提供协议数据解析性能。

然~~稳定性测试,只需将--loop参数设置为0,持续循环播放,完全实现自动化,我们只需观察系统运行日志即可。

4、改写数据包

关于数据包,往往我们保存下来的样例包,数据相对单一,为了更真实地模拟生产环境数据,需要将数据包进行改写,那么要引入tcprewrite。

tcprewrite就是改写pcap包里的报文头部,包括2层, 3层, 4层, 5-7层。从3.0版本以后,所有改写pcap报文头的操作都从tcpreplay中移到了tcprewrite里了。

以较常用的改写IP地址为例,以下命令表示将intest.pcap数据包IP为100.123.67.20改写成192.168.0.10,并输出保存为outtest.pcap。

接下来就是测试场景环节,如对于intest.pcap数据包,需要模拟100个不同ip地址。由于tcprewrite每次执行只改写一次便保存一个pcap文件,为了我们重放时方便,我们可以将改写好的每个文件通过mergecap命令合并到一个文件中,实现脚本如下:

在执行完成以上脚本,结果输出一个pcap文件,通过tcpreplay重放即可。Tcpreplay工具的应用,始终就一行命令,简单易用,让协议测试从此无忧!

只想做一场最认真 / 有温度的技术分享

作者自我评价:杨琦,虽在软件测试行业泡了7年,但依然还是菜鸟,希望能在测试运维中得到更好的学习和发展。任职广通旗下互联网运维品牌:优云软件

Tcpreplay让协议测试从此无忧相关推荐

  1. 基于Virtex-6 FPGA的三种串行通信协议测试及对比

    在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线.业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC ...

  2. 软件网络协议测试,网络协议测试方法是什么

    在计算机网络的发展历程中,协议一直处于核心地位.从ARPAnet发展到Internet,其关键环节就是形成了国际标准化的协议.协议是计算机网络和分布式系统中各种通信实体之间相互交换信息所必须遵守的一组 ...

  3. 计算机网络在线测试第二章,进行测验:-第2章-网络体系结构与网络协议测试.doc...

    进行测验:-第2章-网络体系结构与网络协议测试.doc 142计算机网络 142-301214-J01062-1 作业 进行测验 第2章 网络体系结构与网络协议测试进行测验 第2章 网络体系结构与网络 ...

  4. 实体属性变更历史记录框架(三)-变更历史记录从此无忧

    实体属性变更历史记录框架(一)-变更历史记录从此无忧(http://blog.csdn.net/lk_blog/article/details/8007777) 实体属性变更历史记录框架(二)-变更历 ...

  5. 实体属性变更历史记录框架(一)-变更历史记录从此无忧

    在实际mis项目中增删改查必不可少,针对"改"的操作,重要的项目中都要有变更历史记录.本实例提供了一个实体属性变更历史记录工具类,只要写很少的代码就能实现强大的变更历史记录功能.本 ...

  6. 如何进行隐私协议测试

    我在煮一锅非常完美的米饭,但是中间出于好奇的原因,把盖子打开了,中间热气和香气散发出来的那几秒钟,我感觉我的这锅米饭失去了灵魂.就这样我错失了一锅完美的米饭.rice!!! 虽然我认为隐私协议测试本质 ...

  7. 计算机网络协议测试技术分析

    摘要:介绍了协议 测试技术以及相关标准进展情况,着重介绍了协议一致性测试和互操作性测试,分析了二者的差异,明确了它们之间的关系.便于进一步理解协议测试技术. 关键词:协议测试:互操作性测试:计算机网 ...

  8. 网络游戏协议测试(接口测试)的一些总结

    原文由碧晓寒枫发表于TesterHome社区,点击原文链接可与作者直接交流. 什么是游戏协议? 协议是网络游戏前后端交互的实现方式. 游戏中协议的收发过程是怎样的? 当我们在进行游戏的时候,我们点击了 ...

  9. C++:实现量化如何建立一个期限结构,并为一个简单的FRA远期利率协议测试实例

    C++:实现量化如何建立一个期限结构,并为一个简单的FRA远期利率协议测试实例 #include <ql/qldefines.hpp> #if !defined(BOOST_ALL_NO_ ...

最新文章

  1. Makefile中指示符“include”、“-include”和“sinclude”的区别
  2. 【ccf-csp201512-5】矩阵
  3. LeetCode OJ:Valid Anagram(有效字谜问题)
  4. MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe“ 已退出 返回代码为1
  5. Qt Creator设置Nimble
  6. Install stardict on Ubuntu
  7. 2019年总结【跨越今天,更不平凡】
  8. python2处理耗时任务_RabbitMQ Go客户端教程2——任务队列/工作队列
  9. Linux Shell脚本专栏_一键查看服务器的利用率_04
  10. ideatomcat老是运行以前的项目_日“吞”150吨垃圾,禅城集中式餐厨垃圾处理项目启用...
  11. php 操作文件夹 (遍历 计算大小)
  12. 机器学习笔记(二)---- 线性回归
  13. mysql 多行唯一_mysql – 具有唯一约束的原子多行更新
  14. Eclipse Debug不能热部署解决
  15. python中range和arange的区别_Python——range()、xrange()和np.arange()应用说明
  16. 【渝粤题库】陕西师范大学200561 英语写作(一) 作业
  17. MFC功能扩展控件BCGSuite for MFC入门指南
  18. Dockerfile概念简介
  19. groovy简单介绍
  20. ps裁剪和裁切的区别_ps裁剪工具怎么用?调整图像与画布的尺寸(三)

热门文章

  1. 实收资本和注册资本\营业执照和法人营业执照的区别
  2. 介绍两个ios手机测试的辅助工具
  3. app把信息添加到mysql_10) 十分钟学会android--app数据保存三种方式
  4. linux禁止普通用户切换,扣丁学堂Linux培训简述Linux禁止普通用户切换至root用户的实例...
  5. 量化金融干货丨如何使用DolphinDB快速计算K线
  6. 未雨绸缪,迎接运维新时代—— Tech Neo第十六期技术沙龙
  7. 如何在WorkNC建立异形刀和刀具库
  8. 【HACKER KID: 1.0.1靶机】
  9. MPI并行计算PI,并进行n值和并行进程个数影响探讨
  10. 第2章 时间空间复杂度计算