天天看點

使用 JMeter 進行壓力測試

一.前言

壓力測試是每一個Web應用程式上線之前都需要做的一個測試,他可以幫助我們發現系統中的瓶頸問題,減少釋出到生産環境後出問題的幾率;預估系統的承載能力,使我們能根據其做出一些應對措施。是以壓力測試是一個非常重要的步驟,下面我帶大家來使用一款壓力測試工具JMeter。

二.關于JMeter

Apache JMeter是Apache組織開發的基于Java的壓力測試工具。用于對軟體做壓力測試,它最初被設計用于Web應用測試,但後來擴充到其他測試領域。 它可以用于測試靜态和動态資源,例如靜态檔案、Java 小服務程式、CGI 腳本、Java 對象、資料庫、FTP 伺服器, 等等。JMeter 可以用于對伺服器、網絡或對象模拟巨大的負載,來自不同壓力類别下測試它們的強度和分析整體性能。另外,JMeter能夠對應用程式做功能/回歸測試,通過建立帶有斷言的腳本來驗證你的程式傳回了你期望的結果。為了最大限度的靈活性,JMeter允許使用正規表達式建立斷言。

Apache jmeter 可以用于對靜态的和動态的資源(檔案,Servlet,Perl腳本,java 對象,資料庫和查詢,FTP伺服器等等)的性能進行測試。它可以用于對伺服器、網絡或對象模拟繁重的負載來測試它們的強度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發負載測試你的伺服器/腳本/對象。

官網: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環境,本文就不講不如安裝JAVA環境了。.

JAVA環境變量配置:https://jingyan.baidu.com/article/fd8044fa2c22f15031137a2a.html

解壓下載下傳的二進制包,進入bin目錄,使用

jmeter.bat

啟動程式。

啟動之後會有兩個視窗,一個cmd視窗,一個JMeter的 GUI。前面不要忽略CMD視窗的提示資訊:

使用 JMeter 進行壓力測試

JMeter:

使用 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僅用于壓力測試的建立和調試;執行壓力測試請不要使用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】變更為簡體中文

使用 JMeter 進行壓力測試

四.建立測試

1.建立線程組

在“測試計劃”上右鍵 【添加】-->【Threads(Users)】-->【線程組】。

使用 JMeter 進行壓力測試

設定線程數和循環次數。我這裡設定線程數為500,循環一次。

使用 JMeter 進行壓力測試

2.配置元件

在我們剛剛建立的線程組上右鍵 【添加】-->【配置元件】-->【HTTP請求預設值】。

使用 JMeter 進行壓力測試

配置我們需要進行測試的程式協定、位址和端口

使用 JMeter 進行壓力測試
當所有的接口測試的通路域名和端口都一樣時,可以使用該元件,一旦伺服器位址變更,隻需要修改請求預設值即可。

3.構造HTTP請求

在“線程組”右鍵 【添加-】->【samlper】-->【HTTP 請求】設定我們需要測試的API的請求路徑和資料。我這裡是用的json

使用 JMeter 進行壓力測試

4.添加HTTP請求頭

在我們剛剛建立的線程組上右鍵 【添加】-->【配置元件】-->【HTTP資訊頭管理器】。

因為我要傳輸的資料為json,是以設定一個

Content-Type:application/json

使用 JMeter 進行壓力測試

5.添加斷言

在我們剛剛建立的線程組上右鍵 【添加】-->【斷言】-->【響應斷言】。

根據響應的資料來判斷請求是否正常。我在這裡隻判斷的響應代碼是否為200。還可以配置錯誤資訊

使用 JMeter 進行壓力測試

6.添加察看結果樹

在我們剛剛建立的線程組上右鍵 【添加】-->【監聽器】-->【察看結果樹】。

直接添加,然後點選

運作

按鈕就可以看到結果了。

使用 JMeter 進行壓力測試

7.添加Summary Report

在我們剛剛建立的線程組上右鍵 【添加】-->【監聽器】-->【Summary Report】。

運作

使用 JMeter 進行壓力測試
為了不引起不必要的争論,隐藏了TPS。此資料不具備任何價值,僅僅為文章示範。

8.測試計劃建立完成

記得點儲存。

五.執行測試計劃

前面我們說過,執行測試計劃不能用GUI,需要用指令行來執行。

使用 JMeter 進行壓力測試

我這裡執行的指令為:

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報告如下:

使用 JMeter 進行壓力測試

六.寫在最後

線程數量和循環次數将會影響最終的測試報告,請大家多多測試。

目前學習.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程

.NET Core 交流群:923036995  歡迎加群交流

如果您認為這篇文章還不錯或者有所收獲,您可以點選右下角的【推薦】支援,或請我喝杯咖啡【贊賞】,這将是我繼續寫作,分享的最大動力!

作者:曉晨Master(李志強)

聲明:原創部落格請在轉載時保留原文連結或者在文章開頭加上本人部落格位址,如發現錯誤,歡迎批評指正。凡是轉載于本人的文章,不能設定打賞功能,如有特殊需求請與本人聯系!

繼續閱讀