Tcpreplay让协议测试从此无忧

wKiom1dhHRGQ3hXHAAPYLfHGM1c573.jpg

 

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

 

        如何明确入参出参?

        如何掌控流量?

        如何重现bug

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

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

 

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

 

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

 

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

 

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

 

Tcpreplay安装

 

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

1.   # yum install epel-release

2.   然后再执行安装

3.   # yum install tcpreplay             

 

Tcpreplay使用

1.   通过执行

2.   # tcpreplay -h

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

 wKioL1dhHiaQ0E-cAAURwu6r58U553.jpg

 

基本用到的几个必要参数
 

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

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

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

 

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

wKiom1dhHRSg_me5AAGzmDx0W7Y776.jpg

Tcpreplay应用
 

1、功能测试

 

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

 

2bug重现

 

程序出现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数据包IP100.123.67.20改写成192.168.0.10,并输出保存为outtest.pcap

 

wKioL1dhHifTPCZuAABSS9rlePs526.jpg

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

 

wKiom1dhHRXw-EVEAAKeB0emoE0619.jpg

 

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

 

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

 

作者自我评价杨琦,虽在软件测试行业泡了7年,但依然还是菜鸟,希望能在测试运维中得到更好的学习和发展。任职广通旗下互联网运维品牌:优云软件(全栈运维解决方案服务商https://uyun.cn)

转载于:https://my.oschina.net/uyunsoft/blog/697191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值