推薦幾款常用的性能測試工具

你好,我是劉超,金山軟件西山居技術經理,《Java性能調優實戰》專欄作者。

很多同學在專欄裏給我留言,想讓我講講工具,所以我的第一篇加餐就光速來了~熟練掌握一款性能測試工具,是我們必備的一項技能。他不僅可以幫助我們模擬測試場景(包括併發、複雜的組合場景),還能將測試結果轉化成數據或圖形,幫助我們更直觀地瞭解系統性能。

常用的性能測試工具

常用的性能測試工具有很多,在這裏我將列舉幾個比較實用的。對於開發人員來說,首選是一些開源免費的性能(壓力)測試軟件,例如ab(ApacheBench)、JMeter等;對於專業的測試團隊來說,付費版的LoadRunner是首選。當然,也有很多公司是自行開發了一套量身定做的性能測試軟件,優點是定製化強,缺點則是通用性差。

接下來,我會爲你重點介紹ab和JMeter兩款測試工具的特點以及常規的使用方法。

ab

ab測試工具是Apache提供的一款測試工具,具有簡單易上手的特點,在測試Web服務時非常實用。

ab可以在Windows系統中使用,也可以在Linux系統中使用。這裏我說下在Linux系統中的安裝方法,非常簡單,只需要在Linux系統中輸入yum-y install httpd-tools命令,就可以了。

安裝成功後,輸入ab命令,可以看到以下提示:


ab工具用來測試post get接口請求非常便捷,可以通過參數指定請求數、併發數、請求參數等。

例如,一個測試併發用戶數爲10、請求數量爲100的的post請求輸入如下:

ab -n 100  -c 10 -p 'post.txt' -T 'application/x-www-form-urlencoded' 'http://test.api.com/test/register'

post.txt爲存放post參數的文檔,存儲格式如下:

usernanme=test&password=test&sex=1

附上幾個常用參數的含義:

  • -n:總請求次數(最小默認爲1);
  • -c:併發次數(最小默認爲1且不能大於總請求次數,例如:10個請求,10個併發,實際就是1人請求1次);
  • -p:post參數文檔路徑(-p和-T參數要配合使用);
  • -T:header頭內容類型(此處切記是大寫英文字母T)。

當我們測試一個get請求接口時,可以直接在鏈接的後面帶上請求的參數:

ab -c 10 -n 100 http://www.test.api.com/test/login?userName=test&password=test

輸出結果如下:

以上輸出中,有幾項性能指標可以提供給我們參考使用:

  • Requests per second:吞吐率,指某個併發用戶數下單位時間內處理的請求數;
  • Time per request:上面的是用戶平均請求等待時間,指處理完成所有請求數所花費的時間/(總請求數/併發用戶數);
  • Time per request:下面的是服務器平均請求處理時間,指處理完成所有請求數所花費的時間/總請求數;
  • Percentage of the requests served within a certain time:每秒請求時間分佈情況,指在整個請求中,每個請求的時間長度的分佈情況,例如有50%的請求響應在8ms內,66%的請求響應在10ms內,說明有16%的請求在8ms~10ms之間。

JMeter

JMeter是Apache提供的一款功能性比較全的性能測試工具,同樣可以在Windows和Linux環境下安裝使用。

JMeter在Windows環境下使用了圖形界面,可以通過圖形界面來編寫測試用例,具有易學和易操作的特點。

JMeter不僅可以實現簡單的併發性能測試,還可以實現複雜的宏基準測試。我們可以通過錄制腳本的方式,在JMeter實現整個業務流程的測試。JMeter也支持通過csv文件導入參數變量,實現用多樣化的參數測試系統性能。

Windows下的JMeter安裝非常簡單,在官網下載安裝包,解壓後即可使用。如果你需要打開圖形化界面,那就進入到bin目錄下,找到jmeter.bat文件,雙擊運行該文件就可以了。

JMeter的功能非常全面,我在這裏簡單介紹下如何錄製測試腳本,並使用JMeter測試業務的性能。

錄製JMeter腳本的方法有很多,一種是使用Jmeter自身的代理錄製,另一種是使用Badboy這款軟件錄製,還有一種是我下面要講的,通過安裝瀏覽器插件的方式實現腳本的錄製,這種方式非常簡單,不用做任何設置。

首先我們安裝一個錄製測試腳本的插件,叫做BlazeMeter插件。你可以在Chrome應用商店中找到它,然後點擊安裝, 如圖所示:

圖片

然後使用谷歌賬號登錄這款插件,如果不登錄,我們將無法生成JMeter文件,安裝以及登錄成功後的界面如下圖所示:



最後點擊開始,就可以錄製腳本了。錄製成功後,點擊保存爲JMX文件,我們就可以通過JMeter打開這個文件,看到錄製的腳本了,如下圖所示:

這個時候,我們還需要創建一個查看結果樹,用來可視化查看運行的性能結果集合:

設置好結果樹之後,我們可以對線程組的併發用戶數以及循環調用次數進行設置:

設置成功之後,點擊運行,我們可以看到運行的結果:

JMeter的測試結果與ab的測試結果的指標參數差不多,這裏我就不再重複講解了。

LoadRunner

LoadRunner是一款商業版的測試工具,並且License的售價不低。

作爲一款專業的性能測試工具,LoadRunner在性能壓測時,表現得非常穩定和高效。相比JMeter,LoadRunner可以模擬出不同的內網IP地址,通過分配不同的IP地址給測試的用戶,模擬真實環境下的用戶。這裏我就不展開詳述了。

總結

三種常用的性能測試工具就介紹完了,最後我把今天的主要內容爲你總結了一張圖。

現在測試工具非常多,包括阿里雲的PTS測試工具也很好用,但每款測試工具其實都有自己的優缺點。個人建議,還是在熟練掌握其中一款測試工具的前提下,再去探索其他測試工具的使用方法會更好。

今天的加餐到這裏就結束了,如果你有其他疑問或者更多想要了解的內容,歡迎你來《Java性能調優實戰》留言告訴我。

在這個專欄裏,我把Java 性能調優分成 5 個層級:Java 編程、多線程、JVM 性能檢測、設計模式、數據庫性能,每個層級下都覆蓋了最常見的優化問題。我會從實戰出發,精選高頻性能問題,透過 Java 底層源碼,提煉出優化思路和它背後的實現原理,最後形成一套“學完就能用的調優方法論”。

Java性能調優也是很多一線大廠對於高級工程師的要求,希望通過這個專欄幫助你快速進階,早日實現升職加薪!

戳此免費試看《Java性能調優實戰》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章