一文弄懂使用Jmeter來進行性能測試
- 2021 年 2 月 7 日
- 筆記
該文章是基於上一次文章的 軟體測試漫談(web測試,自動化測試,Jmeter) 的續篇, 主要是詳細講解 Jmeter 的入門教程。
因為上次的文章只是簡單地講解了 Jmeter 的使用和一些概念,所以很多初學者像按照原來的文章操作 Jmeter 進行測試是比較麻煩的,所有才有了這篇後續,以幫助開發者能快速使用 Jmeter 來進行測試。如果還沒看過之前那個文章,建議先看一下,學習一下Jmeter的基本概念,以便熟悉該文章操作的一些概念。該文章基於 Jmeter 版本 5.1.1 和 Windows 10。
測試需求
模擬20個 Google瀏覽器類型 用戶 同時 訪問 //www.baidu.com/ 和 //www.csdn.net/api/articles (該鏈接是獲取 csdn 上的文章,如果正確會返回狀態 “status”: “true”,) 在負載達到30 QPS 時的平均響應時間 和 結果準確度。
操作步驟
- 在 Jmeter 官網上下載 Jmeter 安裝包,下載地址: //apache.osuosl.org//jmeter/binaries/apache-jmeter-5.2.1.zip,需要先安裝了 Jdk ,解壓 打開文件
apache-jmeter-5.1.1\bin\jmeter.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]