天天看點

聊一聊Jmeter多使用者token使用問題

聊一聊Jmeter多使用者token使用問題

在測試的時候,經常會有模拟使用者登入,拿到使用者 token 後再去請求接口的場景。

這個模拟使用者登入就會分為兩種,一種是單使用者,另一種是多使用者。

日常自動化測試的時候可能一個使用者對應 n 個用例就可以滿足大多數場景;

如果是在壓力測試的場景下面,可能就會略顯單調,也無法滿足一些真實業務場景。

對于單使用者的情況下,和我們正常的多接口有依賴的測試其實沒什麼太大的差别。

是以這裡主要講的是多使用者産生多個 token 的情況。

下面來看一個具體的例子來了解一下。

在這裡的話,隻有兩個接口,一個是登入拿 token,一個是有 token 才能請求的。

下面是各接口定義

請求:

響應:

登入接口屬于預請求,是以我們一般會選擇把它放在 setUp 線程組裡面。

我們需要準備一個 csv 檔案,裡面用來存放需要登入的使用者名和密碼。

聊一聊Jmeter多使用者token使用問題

接下來就是把這個 csv 配置好,定義了兩個變量 <code>account</code> 和 <code>pwd</code>

聊一聊Jmeter多使用者token使用問題

然後是把登入的 HTTP 請求配置好:

聊一聊Jmeter多使用者token使用問題

由于後面要用到 token,是以要先把 token 提取出來,這裡用的是 JSON Extractor。

聊一聊Jmeter多使用者token使用問題

到這裡就要開始注意了!!!!

由于我們會有多個使用者進行登入,但是這一個提取操作每次都會把 token 指派到 access_token 這個變量上面,是覆寫的操作。

換句話就是說,每登入一個使用者,這個 access_token 的值就會是最後一個登入的使用者的 token,。

換個思路,每次它會覆寫,那麼把這些 token 存到一個地方,然後業務接口去這個地方取就可以了。

如果沒有使用者登入這一步,給的直接是 token,那麼我們也是直接把這個 token 放到 csv 檔案裡面,然後讓 jmeter 去循環使用裡面的 token。

那麼要做的東西其實就很确定了,就是在提取到 token 後,把這個 token 寫到一個 csv 檔案裡面。

要想做到這一步,需要在登入接口後面加一個後置的處理。

聊一聊Jmeter多使用者token使用問題

這段代碼的意思是,把使用者名和提取到的 access_token 寫進到 csv 檔案裡面,這個檔案在的位置是 jmeter 的目錄。

這裡是對檔案路徑做了處理,可以适配所有作業系統的。不會出現說指定了一個 windows 系統的路徑,然後放到 linux 系統下面就跑不了了。

還有最重要的一個是,要修改 setUp 線程組的屬性,把循環次數改成 3 。因為前面的 csv 檔案裡面有 3 個使用者,這樣它才會觸發三次登入。

業務接口要放到正常的線程組裡面,獨立于 setUp 線程組。

前面提到,登入後會有一個 csv 檔案,是以這裡第一個要做的是把 csv 配置好。

聊一聊Jmeter多使用者token使用問題

上面的截圖用的是 <code>${__P(user.dir,)}${__P(file.separator,)}user_token.csv</code> 這個檔案路徑,這個在本地環境的 Jmeter 是可以通過的,不過在一些雲服務上面是不行的,如阿裡雲 PTS 。

這裡可以忽略前面的路徑,直接填寫 <code>user_token.csv</code> 即可,填這兩個,得到的檔案路徑是一樣的,一個是絕對路徑一個是相對路徑。

然後就是配置 HTTP 請求了

聊一聊Jmeter多使用者token使用問題

PS:不要忘記把請求頭也配置了,這裡就不截圖了。

這裡試跑兩次,可以發現業務請求的接口,它的 token 請求頭每次都是不一樣的,在交替變化,這個是符合預期的。

但是會發現生成 csv 檔案裡面的資料會重複,沒有自動清理掉上一次産生的資料。如果上一次産生的 token 過期了,那麼用了這些過期的 token === 涼涼。

聊一聊Jmeter多使用者token使用問題

是以這裡還有必要加一步 tearDown 線程組,每次跑完腳本把這個檔案删除掉。

聊一聊Jmeter多使用者token使用問題

這個時候跑腳本就基本沒什麼問題了。

聊一聊Jmeter多使用者token使用問題

多使用者擷取多 token 再使用的場景其實挺多的,這篇内容簡單講解了老黃正在用的一個方案,如果您有更好的建議,也歡迎一起溝通交流。

老黃把 JMeter 系列的内容都放在 github 了,友善大家查閱和測試。

https://github.com/catcherwong/JmeterSample

聊一聊Jmeter多使用者token使用問題

如果您認為這篇文章還不錯或者有所收獲,可以點選右下角的【推薦】按鈕,因為你的支援是我繼續寫作,分享的最大動力!

作者:Catcher Wong ( 黃文清 )

來源:http://catcher1994.cnblogs.com/

聲明:

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果您發現部落格中出現了錯誤,或者有更好的建議、想法,請及時與我聯系!!如果想找我私下交流,可以私信或者加我微信。

繼續閱讀