壓力測試是每個Web應用程序上線以前都須要作的一個測試,他能夠幫助咱們發現系統中的瓶頸問題,減小發布到生產環境後出問題的概率;預估系統的承載能力,使咱們能根據其作出一些應對措施。因此壓力測試是一個很是重要的步驟,下面我帶你們來使用一款壓力測試工具JMeter。html
Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試,但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源,例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫、FTP 服務器, 等等。JMeter 能夠用於對服務器、網絡或對象模擬巨大的負載,來自不一樣壓力類別下測試它們的強度和分析總體性能。另外,JMeter可以對應用程序作功能/迴歸測試,經過建立帶有斷言的腳原本驗證你的程序返回了你指望的結果。爲了最大限度的靈活性,JMeter容許使用正則表達式建立斷言。
Apache jmeter 能夠用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它能夠用於對服務器、網絡或對象模擬繁重的負載來測試它們的強度或分析不一樣壓力類型下的總體性能。你可使用它作性能的圖形分析或在大併發負載測試你的服務器/腳本/對象。java
官網:http://jmeter.apache.org/download_jmeter.cgiweb
這裏我選用了 4.0 版本的二進制包:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip正則表達式
更多內容介紹 https://baike.baidu.com/item/Jmeter/3104456shell
由於JMeter是使用JAVA寫的,因此使用JMeter以前,先安裝JAVA環境,本文就不講不如安裝JAVA環境了。.數據庫
JAVA環境變量配置:https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.htmlapache
解壓下載的二進制包,進入bin目錄,使用jmeter.bat
啓動程序。json
啓動以後會有兩個窗口,一個cmd窗口,一個JMeter的 GUI。前面不要忽略CMD窗口的提示信息:服務器
JMeter:網絡
================================================================================ 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僅用於壓力測試的建立和調試;執行壓力測試請不要使用GUI。使用下面的命令來執行測試:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
而且修改JMeter批處理文件的環境變量:HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
官方默認爲咱們提供了簡體中文。經過 【Options】->【Choose Language】變動爲簡體中文
在「測試計劃」上右鍵 【添加】-->【Threads(Users)】-->【線程組】。
設置線程數和循環次數。我這裏設置線程數爲500,循環一次。
在咱們剛剛建立的線程組上右鍵 【添加】-->【配置元件】-->【HTTP請求默認值】。
配置咱們須要進行測試的程序協議、地址和端口
當全部的接口測試的訪問域名和端口都同樣時,可使用該元件,一旦服務器地址變動,只須要修改請求默認值便可。
在「線程組」右鍵 【添加-】->【samlper】-->【HTTP 請求】設置咱們須要測試的API的請求路徑和數據。我這裏是用的json
在咱們剛剛建立的線程組上右鍵 【添加】-->【配置元件】-->【HTTP信息頭管理器】。
由於我要傳輸的數據爲json,因此設置一個 Content-Type:application/json
在咱們剛剛建立的線程組上右鍵 【添加】-->【斷言】-->【響應斷言】。
根據響應的數據來判斷請求是否正常。我在這裏只判斷的響應代碼是否爲200。還能夠配置錯誤信息
在咱們剛剛建立的線程組上右鍵 【添加】-->【監聽器】-->【察看結果樹】。
直接添加,而後點擊運行
按鈕就能夠看到結果了。
在咱們剛剛建立的線程組上右鍵 【添加】-->【監聽器】-->【Summary Report】。
直接添加,而後點擊運行
按鈕就能夠看到結果了。
爲了避免引發沒必要要的爭論,隱藏了TPS。此數據不具有任何價值,僅僅爲文章演示。
記得點保存。
前面咱們說過,執行測試計劃不能用GUI,須要用命令行來執行。
我這裏執行的命令爲:
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報告以下:
線程數量和循環次數將會影響最終的測試報告,請你們多多測試。