2021-05-12 14:32:11
一文弄懂使用Jmeter來進行效能測試
該文章是基於上一次文章的 軟體測試漫談(web測試,自動化測試,Jmeter) 的續篇, 主要是詳細講解 Jmeter 的入門教學。
因為上次的文章只是簡單地講解了 Jmeter 的使用和一些概念,所以很多初學者像按照原來的文章操作 Jmeter 進行測試是比較麻煩的,所有才有了這篇後續,以幫助開發者能快速使用 Jmeter 來進行測試。如果還沒看過之前那個文章,建議先看一下,學習一下Jmeter的基本概念,以便熟悉該文章操作的一些概念。該文章基於 Jmeter 版本 5.1.1 和 Windows 10。
測試需求
模擬20個 谷歌瀏覽器型別 使用者 同時 存取 http://www.baidu.com/ 和 https://www.csdn.net/api/articles (該連結是獲取 csdn 上的文章,如果正確會返回狀態 "status": "true",) 在負載達到30 QPS 時的平均響應時間 和 結果準確度。
操作步驟
- 在 Jmeter 官網上下載 Jmeter 安裝包,下載地址: https://apache.osuosl.org//jmeter/binaries/apache-jmeter-5.2.1.zip,需要先安裝了 Jdk ,解壓 開啟檔案
apache-jmeter-5.1.1binjmeter.bat
簡單設定請求
- 在測試計劃中選擇新建執行緒組,重新命名執行緒組為20個模擬使用者執行緒組。
在 Number of Threads 欄 填寫 20 ,設定 執行緒數為 20。在 Loop Count 欄填寫 10000,設定 迴圈請求10000 次。
- 線上程組上右鍵,選擇新增 Http 請求的取樣器
重新命名該取樣器為請求百度地址,在Server Name or IP
欄填寫www.baidu.com
,Prot Number
欄填寫80
埠,如果是https 協定,則填寫443
埠。
3. 再線上程組上填寫 HTTP 請求取樣器,並按照如下圖來進行設定和重新命名為 請求 csdn 文章
。
4. 設定結果檢視 ,線上程組右鍵,新增結果樹
重新命名為 結果檢視
,然後點選 上方的 綠色的執行按鈕,即可,檢視到傳送的請求 HTTP 請求。點選結果樹中的,任意一個請求可以看到請求的請求頭,請求時間,響應頭,響應時間等具體資訊。
然後,我們可以通過新增 總報表 的監聽器 來檢視 請求的總體傳送情況
一些特定引數設定
- 設定吞吐量/QPS
Jmeter 提供了一個很有用的定時器,叫做 Constant Throughput Timer (常數吞吐量定時器),該定時器可以很方便地控制給定的取樣器傳送請求的吞吐量。
線上程組上右鍵新建吞吐量定時器
在 Target throughput( in smples per minute )(每分鐘的目標吞吐量): 實際填寫的數值為:60 * QPS ,所以這裡我們填寫1200,然後 Calculate Through based on 選擇 All active threads 。
注意
:這裡計算的吞吐量有時候並不準確,一般進行測試的時候,我們會選擇提高一些吞吐量的值以達到實際要求的 QPS
- 設定請求頭的引數,設定瀏覽器型別
對於某些請求,有可能我們需要設定請求的請求頭的資訊,例如:瀏覽器型別,鑑權資訊 token 等,這時候,我們可以通過新增 http 請求頭的設定元件來完成。
新增設定元件之後,我們新增上瀏覽器的請求頭資訊.
這時候再點選執行,可以看得到傳送的請求中,請求頭包含了我們設定的資訊:
- 判斷返回結果的是否成功
預設 Jmeter 是根據響應碼來判斷結果是否請求請求的,非200 的判斷為不成功,如果我們想根據響應內容判斷,則需要新增斷言器,來自己判斷內容包含哪些字元等,一般我們新增響應資訊的斷言器,即可。
我們加上如果請求響應資訊中包含了字元 {"status":"true
我們則判斷該請求成功,否則失敗,我們可以這樣來設定斷言。
如果我們想單單針對某個請求來進行斷言,我們可以,將斷言放到某個請求裡面,這樣它就會只判斷該請求。這裡我們只針對 獲取 csdn的文章的請求來斷言。
最終的結果
我們完成以上設定之後,點選執行,等待結果執行穩定好,檢視 總報告情況 可以得到以下 截圖
可以看到,再QPS 約為 5 的情況下,兩個請求的總體的情況平均響應時間為 2.371 秒,當前總共傳送了 733個請求,錯誤率 為 3.14%(暫定的時候,後面幾個請求會斷開,也算入了錯誤率的)。由於這兩個請求的響應時間都比較慢和定義的使用者數只為20個,所以QPS 比較難達到20 . 讀者後面可以自己提高 執行緒數 或者替換請求地址來測試看看。
注意事項
- 一般而已如果需要進行很高的QPS 的效能測試,不要使用介面來測試,設定完成後,儲存jmx 檔案之後,再使用命令列來測試會更好,因為介面執行的話,會佔用很大資源,實際傳送的請求可能得不到自己想要的QPS。介面執行命令,啟動 jmeter 的時候就有提示。
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
參考資源
相關文章