有時候為了模擬更真實的場景,在項目中需要多用戶登錄操作,大致參考如下
jmx腳本:百度網盤鏈接
提取碼:0000
一: 單用戶登錄
先使用1個用戶登錄(先把1個請求調試通過)
- 發送一個登錄請求,線程數:1,時間:1,循環次數:1
- 啟動后查看返回結果,查看返回登錄成功后 OK
(為什么請求1次返回3個結果呢,這個項目對登錄接口做了重定向2次,既先使用get自動請求網站1次獲取sessionid)
再通過HTTP Cookie管理器自動獲取到sessionid進行登錄
-
設置多個線程數進行登錄(線程組設置-線程數:10,時間:1,循環次數:1),給登錄加一個斷言
-
執行后查看結果,有的請求會被擠下線,被擠出來的沒有對服務器造成任何壓力
這里涉及到多點登錄限制------淺談一下多點登錄和單點登錄的區別
多點登錄:同一賬號可以在不同終端同時登錄,同時收發信息
多點登錄原則:多點登錄限制(禁止用戶多點在線):一個端同一個賬號只能登錄一個實例,例如一個賬號在網站端登錄后,后一個人使用這個賬號在網站端登錄,前一個人會被擠下去并會收到通知“你已在別處登錄…”
單點登錄:指在同一帳號平臺下的多個應用系統中,用戶只需登錄一次,即可訪問所有相互信任的系統。簡而言之,多個系統,統一登陸。
最簡單的單點登錄實現方式,用cookie作為媒介存放用戶憑證。 用戶登錄系統之后,會返回一個加密的cookie,當用戶訪問子應用的時候會帶上這個cookie,授權以解密cookie并進行校驗,校驗通過后即可登錄當前用戶。
依豆瓣網站電影Top250為例:https://movie.douban.com/top250?start=
豆瓣旗下有:讀書、音樂、同城、閱讀、FM等等
簡單理解:就是如果登錄了豆瓣,如果還需要訪問子應用,就不需要再次使用賬號了,可以直接訪問
優化,單用戶請求過多會被擠下線,而且和想要的測試也不一樣,帳號提前在數據庫創建,然后使用CSV元件引如
二、多用戶登錄實現1
- 在當前線程組下添加CSV數據文件設置,文件名:你準備的txt帳號和密碼文件,文件編碼UTF-8,其他可默認
- 登錄接口引入CSV變量,然后線程組內的設置不變,繼續執行
- 查看多用戶請求結果,從斷言上看沒有報錯,就是全部10個帳號都登錄成功了
三、多用戶登錄實現2
-
既然項目是先獲取sessionid的,那么先請求一次,添加1個登錄前請求(主要是獲取返回的sessionid)
-
給登錄前接口加一個正則表達式(主要是來提取sessionid)
-
給登錄接口添加一個HTTP信息頭管理器,添加一個cookie參數
-
給登錄接口添加斷言,和上面一致
-
先跑1個請求,線程組和上面設置一樣,返回登錄成功的數據
跑多個賬戶登錄 -
添加一個CSV,設置和上面的一致
-
更改線程組:線程數10,時間1s,循環1
-
設置登錄參數變量
-
啟動查看結果,從01帳號到10帳號登錄成功
擴展: 模擬真實場景(1個用戶可以搜索N次),增加一個搜索請求
- 添加一個僅1次控制器,把登錄前和登錄接口加入到僅一次控制器
- 線程組設置: 線程數:2 時間:1s 循環:永遠, 持續時間:2s
- 搜索請求添加一個信息頭管理器
- 發送請求,查看結果(除了登錄前和登錄接口請求3次意外,其他的都是搜索請求,有可能是用戶1或用戶2或用戶3的搜索了很多次)