該文章是基於上一次文章的 軟件測試漫談(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.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]