JMeter,就像是個網站的身體檢查師!它不僅可以測試網站的性能,還可以讓你一窺網站在不同負載下的表現。
- 性能測試:就像是給網站做一次極速爬坡賽!JMeter可以模擬成千上萬的用戶同時訪問你的網站,然後看它如何應對高負載下的表現。
- 壓力測試:為了讓網站變得更強壯,JMeter會讓你的網站面對各種挑戰,找出性能的瓶頸和極限。就像是在做一場網站的極限挑戰賽!
- 功能測試:別看JMeter像個大力士,它也有細膩的手腕。它可以測試網站的各種功能,確保每個按鈕都能正確點擊,每個表格都能正確填寫!
- 自動化測試:不想手動一個一個測試?沒問題!JMeter提供了腳本編寫功能,讓你可以輕鬆設定自動化測試,省時又省力!
- 監控測試:JMeter就像是一位網站的守護神,隨時監控著網站的健康狀況。一旦發現問題,它就會立刻發出警報,讓你能及時處理!
總而言之,JMeter就像是網站的超級英雄,它幫助開發、測試和運營團隊確保網站在任何情況下都能保持最佳狀態,讓用戶能夠享受到最好的網站體驗!
目錄
安裝 & 開啟 Jmeter
安裝 JMeter 很簡單,只需按照以下步驟進行:
安裝指令
開啟指令
操作壓力測試流程:讓您的 API 經受住挑戰!
確保您的 API 在面對高負載時仍能夠保持穩定。
這個流程將模擬大量用戶同時訪問您的 API,並測試其在不同負載條件下的性能表現。
首先,我們將設置測試計劃,包括定義測試場景和目標。
接著,我們將配置測試參數,例如同時用戶數、請求速率等。然後,我們將執行測試並監控其運行情況,以確保 API 在壓力下仍能夠正常運行。
最後,我們將分析測試結果並進行優化,以提高 API 的性能和穩定性。
這個流程將幫助您發現和解決 API 中的性能問題,並確保其能夠在面對高負載時保持良好的運行狀態。
建立一個 Thread Group群組
在 Test Plan 上點右鍵 -> Add -> Threads (Users) -> Thread Group (如下圖顯示)
設定 Thread Group (使用者數量&上限)
點擊 Thread Group 查看右側,Thread Group下方的Name可修改名稱(如下圖顯示)
在 Thread Properties內有兩個參數可以設定多少使用來測試我們的網址或是API
- Number of Threads(users)
- 設定有多少使用者來測試網址或是API
- Ramp-Up Period(in seconds)
- 設定在幾秒內可以到達所設定的使用者上限人數
設定Loop (設定使用者對網址的測試次數)
在 Thread Group 上點右鍵,Add -> Logic Controller -> Loop Controller(如下圖顯示)
設定 Loop count (迴圈/重複執行次數)為 100 次(如下圖顯示)
上面我們已經設定好了使用者的人數以及迴圈的次數,就代表說我們可以對要測試的網址發出的requests(請求)的數量,由上面的參數來做計算的話
100(Users) * 100(Loop Count) = 10,000(Requests)
也代表說我們要測試的網址接收了10,000次的request的請求。
設定要測試的網址
在 Loop Controller 點右鍵, Add -> Sampler -> HTTP Request
HTTP Request底下的Name可設定自己要另名的名稱(如下圖顯示)
Basic -> web Server
- Protocol[http]:可設定https or http
- Server Name or IP: freequickimage.com(測試網址)
- Port Number:可按照自己的測試網址輸入
Basic -> HTTP Request
- GET 可以選擇不同的方式如 POST, PUT, DELETE…
- Path 選擇網址底下的對應路徑
設定 HTTP Header Manager
- 測試計畫中,右鍵點擊你要新增 HTTP Header Manager 的線程組或 HTTP 請求,然後選擇新增 -> 配置元素 -> HTTP Header Manager。
- 在左側的樹狀目錄中,你會看到新添加的 HTTP Header Manager。選中它。
- 在右側的屬性面板中,你可以添加 HTTP 請求的標頭信息。通常,你會添加鍵值對,其中鍵是標頭的名稱,值是標頭的值。
- 你可以點擊添加按鈕(+)來新增新的標頭信息,或者點擊編輯按鈕(筆圖示)來編輯已有的標頭信息。
- 如果你想要刪除某個標頭信息,只需選中該信息,然後點擊刪除按鈕(-)即可。
- 當你新增或編輯完所有需要的標頭信息後,記得點擊保存按鈕(磁盤圖示)保存你的更改。
- 現在,你的 HTTP 請求將會包含你設定的標頭信息。
設定 User Defined Variables
- 測試計畫中,右鍵點擊你要新增 User Defined Variables 的線程組或其他元素,然後選擇新增 -> 配置元素 -> User Defined Variables。
- 在左側的樹狀目錄中,你會看到新添加的 User Defined Variables 元素。選中它。
- 在右側的屬性面板中,你可以添加自定義的變數。點擊添加按鈕(+)以新增一個變數。
- 在變數名稱列輸入你的變數名稱,然後在對應的列輸入變數的值。
- 如果你需要添加更多的變數,可以重複上述步驟。
- 當你新增或編輯完所有需要的變數後,記得點擊保存按鈕(磁盤圖示)保存你的更改。
- 現在,你可以在測試中使用這些自定義變數了。在其他元素的屬性中,可以使用 `${variable_name}` 這樣的語法來引用這些變數。
設定 JSR223 PreProcessor
- 測試計畫中,找到你想要添加 JSR223 PreProcessor 的 HTTP 請求或其他元素。
- 在該元素上右鍵點擊,然後選擇新增 -> 前置處理器 -> JSR223 PreProcessor。
- 在左側的樹狀目錄中,你會看到新添加的 JSR223 PreProcessor 元素。選中它。
- 在右側的屬性面板中,你可以選擇編寫或粘貼你的 Groovy 腳本。默認的語言是 Groovy,但你也可以選擇其他支持的語言,如 JavaScript、Java 等。
- 編寫完腳本後,確保點擊保存按鈕(磁盤圖示)保存你的更改。
- 現在,該 JSR223 PreProcessor 將在每次測試執行前執行你的腳本。你可以在腳本中訪問並修改請求的參數,設置變數,執行任何需要的前置處理邏輯。
新增查看測試結果的三種方法 View Results Tree, Summary Report, Graph Results
透過下方每一個建立查看測試結果流程,了解每一種建立方法與實作
View Results Tree
Loop Controller 上點右鍵, Add -> Listener -> View Results Tree 來記錄每一筆 Request 的結果,為何是在Loop Controller內新增?
因為測試的 HTTP Request是在 Loop Controller內。
Summary Report
Loop Controller 上點右鍵, Add → Listener → Summary Report 加入 Summary Report 來統計 Request 的結果
Graph Results
Loop Controller 上點右鍵, Add → Listener → Graph Results 以圖表顯示執行的結果
開始進行測試網址
點選綠色向右的三角形執行
查看測試結果 View Results Tree, Summary Report, Graph Results
在 JMeter 中,您可以使用三種主要方法來查看測試結果:
- View Results Tree(查看結果樹)
- 這個元件可以以樹狀結構的形式顯示每個 HTTP 請求的詳細信息,包括請求和響應的內容、錯誤信息等。
- 它提供了一個直觀的方式來檢每個請求的細節。
- Summary Report(摘要報告)
- 這個元件會對測試過程中的所有請求進行摘要統計,包括各種性能指標如平均響應時間、吞吐量等。
- 它提供了一個總體性能概覽,方便您快速了解整個測試的表現。
- Graph Results(圖形結果)
- 這個元件會將測試結果以圖表的形式呈現,包括折線圖、柱狀圖等。
- 它可以幫助您直觀地了解測試的變化趨勢和性能指標的變化情況。
這三種方法各有其特點,您可以根據自己的需求和偏好來選擇使用哪一種來查看測試結果。
View Results Tree
左側點擊 View Results Tree,右側可查看到請求的測試結果
例如Sampler Result, Request Response data
如果失敗的話 打勾的符號會變成X並且呈現紅色
Summary Report
可看到總共請求了多少網域名稱以及相關資訊是否有丟失封包等等
Graph Results
透過圖表的方式呈現整體的流程以及數據
清除測試結果
可透過一個掃把清除當下選擇的測試結果
如果透過兩個掃把按鈕可清除所有的測試結果
Python 召喚 JMeter:給你的性能測試增添一點超級英雄色彩!
這段程式碼是一個 Python 函式,用於生成 JMeter 測試計劃的 HTML 報告。
它接受兩個參數:測試計劃文件的路徑(test_plan_path)和報告輸出的路徑(report_output_path)。
在函式內部,定義了 JMeter 的執行路徑(jmeter_cmd)和相關的參數(jmeter_args),這些參數用於指定 JMeter 的執行方式、測試計劃文件的位置以及測試結果的保存位置等。
然後使用 subprocess 模塊來執行 JMeter 測試計劃。
如果成功生成 HTML 報告,則輸出一條成功的提示消息;如果生成過程中出現任何錯誤,則輸出錯誤消息以及相關的錯誤信息。
最後,提供了一個示例用法,展示了如何調用這個函式並指定測試計劃文件的路徑和報告輸出的路徑。
解鎖本地測試新境界:使用 JSON 數據執行 JMeter,提高測試效率!
透過 JMeter 執行本地測試時,使用 JSON 數據作為輸入源,是提高測試效率的一種新方法。
這種方法讓您能夠更靈活地定義測試數據,並輕鬆地將其嵌入到您的測試計劃中。
通過這種方式,您可以更有效地進行測試,並獲得更準確的結果。
建立測試數據
為了針對您要測試的 API 新增一筆資料,我們需要提供一個 JSON 格式的數據。以下是一個示例 JSON:
您可以根據您的需求調整此 JSON 數據,以確保它符合您 API 的要求並包含所需的數據。
然後,您可以將此 JSON 數據用作您 API 測試中的新增資料。
建立前置作業(JSR223 PreProcessor)
由於我們的測試需要動態獲取最新的時間參數,我們使用了前置腳本來自動生成相應的值。
在這個過程中,我們將使用 ${nonce}
作為示例,但您可以選擇其他不重複的名稱。
這個 groovy 腳本的主要目的是將相應的值轉換為獲取到的參數值。
最後,我們將建立好的數據存儲到環境變數 createAnOrderBodyData
中,以便後續使用。
將前置作業檔案放置到執行 HTTP Request 上一層,即可。
測試數據帶入到 Http Request 進行執行
透過下方的寫法,可以輕鬆地將 ${createAnOrderBodyData}
傳遞到腳本內。
這使得您可以在測試腳本中使用這個數據,並且只需更改 JSON 檔案內的參數即可完成數據的修改。
延伸閱讀
簡單上手 Python unittest:從零開始測試您的 API
使用 Robot Framework 進行自動化測試:加速您的測試流程!
Jenkins 教學手冊:打造持續集成和持續部署的最佳實踐!
Postman 新手上路:打造簡單又強大的 API 測試工具!