我是一枚在軟體測試行業泡了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 資料庫系統,當然就...