Tcpreplay讓協議測試從此無憂

2021-07-24 15:53:56 字數 2604 閱讀 9953

我是一枚在軟體測試行業泡了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

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

如以1000pps的速度重放10次coss_mqorclhttp.pcap資料報,命令如下:

tcpreplay應用

1、功能測試

我們只需搭建一次應用環境,根據測試用例分別抓包儲存為.pcap檔案,後續均通tcpreplay重放測試即可。即提高工作效率,又保證穩定可控的入參,能更準確驗證解析結果。

2、bug重現

程式出現bug,開發人員的反應,怎麼可能?無法復現!此時只要你夠機靈,能夠在出現bug的時候將資料報儲存下來,tcpreplay隨時幫你重現。

3、效能測試

在效能測試方面,只要控制好--pps引數即可,通過不斷加大--pps引數值來對系統進行加壓,在這個過程中,同時通過iftop記錄埠流量,就可輕鬆提供協議資料解析效能。

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年,但依然還是菜鳥,希望能在測試運維中得到更好的學習和發展。任職廣通旗下網際網路運維品牌:優雲軟體

測試 http協議

什麼是 分為 白帽子 黑帽 常規 保密協議 針對性目標測試 指定範圍測試 非常規 apt 紅藍對抗 流程 如下圖 測試流程 非常規流程圖 http基礎 http書 什麼是http http即超文字傳輸協議,是一種詳細規定了瀏覽器和全球資訊網伺服器之間互相通訊的規則,它是全球資訊網交換資訊的基礎。19...

HTTP協議 從URI開始

原文連線 blog uri,既是統一資源識別符號號,每個 web 伺服器都有乙個 uri 識別符號,它在世界範圍內唯一標識並定位資訊資源。它具有兩種形式,urn 統一資源名 url 統一資源定位符 urn 統一資源名 是作為特定內容的唯一名稱使用的,與目前資源所在地無關。使用這些與位置無關的 urn...

loadrunner測試協議選擇

b s 系統 選擇 web http html c s 系統 根據 c s 結構所用到的後台資料庫來選擇不同的協議,如果後台資料庫是 sybase,則採用 sybasectlib 協議,如果是 sql server,則使用 ms sql server 的協議,至 於 oracle 資料庫系統,當然就...