JMeter java模擬多使用者高併發請求測試(json,form表單)
1.情景展示
在實際開發過程中,需要進行測試的時候,往往需要進行壓力測試,或者高併發情況下,同時對一張表資料進行修改、讀取操作,程式會不會出現多個使用者取出的資料一致,或者修改次數與實際請求數不一致等問題。
2.分析
如果在專案中寫多執行緒模擬併發請求,並不是很好,還需要自己寫程式碼,來回修修改改;
有一個工具就可以很好的模擬出高併發請求,供我們直接使用:JMeter,開源、免費;
使用前提:JAVA執行環境
3.JMeter下載及安裝
下載
下載地址見文末推薦。
這裡需要注意的是:
點選“Download Releases”,出現的當前永遠最新版本,紅框裡會標註:當前版本執行的java最低版本;
Linux系統下載*.tgz檔案,windows系統下載*.zip檔案;
至於想要下載歷史版本,不知道在哪裡藏著。
安裝
下載成功後,解壓到想要存放的位置,比如:D盤
和tomcat一樣,只要你配置了JAVA_HOME環境變數,它就能執行(只要java版本號>=JMeter的最低要求,啟動就不存在閃退的情況)。
雙擊執行jmeter.bat檔案即可。
此時,會啟動兩個程式;
使用java編寫的圖形介面
這倆是同一個程式,關閉其中任何一個,另一個也會跟著關閉。
下面,切入正題。
4.模擬多使用者高併發請求(json請求)
第一步:建立執行緒組;
選中TestPlan,右鍵,Add,新增執行緒組。
設定執行緒組引數。
這裡配置為:10個執行緒,同時啟動,迴圈1次。
第二步:新增http請求預設值;
新增http請求預設值,所有的請求都會使用設定的預設值;
設定協議為http
,IP為localhost
,埠為8080,專案訪問路徑(請求上下文)設定為/,請求字符集設定為UTF-8;
大家根據自己的實際需要進行配置,嫌費事的可以是不新增http預設請求配置,在請求單獨配置也是沒有問題的。
第三步:配置請求頭
設定請求頭為application/json,目的是:告訴伺服器,我傳送的json資料。
Content-Type:application/json
以上資訊複製到剪貼簿,選擇:Add From Clipboard,即可自動將以上內容填充進去。
也可以自己手動配置,點選底部“Add”,會增加一欄,雙擊進去,輸入內容即可。
需要說明的是:如果想要傳送JSON請求
這一步不能省略,否則,伺服器會將請求資料當做"text/plain"來識別。
第四步:新增Http請求
必須選中“Thread Group”,才能新增“HTTP Request”
我這裡需要將請求方式改為POST,請求地址,字符集;
選擇“Body Data”,新增即將請求的JSON資料。
第五步:新增監聽器;
這裡新增三種:聚合報告、圖形結果、用表格檢視結果,區別在於結果展現形式不同。
第六步:執行,並檢視結果;
紅框裡,是我們所建立的所有配置;
點選選單欄的綠三角,就會立刻傳送請求;
這個提示的意思是:在執行(傳送請求)之前,是否進行儲存的友好提示;
選擇No,是不影響請求的執行噠。
執行結束後,看三個監聽器的返回結果。
一般情況下,我們還會檢視伺服器的返回結果,所以,再新增一個監聽器:結果樹。
切換到結果樹檢視,選中返回型別為JSON,選中其中一個請求,Response Body裡面將會是格式化後的JSON資料(當然了,這是要取決於伺服器返回給咱的是什麼格式的資料)
這裡接收到的中文是亂碼,也不知道是什麼情況。
第七步:清空監聽記錄,重新請求;
再次請求時,這些監聽器的記錄是一直疊加的;
如果想要清空這些監聽器的記錄的話,點選“clear”,只清空當前選中的監聽器;點選“Clear All”會清空所有新增的監聽記錄。
這種方式更快捷
注意:
到此為止,我們只是模擬了一個使用者,而不是多個使用者,換言之,其實是同一個使用者的併發請求。
第八步:多使用者併發JSON請求;
同樣地,選中“Thread Group”,新建一個http請求
紅框裡,可以換個名字,方便區分;
其它配置基本一樣,除了請求的json資料改一下就可以啦。
清空記錄,傳送請求,檢視結果
此時,每個請求都併發了10次,相當於每個使用者同時傳送了10條請求。
如果想要模擬10個不同的使用者併發,我們可以建立10個HttpRequest,確保每個請求裡面的資料都不一樣,執行緒修改成:1
這樣,就確保了10個使用者併發請求,且每個使用者只請求1次。
第九步:儲存當前配置檔案。
按快捷鍵:Ctrl+S
4.模擬多使用者高併發請求(form表單請求)
第一步:建立執行緒組;
同上
第二步:新增http請求預設值;
同上
第三步:新增資料來源;
新建一個文字檔案,名字隨意,比如:config.txt;
目的:該檔案用於配置使用者資訊(其實就是請求引數);
裡面資料每行有兩個值,userId
和userToken
,中間用逗號隔開,我這裡設定了兩個使用者的資訊。
第三步:新建Csv Data Set Config設定;
目的:引用上面的資料來源檔案。
Csv Data Set Config
中引用配置檔案config.txt
,並定義變數名為userId
和userToken(名稱隨意,只要一會和下面保持一致就可以啦)
;
第四步:選中“Thread Group”,新建一個http請求;
同上
在請求中引用配置檔案中的變數:
在填寫引數Value
的地方不要將值寫死,而是寫為${變數名}
這種格式,我這裡想要引用配置檔案中userToken
的值,所以寫為${userToken}
。
至此,配置完畢,我們不用再像併發json那樣配置多個請求,才能模擬出不同使用者的併發。因為我們在配置檔案config.txt,幾行記錄就代表幾個使用者。
第五步:測試
方法同上。
寫在最後
哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!