🥰🥰🥰來都來了,不妨點個關注叭!
👉博客主頁:歡迎各位大佬!👈
文章目錄
- 1. JMeter 的介紹
- 2. JMeter 安裝、配置、搭建
- 2.1 前置條件 —— Java環境搭建
- 2.2 JMeter 下載
- 2.3 JMeter 安裝
- 2.4 JMeter 啟動
- 3. JMeter 基本使用
- 3.1 前置知識
- 3.2 JMeter 腳本編寫
- Step1:添加線程組
- Step2:添加請求(HTTP請求)
- Step3:添加查看結果樹
- Step4:添加用戶自定義變量
- Step5:添加斷言
- Step6:添加斷言結果
- Step7:添加聚合報告
- 3.3 JMeter 執行性能測試
- Step1:配置線程組
- Step2:執行,觀察聚合報告
前面內容介紹了 LoadRunner 性能測試工具,可回顧這期內容【軟件測試】性能測試 —— 工具篇 LoadRunner 介紹與使用
JMeter、LoadRunner 都是目前非常好用的性能測試工具,也很主流,并沒有什么好壞之分,因為 JMeter 開源(免費~),同時使用頻率比較高,因此我們一起來看看如何使用 JMeter 吧~
1. JMeter 的介紹
【介紹】JMeter 是一款開源的負載測試工具,主要用于模擬各種負載場景,測試軟件、系統或網絡的性能、可靠性和穩定性
【核心功能】
- 負載測試與壓力測試
1)模擬大量用戶并發訪問,測試系統在不同負載下的響應時間、吞吐量等性能指標
2)支持逐步增加用戶數(階梯式負載)或瞬間高并發(峰值負載),驗證系統極限承載能力 - 多協議支持
1)主流協議:HTTP/HTTPS、JDBC(數據庫)、WebSocket 等
2)擴展協議:通過插件支持 gRPC、Dubbo 等,滿足多樣化測試需求 - 測試場景設計
1)可創建復雜的用戶行為流程,通過"線程組"、“取樣器”、“邏輯控制器” 等組件模擬真實業務場景
2)支持參數化(如動態生成用戶賬號、隨機數據),增強測試的真實性 - 結果分析與可視化
1)生成圖表,如響應時間曲線圖、吞吐量柱狀圖等,可以直觀展示性能瓶頸
2)支持將結果導出為 CSV、XML 或 HTML,便于二次分析
【適用場景】
- Web 應用測試:驗證網站在高并發下的響應速度和穩定性
- API 接口測試:測試 RESTful API、SOAP 接口的性能和容錯能力
- 數據庫測試:模擬大量 SQL 查詢,評估數據庫性能
- 分布式系統測試:測試多節點集群的負載均衡和協同能力
JMeter 最大的優勢就是開源免費還好用(白嫖誰不喜歡呢~嘿嘿),并且通過插件機制支持更多協議,圖形化界面也是十分友好的,可以通過拖拽式操作簡化測試計劃設計!
【基本組件】
- 線程組:模擬用戶群體,設置并發數、循環次數等
- 線程數:模擬用戶數量
- Ramp-Up 時間:達到指定線程所需要的時間,比如設置線程數為500,Ramp-Up時間為10s,則每秒啟動50個線程
- 循環次數:測試的循環次數
- 取樣器:發送請求(如 HTTP 請求、JDBC 查詢),獲取服務器響應
- 用于向服務器發送請求,如HTTP/HTTPS請求、JDBC查詢等
- 在線程組下添加取樣器,配置請求的URL、方法、參數等內容
- 監聽器:收集并展示測試結果(如表格、圖表、聚合報告)
- 斷言:驗證響應結果是否符合預期(如狀態碼 200、響應包含特定字符串)
- 用于驗證響應是否符合預期,可以使用正則表達式、Xpath等方式進行斷言
- 配置元件:設置全局參數(如 HTTP 頭信息、數據庫連接池)
- 前置處理器、后置處理器:在單個取樣器執行前/后觸發
- 前置處理器,在單個取樣器執行前觸發,對取樣器進行預處理,如生成隨機參數替換請求中的變量,從文件讀取數據并傳入請求,修改取樣器的請求內容
- 后置處理器 在單個取樣器執行后觸發,處理取樣器的響應結果,如從響應中提取關鍵數據(如 token、ID),對響應結果進行格式化或轉換,將提取的數據保存為變量供后續取樣器使用
- 邏輯控制器:控制請求執行順序(如 if 條件判斷、循環、事務)
- 用于控制測試的執行邏輯,如if條件判斷、循環等
2. JMeter 安裝、配置、搭建
2.1 前置條件 —— Java環境搭建
我們知道 JMeter 是基于 Java 語言開發的~ 因此,我們使用 JMeter 需要安裝 JDK~~
(這里不再贅述 JDK 下載和 Java 環境變量的配置~ 目前 JMeter 是 5+ 的版本,需要 JDK 8 以及以上的版本,一般安裝 JDK 8 即可)
2.2 JMeter 下載
JMeter 官方下載地址:JMeter 官方下載
2.3 JMeter 安裝
- Step1:根據自己的系統,選擇對應的進行下載,下載安裝包后解壓(記住在哪個位置哦,后面環境變量需要用)
(筆者安裝在了這里~) - Step2:對環境變量進行配置
1)添加變量
復制 JMeter 下載后的路徑~ 在環境變量中配置:
變量名JMETER_HOME
,變量值為下載 JMeter 的路徑
(記得一步步點確定,避免沒有添加進去,忘記環境變量如何配的,可以直接搜索高級系統設置~)
2)Path添加
在 Path 里面 添加%JMETER_HOME%\bin
- Step3:檢查是否下載安裝配置成功
1)檢查 JMeter 版本:jmeter -v
2)檢查 JMeter 是否能啟動:jmeter
(如果沒有出現,可以檢查上述環境變量是否添加成功!!!如果都配置保存成功了,還是沒有出現,可以將在用戶變量里面Path添加%JMETER_HOME%\bin
)
2.4 JMeter 啟動
JMeter 啟動方式有兩種:
1)上述在 cmd 中輸入 :jmeter
則啟動了
2)進入apache-jmeter-5.6.3
,打開里面的 bin 文件,找到 ApacheJMeter.jar
,雙擊
啟動后頁面如下:
3. JMeter 基本使用
3.1 前置知識
1)可以更換語言,選擇我們更熟悉的中文(簡體):Options ——> Choose Langauge ——> Chinese(Simplified)
2)頁面按鈕功能介紹:
3.2 JMeter 腳本編寫
本期內容以百度網站https://www.baidu.com/
為例子,進行簡單的腳本編寫,也可以拿其它網站或者是自己的項目試試~
Step1:添加線程組
右鍵測試計劃,點擊添加 ——> 線程(用戶) ——> 線程組
線程組可以配置如下內容:
【具體解釋】
- 名稱:給這個線程組取的名稱,以便區分
- 注釋:對名稱的補充說明
- 在取樣器錯誤后要執行的動作:可以很清楚的看到給出的選項,根據自己需要選擇取樣器(用于發送請求,獲取服務器響應)錯誤后是繼續、啟動下一進程循環、停止線程、停止測試還是立即停止測試
- 線程屬性
- 線程數:模擬用戶數,設置10個線程數則是模擬10個線程數
- Ramp-up時間(秒):達到指定線程所需要的時間,設置10個線程數,Ramp-up為2s,則1s啟動5個線程
- 循環次數:每個線程發送的請求次數,設置10個線程,10次循環次數,每個線程都發送10個請求,總共發送 10 * 10 = 100個請求
- Same user on each iteration:在循環執行任務、重復處理流程中,保持"同一用戶"的上下文、狀態或身份信息一致,如保存用戶會話、權限信息、歷史操作記錄
- 延遲創建線程直到需要:線程不預先創建,在任務實際需要執行時才動態創建線程(有沒有想到"懶加載"~)
- 調度器:用于控制線程執行時機,何時啟動,持續多久(需要注意的是勾選了調度器,需要勾選循環次數為永遠)
- 持續時間(秒):測試持續的時間
- 啟動延遲(秒):測試延遲的啟動時間
Step2:添加請求(HTTP請求)
右鍵線程組 ——> 添加 ——> 取樣器 ——> HTTP請求(根據自己需要來)
HTTP請求可以配置如下內容:
【具體解釋】
- 名稱:給這個HTTP請求取的名稱,以便區分
- 注釋:對名稱的補充說明
- Web服務器:
- 協議:向目標服務器發送請求的協議,可以是HTTP/HTTPS,默認是HTTP
- 服務器名稱或IP:發送目標服務器的名稱或者IP
- 端口號:目標服務器端口號,默認值為80(因為HTTP默認端口號為80)
- HTTP請求:
- 方法:發送HTTP請求的方法,最常用的有 GET、POST 等等
- 路徑:目標URL地址(即URL后面去掉服務器地址后的剩余部分)
- 內容編碼:編碼方式,這里配置為常用的utf-8,默認為ISO-8859-1編碼
- 同請求一起發送的參數:URL中的參數(下圖棕色框框部分,注意參數傳入中文的時候,需要勾選"編碼")
Step3:添加查看結果樹
【查看結果樹】查看和分析 HTTP 請求的響應結果(簡單地進行分析)
右鍵點擊線程組 ——> 添加 ——> 監聽器 ——> 查看結果樹
接著運行,將響應數據格式改成:HTML_Source Formatted
可以查看結果~ 如下:
可以看到是按照我們的配置發送的請求,向百度搜索"哈哈哈哈哈",發送的請求是正確的
取樣器結果:
Step4:添加用戶自定義變量
【用戶自定義變量】添加用戶自定義變量是為了方便存儲和管理需要的值,用戶自定義變量是全局的,可以在測試計劃中任何地方引用,避免重復寫
右鍵點擊線程組 ——> 添加 ——> 配置元件 ——> 用戶定義的變量
我們可以將 wd 的變量存儲起來,wd 參數是用于存搜索詞語的
1)添加變量
2)使用變量:使用 ${變量名稱}
Step5:添加斷言
【斷言】驗證測試結果是否符合預期
右鍵點擊線程組 ——> 添加 ——> 斷言 ——> 響應斷言
Step6:添加斷言結果
添加斷言結果,我們可以看到 HTTP 請求中的斷言結果是否正確
右鍵點擊HTTP請求 ——> 添加 ——> 監聽器 ——> 斷言結果
點擊運行,可以看到運行結果如下:
Step7:添加聚合報告
【聚合報告】匯總和分析測試結果工具,提供了各種性能指標如請求數、平均響應時間、吞吐量等,來存儲性能測試報告的~
右鍵點擊線程組 ——> 添加 ——> 監聽器 ——> 聚合報告
【具體解釋】
- Label: 測試中 HTTP 請求的"自定義名稱"
- #樣本:請求數,實際執行的請求數量,發了多少次請求,比如這里是 10 * 10 = 100
- 平均值:平均響應時間(默認是單個請求的平均響應時間)
- 中位數:50%用戶的響應時間
- 90%百分位:90%用戶的響應時間
- 95%百分位:95%用戶的響應時間
- 99%百分位:99%用戶的響應時間
- 最小值:所有請求中最快的響應時間,最小響應時間
- 最大值:所有請求中最慢的響應時間,最大響應時間
- 異常%:請求錯誤率(請求錯誤數/請求總數)
- 吞吐量:單位時間處理的請求數(默認是每秒完成的請求數)
- 接收KB/sec:每秒從服務器接收的數據量(響應數據大小)
- 發送KB/sec:每秒向服務器發送的數據量(請求數據大小)
3.3 JMeter 執行性能測試
Step1:配置線程組
Step2:執行,觀察聚合報告
分析測試結果,不斷調整測試計劃,發現問題~
(如果想重新執行,可以點擊清除按鈕~)
筆者在這里請求頻率過高,觸發了安全驗證流程(看到這個不用慌~)
?小建議:
- 精簡監聽器:測試期間,若無需實時查看結果,可關閉非必要監聽器,降低系統資源消耗,保障測試高效運行
- 按需用斷言:斷言并非越多越好,過量斷言會增加測試復雜度,結合實際測試需求,精準使用斷言,聚焦核心驗證點
- 迭代調計劃:測試流程中,需動態優化測試計劃,通過靈活調整線程數、循環次數等參數,不斷逼近最佳測試效果,適配系統性能驗證需求
- 深析結果數據:借聚合報告等專業分析工具,對測試結果開展深度剖析。從數據中挖掘潛在性能問題,為系統優化提供精準依據 。
???本期內容到此結束啦~ (想必 JMeter、LoadRunner 性能測試工具我們都會用了吧~~)