天天看点

优云软件:Tcpreplay让协议测试从此无忧

优云软件:Tcpreplay让协议测试从此无忧

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

·<b>如何明确入参出参?</b>

·<b>如何掌控流量?</b>

·<b>如何重现</b><b>bug</b><b>?</b>

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

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

<b></b>

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

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

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

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

<b>tcpreplay</b><b>安装</b>

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

1.# yum install epel-release

2.然后再执行安装

3.# yum install tcpreplay

<b>tcpreplay</b><b>使用</b>

1.通过执行

2.# tcpreplay -h

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

<a href="http://s3.51cto.com/wyfs02/m00/82/cb/wkiol1dhhiaq0e-caaurwu6r58u553.jpg" target="_blank"></a>

<b>基本用到的几个必要参数</b><b></b>

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

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

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

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

<a href="http://s1.51cto.com/wyfs02/m01/82/cc/wkiom1dhhrsg_me5aagzmdx0w7y776.jpg" target="_blank"></a>

优云软件:Tcpreplay让协议测试从此无忧

<b>tcpreplay</b><b>应用</b><b></b><b></b>

<b>1</b><b>、功能测试</b>

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

<b>2</b><b>、</b><b>bug</b><b>重现</b>

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

<b>3</b><b>、性能测试</b><b></b>

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

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

<b>4</b><b>、改写数据包</b>

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

<a href="http://s4.51cto.com/wyfs02/m01/82/cb/wkiol1dhhiftpczuaabss9rleps526.jpg" target="_blank"></a>

优云软件:Tcpreplay让协议测试从此无忧

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

<a href="http://s4.51cto.com/wyfs02/m02/82/cc/wkiom1dhhrxw-eveaakeb0emoe0619.jpg" target="_blank"></a>

优云软件:Tcpreplay让协议测试从此无忧

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

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