天天看點

優雲軟體: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>