使用 JMeter 進行壓力測試
閱讀文本大概需要3分鐘。
一.前言
壓力測試是每一個Web應用程序上線之前都需要做的一個測試,他可以幫助我們發(fā)現系統中的瓶頸問題,減少發(fā)布到生產環(huán)境后出問題的幾率;預估系統的承載能力,使我們能根據其做出一些應對措施。所以壓力測試是一個非常重要的步驟,下面我?guī)Т蠹襾硎褂靡豢顗毫y試工具JMeter。
二.關于JMeter
Apache JMeter是Apache組織開發(fā)的基于Java的壓力測試工具。用于對軟件做壓力測試,它最初被設計用于Web應用測試,但后來擴展到其他測試領域。它可以用于測試靜態(tài)和動態(tài)資源,例如靜態(tài)文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。JMeter 可以用于對服務器、網絡或對象模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體性能。另外,JMeter能夠對應用程序做功能/回歸測試,通過創(chuàng)建帶有斷言的腳本來驗證你的程序返回了你期望的結果。為了最大限度的靈活性,JMeter允許使用正則表達式創(chuàng)建斷言。
Apache jmeter 可以用于對靜態(tài)的和動態(tài)的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它可以用于對服務器、網絡或對象模擬繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發(fā)負載測試你的服務器/腳本/對象。
官網:http://jmeter.apache.org/download_jmeter.cgi
這里我選用了 4.0 版本的二進制包:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip
更多內容介紹?https://baike.baidu.com/item/Jmeter/3104456
三.準備工作
因為JMeter是使用JAVA寫的,所以使用JMeter之前,先安裝JAVA環(huán)境,本文就不講不如安裝JAVA環(huán)境了。.
JAVA環(huán)境變量配置:https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html
解壓下載的二進制包,進入bin目錄,使用jmeter.bat啟動程序。
啟動之后會有兩個窗口,一個cmd窗口,一個JMeter的 GUI。前面不要忽略CMD窗口的提示信息:

JMeter:

CMD窗口的提示信息
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
上面的意思就是:不要使用GUI運行壓力測試,GUI僅用于壓力測試的創(chuàng)建和調試;執(zhí)行壓力測試請不要使用GUI。使用下面的命令來執(zhí)行測試:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
并且修改JMeter批處理文件的環(huán)境變量:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
更改語言為中文
官方默認為我們提供了簡體中文。通過 【Options】->【Choose Language】變更為簡體中文

四.創(chuàng)建測試
1.創(chuàng)建線程組
在“測試計劃”上右鍵 【添加】-->【Threads(Users)】-->【線程組】。

設置線程數和循環(huán)次數。我這里設置線程數為500,循環(huán)一次。

2.配置元件
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】-->【配置元件】-->【HTTP請求默認值】。

配置我們需要進行測試的程序協議、地址和端口

當所有的接口測試的訪問域名和端口都一樣時,可以使用該元件,一旦服務器地址變更,只需要修改請求默認值即可。
3.構造HTTP請求
在“線程組”右鍵 【添加-】->【samlper】-->【HTTP 請求】設置我們需要測試的API的請求路徑和數據。我這里是用的json

4.添加HTTP請求頭
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】-->【配置元件】-->【HTTP信息頭管理器】。
因為我要傳輸的數據為json,所以設置一個?Content-Type:application/json

5.添加斷言
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】-->【斷言】-->【響應斷言】。
根據響應的數據來判斷請求是否正常。我在這里只判斷的響應代碼是否為200。還可以配置錯誤信息

6.添加察看結果樹
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】-->【監(jiān)聽器】-->【察看結果樹】。
直接添加,然后點擊運行按鈕就可以看到結果了。

7.添加Summary Report
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】-->【監(jiān)聽器】-->【Summary Report】。
直接添加,然后點擊運行按鈕就可以看到結果了。

為了不引起不必要的爭論,隱藏了TPS。此數據不具備任何價值,僅僅為文章演示。
8.測試計劃創(chuàng)建完成
記得點保存。
五.執(zhí)行測試計劃
前面我們說過,執(zhí)行測試計劃不能用GUI,需要用命令行來執(zhí)行。

我這里執(zhí)行的命令為:
jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport
說明:
testplan/RedisLock.jmx?為測試計劃文件路徑testplan/result/result.txt?為測試結果文件路徑testplan/webreport?為web報告保存路徑。
Web報告如下:

六.寫在最后
線程數量和循環(huán)次數將會影響最終的測試報告,請大家多多測試。
來源:https://www.cnblogs.com/stulzq/p/8971531.html

最后免費給大家分享50個Java項目實戰(zhàn)資料,涵蓋入門、進階各個階段學習內容,可以說非常全面了。大部分視頻還附帶源碼,學起來還不費勁!
附上截圖。(下面有下載方式)。





項目領取方式:
掃描下方公眾號回復:50,
可獲取下載鏈接
???
?長按上方二維碼?2 秒 回復「50」即可獲取資料
點贊是最大的支持?
