# [測試] Jmeter 使用筆記 ## 什麼是壓力測試 網站的測試有分幾種,下面參考連結講得很清楚: [淺談測試基本觀念 – 壓力測試、負載測試、效能測試](https://www.astralweb.com.tw/introduction-of-stress-testing-load-testing-and-performance-testing/) ## 什麼是 JMeter 官方手冊:[User's Manual](https://jmeter.apache.org/usermanual/index.html) ## 環境設定 因為是跑在 JVM 上,任何作業系統安裝 Java 後皆可支援。 ### 安裝 Java 安裝網址:[Java SE Downloads](https://www.oracle.com/java/technologies/javase-downloads.html) 1. 根據自己的作業系統,選擇下載 **Java 8** 以上的版本 2. 安裝完後,根據不同平台設定環境 3. 檢查是否安裝成功:打開 terminal:輸入 `java`、`javac`,都有看到一大串東西就可以了 ### 下載 JMeter 下載網址:[Download Apache JMeter](https://jmeter.apache.org/download_jmeter.cgi) 1. Downlaod apache-jmeter-*version*.zip 2. 下載完後解壓縮,即可執行 3. 點開資料夾下的 bin,可開啟介面: - Windows 開啟 jmeter.bat - Linux / Unix / MacOS 開啟 jmeter.sh ### 安裝 JMeter Plugin (optional) 安裝網址:[Installing Plugins](https://jmeter-plugins.org/install/Install/) 1. Download plugins-manager.jar 2. Put it into lib/ext directory 3. Restart JMeter 4. 重新啟動後,在 Options 下方會出現 Plugins Manager,表示安裝成功。 *(有用到特別的功能,標配裡面沒提供才需要安裝。)* ### 修改 Java 參數 JMeter 預設只能存取 1GB 的記憶體,可以手動修改參數,調整成電腦記憶體的 80 %,能讓 JMeter 有資源開啟更多 Thread,模擬更多的測試人數。 參考:[JMeter – How to increase heap size?](https://www.perfmatrix.com/jmeter-how-to-increase-heap-size/) ## 基本功能說明 > 每個分類參考:[Elements of a Test Plan](https://jmeter.apache.org/usermanual/test_plan.html) > 每個分類下的項目參考:[18. Component Reference](https://jmeter.apache.org/usermanual/component_reference.html) ### Thread Group 位置:Threads (Users) -> Thread Group - Number of Threads (users):表示模擬使用者的數量 - Ramp-up period (seconds):在指定秒數內達到指定人數 - 設定完 Thread Group 後,Group 之下的設定就是在針對每個人模擬操作。 - 參考:[Jmeter系列(7)- 基礎執行緒組Thread Group](https://www.gushiciku.cn/pl/pLQ0/zh-tw) ### HTTP Request 位置:Sampler -> HTTP Request - 最基礎的設定 API 的樣板 - 一個 API 就用一個 HTTP Request,可以設定路徑、傳入的參數 ### Logic Controller - 控制腳本怎麼執行、管理參數存取範圍 - 參考:[【JMeter】各種邏輯控制器(Logic Controller)](https://www.twblogs.net/a/5c3f6afbbd9eee35b21e348f) ### Config Element #### HTTP Request Defaults 設定 HTTP Requests 的默認值,可涵蓋範圍內的 HTTP Request 不輸入值就會抓預設值。舉例:都是呼叫同一台伺服器的 API,IP、Protocol 皆相同,只有 Path 不同。 #### User Defined Variables 可設置指定範圍或全域變數,使用 `${variable-name}` 存取。 ### Listener 用來產生可視化結果。 #### View Results Tree 可以查看每次呼叫的 request 和 response 的內容。 #### Summary Report 統計每個 API 呼叫的次數、平均回應時間、錯誤率等資料。 #### View Results in Table 可以查看每次 request 的狀態、資料量等資訊。 ## 腳本設計 要設計測試腳本,可以評估現在是什麼樣的系統要測試什麼,再來設定: - 指定時間內 - 有多少人 - 要完成多少事 一般系統要測試負載量,不會設定極短的時間要求很多人做很多事,舉例幾千幾萬人在同一秒點開網站操作一個很複雜的流程(除非是搶購系統),除了對測試環境負荷量太大可能失敗以外,要同一時間大家發出 request 不是合理的情境。所以上述幾點會根據測試的內容,增加或減少,來達到預期的效果。 - 壓力測試:模擬短時間人潮集中在特定功能上,要做的事就會設比較少。 - 負載測試:模擬大量人潮湧入的時候,時間會設定比較寬裕,要做的事可以比較多。 - 效能測試:可以參考負載測試的報告。 ### 情境設定 ### 錄製腳本 可以應用在有介面的前端測試上,用錄製的方式快速產出腳本。 參考:[26. Apache JMeter HTTP(S) Test Script Recorder](https://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.html) ## 測試方式 ### GUI 設定腳本(產出 jmx 檔)的時候,或進行小量的測試,都可以用 GUI 做設定。但實際測試的時候建議使用 Non-GUI 模式,較不占用記憶體資源。 參考:[JMeter實戰(三) 介面使用](https://iter01.com/549766.html) ### Non-GUI 要實際跑大量測試的時候,先在 GUI 上修改 Thread Group 的參數,用 terminal 執行: ```shell= # 執行測試腳本,並將結果輸出成網頁報告 jmeter -n -t [jmx-file] -l [results-file] -e -o [report-folder] ``` 參考:[JMeter Command line mode and report dashboard 指令操作模式與報表儀表板](http://dog0416.blogspot.com/2017/06/stress-test-jmeter-command-line-mode.html) ## 其他 ### 執行範例檔 手邊有 .jmx 的檔案,或是用範例(/printable_docs/demos/)讀取操作: 1. Choose File -> open -> *filename*.jmx 2. 開啟後請檢查 Thread Group 下 Number of Threads 不超過 10。 3. 可以點上方綠色 `Start` 執行 4. 有結果會出現在報告中 ## References - [網站測試工具-JMeter教學](https://www.astralweb.com.tw/website-test-tool-jmeter-teaching/) - [JMeter 入門](https://openhome.cc/Gossip/JUnit/JMeter.html) ###### tags: `jmeter` `壓力測試` `負載測試` `效能測試` `stressTesting` `loadTesting`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.