淺談Jmeter
什么是Jmeter
JMeter 是 Apache 軟件基金會開發的一個開源軟件,用于負載測試和性能測試。它被設計用來模擬多種請求到服務器、網絡或對象,以測試其性能。JMeter 可以用于測試靜態和動態資源,并且可以模擬各種協議的請求,包括但不限于:
- HTTP 和 HTTPS:測試Web應用
- FTP
- SMTP
- IMAP
- JMS
- LDAP
- WebSockets
JMeter 還提供了多種功能,如:
- 多線程測試:能夠模擬多個用戶同時訪問應用程序。
- 測試計劃和腳本的保存:可以保存測試計劃和腳本,供以后重用。
- 結果分析:提供了多種圖表和報表來分析測試結果。
- 插件支持:JMeter 社區提供了許多插件,增強了其功能。
JMeter 適用于開發人員、測試工程師和系統管理員,幫助他們了解應用程序在不同負載下的表現,從而優化性能和穩定性。
運行環境:需要安裝JDK8 以上
Jmeter目錄
bin:核心可執行文件,包含配置 jmeter.bat: windows啟動文件(window系統一定要配置顯示文件拓展名) jmeter: mac或者linux啟動文件 jmeter-server:mac或者Liunx分布式壓測使用的啟動文件 jmeter-server.bat:window分布式壓測使用的啟動文件 jmeter.properties: 核心配置文件 ? extras:插件拓展的包lib:核心的依賴包
配置文件修改
bin目錄 -> jmeter.properties
語言問題
默認 #language=en改為 language=zh_CN
響應亂碼問題解決
# sampleresult.default.encoding=ISO-8859-1的注釋去掉,改成:sampleresult.default.encoding=UTF-8
PS
-
JMeter 不是瀏覽器,它在協議級別工作
-
對于 Web 服務和遠程服務而言,JMeter 看起來像一個瀏覽器
-
JMeter 并不執行瀏覽器支持的所有操作,不像瀏覽器那樣呈現 HTML 頁面,不執行 HTML 頁面中的 JS
Jmeter5.X核心功能組件+線程組和Sampler
核心功能組件
- 測試計劃(Test Plan):這是JMeter測試的起點,所有測試元素都包含在測試計劃中。
- 線程組(Thread Group):代表虛擬用戶組,可以設置線程數、Ramp-Up 期(啟動時間)和測試的循環次數。
- 配置元件(Config Element):用于設置測試環境,如HTTP請求默認值、數據庫連接等。
- 前置處理器(Pre Processors):在請求發送前對請求進行修改或添加信息。
- 后置處理器(Post Processors):在請求發送后對響應進行處理。
- 斷言(Assertions):用于驗證響應結果是否符合預期。
- 監聽器(Listeners):用于查看和分析測試結果,如查看請求和響應數據、生成圖表等。
- 定時器(Timers):控制請求之間的間隔時間。
- 控制器(Controllers):用于組織Samplers,如邏輯控制器、循環控制器等。
線程組(Thread Groups)
線程組是模擬用戶行為的核心組件,以下是其主要功能:
- 名稱:線程組的標識。
- 線程數(Number of Threads):模擬的虛擬用戶數。
- Ramp-Up 期(Ramp-Up Period):所有線程啟動所需的時間,用于平滑啟動測試。
- 循環次數(Loop Count):每個線程執行的請求次數,可以設置為永遠循環(Forever)。
- 調度器(Scheduler):可以設置測試開始的時間。
Samplers
采樣器是實際執行請求的組件,以下是一些常用的Samplers:
- HTTP請求(HTTP Request):用于模擬對Web服務器的請求。
- FTP請求(FTP Request):用于模擬FTP服務器的請求。
- JDBC請求(JDBC Request):用于模擬數據庫請求。
- LDAP請求(LDAP Request):用于模擬LDAP服務器的請求。
- JMS點對點(JMS Point-to-Point):用于模擬JMS消息傳遞。
- WebSocket請求(WebSocket Request):用于模擬WebSocket通信。
- TCP請求(TCP Request):用于模擬TCP協議的請求。
- 自定義Sampler:用戶可以編寫自定義的Sampler來滿足特定需求。
每個Sampler都可以配置具體的請求參數,如URL、方法(GET、POST等)、請求頭、請求體等。Sampler執行請求后,會生成響應數據,這些數據可以被后續的監聽器捕獲并展示。
JMeter 5.x 版本在之前的基礎上增加了對現代應用程序的支持,如WebSockets和分布式測試的改進,以及用戶界面和性能的優化。使用JMeter進行性能測試時,可以根據測試需求選擇合適的組件和配置。
互聯網公司高并發業務的Jmeter壓測流程痛點
痛點一:本地測試環境與生產環境差異
痛點二:Linux服務器命令行壓測配置復雜性
痛點三:JMX腳本和參數化文件管理
痛點四:測試報告生成和存儲
痛點五:不同環境下的測試一致性
痛點六:性能優化后的再測試