系統壓力測試計畫-使用JMETER工具
1. 前言
本文介紹依據某系統專案制定簡易的效能測試計畫,並搭配使用JMETER工具針對【瞬間登入:壓力測試】設定以進行系統效能測試 (Performance Test)。
2. 開始前準備
實作此測試計畫是建立於以下版本的環境:
l MS-Windows10
l Apache JMeter 5.2.1
3. 測試情境建議說明
1. 瞬間登入:主要是在測試登入在何種情境下會超過負載,因系統Loading過重,造成回應過久,導致系統當機Crash掉,因此可了解該系統最大乘載量:
2. 測試同時上線查詢產品持有功能:主要是測試同時執行最多支API的負載及效能表現狀況
3. 正常登入:主要是測試該系統在正常登入情境下負載的數據
4. 整合測試:主要是測試該系統在持續一段時間內隨機執行各功能的情境下的數據
4. 測試腳本
項目 |
測試方法 |
瞬間登入:壓力測試 |
本項測試的準則為模擬500,1000,1500,2000,2500,3000,3500,3800個使用者同時執行登入完畢(每個用戶只執行一次) |
測試同時上線查詢產品持有功能-壓力測試 |
測試的準則為模擬3800個使用者需在760秒內執行登入完畢(每個用戶只執行一次),依序讀取客戶ID執行查看該功能,並停留30秒查看頁面資訊。 |
測試同時上線查詢產品持有功能-效能測試 |
測試的準則為模擬300個使用者需在30秒內執行登入完畢(每個用戶只執行一次),依序讀取客戶ID執行查看該功能,並停留30秒查看頁面資訊。 |
正常登入:效能測試 |
本項測試的準則為模擬300個使用者需在60秒內執行登入完畢(每個用戶只執行一次) |
整合測試 |
測試的準則為模擬300 個使用者需在60秒內執行登入完畢,且連續測試10分鐘,依序讀取客戶ID隨機執行查看其中一個功能,並停留30秒查看頁面資訊。 |
5. 測試工具 Jmeter設定
一、 瞬間登入
I. 建立虛擬用戶
Step 1:在 Test Plan 上點右鍵,新增 → Threads (Users) → 執行緒群組
Step 2:符合500個用戶同時觸發登入行為完畢的情境設定如下:
1. 設定有意義名稱
2. 表示500個虛擬用戶
3. 表示500個虛擬用戶會陸續在1秒中啟動請求網站,執行後續設定的各測試情境
4. 只觸發一次此群組內的所有測試情境 (登入行為)
II. 準備帳密
Step 1:設定好虛擬用戶後,接著就是要執行登入要模擬 500 用戶登入,首先必須要具有 500 筆帳號密碼進行模擬,針對這個需求可以先建立data_500.csv檔案來存放測試用戶的帳號及密碼清單。
Step 2:接著新增CSV資料設定功能來載入data_500.csv檔案中的所有帳號密碼。
Step 3:載入變數提供後續測試使用,設定方式如下:
1. 檔案實體路徑
2. 依序給予變數名稱 (以此名稱作為後續測試使用的變數)
3. 忽略第一筆資料 (因為data_500.csv第一列為標題)
III. 建立HTTP要求-登入
Step 1:建立HTTP要求預設值來統一設置主機位置參數。
Step 2:建立HTTP要求取樣功能來執行登入行為。
Step 3:接著依據登入網站的Web API規格進行以下設定:
1. 給定HTTP要求的方法及路徑
2. 給定POST到伺服器的資料,其中 ${UserId} 及 ${Password} 是從 data_500.csv 取出的帳密資料。
Step 4:接著在此HTTP要求中建立HTTP標頭管理員來設置HTTP標頭。
1. 按新增鈕並設定 content type 為 json 格式。
IV. 執行測試-建立
執行測試的方式除了點選上方工具列外,最快的方式就是使用快捷鍵 Ctrl + E (清除統計資料) 及 Ctrl + R (開始測試) 來執行測試;另外,我們可以透過新增 Summary Report及 檢視結果樹 兩個功能來觀看執行的結果。
執行測試後,在檢視結果樹中可以看到每一筆 HTTP 要求的細部資料:
1. 每次 HTTP 要求清單
2. POST 資料確實取自 data_500.csv 檔案中的帳號密碼
3. 正確套用我們所設定的 HTTP 標頭
4. 在實際大量測試時,可設定【只記錄錯誤】模式,僅保留錯誤的 HTTP 要求供查驗
在Summary Report中可以看到各HTTP要求的回應時間統計資訊 (時間單位為毫秒)。
5. 參考來源
l JMeter壓力測試入門教程[圖文]:https://www.itread01.com/content/1546532113.html
l 使用JMeter 對Web伺服器壓力測試:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/553469/