課程:B站大學
記錄軟件測試-性能測試學習歷程、掌握前端性能測試、后端性能測試、服務端性能測試的你才是一個專業的軟件測試工程師
性能測試-jmeter實戰4
- jmeter環境搭建
- 1. 安裝Java環境(必需)
- JMeter環境搭建完整指南
- 1. 安裝Java(必需)
- Windows/macOS安裝步驟
- 下載jmeter
- JMeter環境搭建完整指南
- 1. 安裝Java(必需)
- Windows/macOS安裝步驟
- Windows用戶可直接雙擊bin/jmeter.bat
- Linux/macOS
- Windows
- jmeter目錄作用
- 2. 核心目錄詳解
- 2.1 bin目錄(最重要)
- 語言設置
- 默認保存路徑
- RMI設置(分布式測試)
- 安裝插件示例
- docs目錄(文檔資源)
- extras目錄
- 生成HTML報告
- printable_docs目錄
- jmeter.properties中修改
- JMeter核心配置文件說明
- 配置詳解
- 1. jmeter.properties
# 性能測試工具 ## ??LoadRunner ??LoadRunner?? 是一款由 ??Micro Focus??(原惠普企業軟件)開發的性能測試工具,廣泛應用于軟件、Web應用、移動應用及企業系統的負載測試和性能分析。 **主要組件**?? ??VuGen??:錄制和編輯測試腳本。 ??Controller??:管理測試場景和調度虛擬用戶。 ??Load Generator??:生成實際負載的機器。 ??Analysis??:分析測試結果并生成報告。  # Jmeter ??Apache JMeter?? 是一款開源的 ??性能測試?? 和 ??負載測試?? 工具,最初設計用于測試 Web 應用程序,但現已擴展支持多種協議,適用于 API、數據庫、FTP、消息隊列等多種場景。它基于 Java 開發,支持跨平臺運行(Windows、Linux、macOS),廣泛應用于性能測試、壓力測試和功能測試。 ## 主要組件??
- ??測試計劃(Test Plan)??:測試的頂層結構,包含線程組、采樣器、監聽器等。 ??線程組(Thread
Group)??:定義并發用戶數(線程數)、循環次數、啟動時間等。 - ??采樣器(Samplers)??:發送請求(如 HTTP 請求、JDBC 請求)。
- 監聽器(Listeners)??:收集和展示測試結果(如表格、圖形、日志)。
- ??配置元件(Config Elements)??:設置請求頭、Cookie、數據庫連接等。
- 定時器(Timers)??:控制請求之間的延遲(如模擬用戶思考時間)。
??## 適用場景?? - ??Web 應用 & API 測試??:模擬高并發 HTTP 請求,測試 REST/SOAP 接口性能。
- ??數據庫性能測試??:通過 JDBC 壓測 SQL 查詢效率。
- 消息隊列測試??:如 Kafka、RabbitMQ 的吞吐量測試。
- ??文件傳輸測試??:FTP/SFTP 上傳下載性能。
- ??微服務 & 云原生測試??:結合 Docker/Kubernetes 進行動態擴展測試。
jmeter環境搭建
1. 安裝Java環境(必需)
JMeter環境搭建完整指南
1. 安裝Java(必需)
JMeter基于Java開發,需先安裝JDK 8+(推薦JDK 11或17)
Windows/macOS安裝步驟
- 下載JDK:
- Oracle JDK官網下載
- OpenJDK下載
- 配置環境變量:
- 新建系統變量
JAVA_HOME
,值為JDK安裝路徑(如C:\Program Files\Java\jdk-17
) - 編輯系統變量
PATH
,新增%JAVA_HOME%\bin
- 新建系統變量
- 驗證安裝:
java -version
配置java環境變量即可
下載jmeter
訪問Apache JMeter官網
下載Binary版本(如apache-jmeter-5.6.2.zip)
解壓到指定目錄:
Windows示例:C:\jmeter
Windows配置
新建系統變量JMETER_HOME,值為JMeter解壓目錄
編輯系統變量PATH,新增%JMETER_HOME%\bin
驗證配置:
jmeter -v
命令行模式(壓測用)
jmeter -n -t test.jmx -l result.jtl
- 安裝插件(可選)
下載Plugins Manager
將下載的plugins-manager.jar放入lib/ext/目錄
重啟JMeter后,通過菜單安裝插件:
路徑:Options > Plugins Manager
推薦插件:
Custom Thread Groups
PerfMon(服務器監控)
WebDriver(瀏覽器驅動) - 驗證安裝
創建測試計劃:
右鍵Test Plan → Add → Thread Group
右鍵Thread Group → Add → Sampler → HTTP Request
輸入測試URL(如https://example.com)
右鍵Thread Group → Add → Listener → View Results Tree
點擊運行按鈕(綠色三角圖標)
在View Results Tree中查看響應結果
Master節點配置
修改bin/jmeter.properties:
remote_hosts=192.168.1.101,192.168.1.102
啟動分布式測試:
jmeter -n -t test.jmx -l result.jtl -R 192.168.1.101,192.168.1.102
常見問題解決
問題現象 解決方案
報錯"Java not found" 檢查JAVA_HOME和PATH配置是否正確
GUI界面卡頓 改用命令行模式執行測試
內存不足錯誤 修改bin/jmeter中的堆內存參數(如-Xms2g -Xmx4g)
中文亂碼 修改bin/jmeter.properties中的language參數、
JMeter環境搭建完整指南
1. 安裝Java(必需)
JMeter基于Java開發,需先安裝JDK 8+(推薦JDK 11或17)
Windows/macOS安裝步驟
- 下載JDK:
- Oracle JDK官網下載
- 或OpenJDK下載
- 配置環境變量:
- 新建系統變量
JAVA_HOME
,值為JDK安裝路徑(如C:\Program Files\Java\jdk-17
) - 編輯系統變量
PATH
,新增%JAVA_HOME%\bin
- 新建系統變量
- 驗證安裝:
java -version
Linux(Ubuntu/Debian)安裝
sudo apt update
sudo apt install openjdk-17-jdk
java -version
- 下載JMeter
訪問Apache JMeter官網
下載Binary版本(如apache-jmeter-5.6.2.zip)
解壓到指定目錄:
Windows示例:C:\jmeter
Linux示例:/opt/jmeter - 配置環境變量(推薦)
Windows配置
新建系統變量JMETER_HOME,值為JMeter解壓目錄
編輯系統變量PATH,新增%JMETER_HOME%\bin
驗證配置:
jmeter -v
Linux/macOS配置
export JMETER_HOME=/opt/jmeter/apache-jmeter-5.6.2
export PATH=$JMETER_HOME/bin:$PATH
source ~/.bashrc # 或~/.zshrc
jmeter -v
- 啟動JMeter
GUI模式(測試設計用)
jmeter
Windows用戶可直接雙擊bin/jmeter.bat
https://jmeter.apache.org/images/screenshots/jmeter.png
命令行模式(壓測用)
jmeter -n -t test.jmx -l result.jtl
- 安裝插件(可選)
下載Plugins Manager
將下載的plugins-manager.jar放入lib/ext/目錄
重啟JMeter后,通過菜單安裝插件:
路徑:Options > Plugins Manager
推薦插件:
Custom Thread Groups
PerfMon(服務器監控)
WebDriver(瀏覽器驅動) - 驗證安裝
創建測試計劃:
右鍵Test Plan → Add → Thread Group
右鍵Thread Group → Add → Sampler → HTTP Request
輸入測試URL(如https://example.com)
右鍵Thread Group → Add → Listener → View Results Tree
點擊運行按鈕(綠色三角圖標)
在View Results Tree中查看響應結果 - 分布式測試配置(可選)
Slave節點配置
Linux/macOS
jmeter-server
Windows
jmeter-server.bat
Master節點配置
修改bin/jmeter.properties:
remote_hosts=192.168.1.101,192.168.1.102
啟動分布式測試:
jmeter -n -t test.jmx -l result.jtl -R 192.168.1.101,192.168.1.102
常見問題解決
問題現象 | 解決方案 |
---|---|
報錯"Java not found" | 檢查JAVA_HOME和PATH配置是否正確 |
GUI界面卡頓 | 改用命令行模式執行測試 |
內存不足錯誤 | 修改bin/jmeter中的堆內存參數(如-Xms2g -Xmx4g) |
中文亂碼 | 修改bin/jmeter.properties中的language參數 |
最佳實踐建議
生產環境壓測務必使用命令行模式
測試腳本建議版本控制(如Git)
長期運行測試建議添加以下監聽器:
Aggregate Report
Response Times Over Time
對于復雜測試場景,建議使用:
CSV Data Set Config(參數化)
Regular Expression Extractor(關聯)
jmeter目錄作用
apache-jmeter-5.6.2/
├── bin/ # 核心可執行文件
├── docs/ # 官方文檔
├── extras/ # 擴展功能
├── lib/ # 依賴庫
├── licenses/ # 許可證文件
├── printable_docs/ # 可打印文檔
└── LICENSE, NOTICE # 法律聲明文件
2. 核心目錄詳解
2.1 bin目錄(最重要)
bin/
├── jmeter.bat # Windows啟動腳本
├── jmeter.sh # Linux/macOS啟動腳本
├── jmeter.properties # 主配置文件(重點!)
├── jmeter.log # 默認日志文件
├── report-template/ # HTML報告模板
├── shutdown.bat # 強制停止腳本
└── system.properties # JVM系統配置
關鍵文件說明:
jmeter.properties
:500+個可配置參數,包括:
語言設置
language=zh_CN
默認保存路徑
save.saveservice.base_directory=/tmp
RMI設置(分布式測試)
remote_hosts=127.0.0.1
lib/
├── ext/ # 擴展插件目錄(重點!)
│ └── JMeterPlugins.jar
├── junit/ # JUnit測試支持
└── log4j2.xml # 日志配置文件
自定義jar包放在lib/ext/下
插件管理:
安裝插件示例
cp plugins-manager.jar lib/ext/
docs目錄(文檔資源)
docs/
├── api/ # JavaDoc文檔
└── demos/ # 示例測試計劃
├── CompoundTest.jmx
└── websocket.jmx
extras目錄
extras/
├── ant-jmeter-1.1.1.jar # Ant集成支持
└── beam2graph.xsl # 報表樣式表
生成HTML報告
jmeter -g results.jtl -o report/
printable_docs目錄
project/
├── testplans/ # .jmx測試腳本
├── datas/ # 測試數據(CSV等)
├── reports/ # 測試結果
└── lib/ # 項目專用jar包
jmeter.properties中修改
默認搜索路徑
search_paths=/path/to/your/lib
CSV文件基準路徑
csvread.default.path=datas/
JMeter核心配置文件說明
文件路徑 | 作用 | 修改建議 |
---|---|---|
bin/jmeter.properties | 主配置文件 | 修改前建議備份原文件 |
bin/system.properties | JVM參數配置 | 調整內存參數(如-Xms1g -Xmx4g) |
lib/log4j2.xml | 日志系統配置 | 修改日志級別(DEBUG/INFO等) |
配置詳解
1. jmeter.properties
典型配置項:
# 語言設置
language=zh_CN
# 默認端口
server_port=1099
# 分布式測試節點
remote_hosts=127.0.0.1
# jmeter元件作用域
# JMeter元件作用域詳解## 主要作用域類型### 1. 父級作用域
- **定義**:元件只對其直接子級Sampler有效
- **典型元件**:邏輯控制器(如If Controller、Loop Controller)
- **示例**:在Loop Controller下添加的Sampler會受到循環控制 ### 2. 同級作用域
- **定義**:元件對同一層級的所有Sampler有效
- **典型元件**:配置元件(如HTTP請求默認值、HTTP Cookie管理器)
- **示例**:線程組級別的HTTP請求默認值會影響該線程組內所有HTTP請求 ### 3. 全局作用域
- **定義**:元件對整個測試計劃中的所有Sampler有效
- **典型元件**:測試計劃級別的配置元件
- **示例**:在測試計劃根節點添加的User Defined Variables會被所有線程組使用 ## 作用域優先級規則
JMeter遵循以下優先級規則(從高到低):
1. 子級元件配置
2. 父級元件配置
3. 線程組級別配置
4. 測試計劃級別配置 ## 常見元件作用域詳解### 配置元件
- **作用范圍**:取決于放置位置
- **線程組內**:僅影響該線程組
- **測試計劃根節點**:影響所有線程組 ### 前置處理器/后置處理器
- **作用范圍**:僅對同一父級下的Sampler有效
- **示例**:在某個Sampler前添加的前置處理器只處理該Sampler ### 斷言
- **作用范圍**:取決于放置位置
- **Sampler子級**:僅驗證該Sampler響應
- **父級**:驗證所有子Sampler響應 ### 監聽器
- **作用范圍**:收集其作用域內所有Sampler的數據
- **線程組級別**:收集該線程組所有Sampler數據
- **測試計劃級別**:收集所有線程組數據 > **最佳實踐提示**:
> 1. 共享配置應放在高層級(如測試計劃/線程組級別)
> 2. 特定配置放在最接近Sampler的位置
> 3. 使用模塊控制器管理復雜作用域關系
> 4. 避免不必要的全局配置影響


# 實踐是檢驗這里的唯一標準