欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析Jmeter多用戶token使用問題

 更新時(shí)間:2021年10月18日 08:33:47   作者:Github  
這篇文章主要介紹了Jmeter多用戶token使用問題,通過具體的例子給大家介紹了Jmeter多用戶token使用場(chǎng)景接口分析,需要的朋友可以參考下

背景

在測(cè)試的時(shí)候,經(jīng)常會(huì)有模擬用戶登錄,拿到用戶 token 后再去請(qǐng)求接口的場(chǎng)景。

這個(gè)模擬用戶登錄就會(huì)分為兩種,一種是單用戶,另一種是多用戶。

日常自動(dòng)化測(cè)試的時(shí)候可能一個(gè)用戶對(duì)應(yīng) n 個(gè)用例就可以滿足大多數(shù)場(chǎng)景;

如果是在壓力測(cè)試的場(chǎng)景下面,可能就會(huì)略顯單調(diào),也無法滿足一些真實(shí)業(yè)務(wù)場(chǎng)景。

對(duì)于單用戶的情況下,和我們常規(guī)的多接口有依賴的測(cè)試其實(shí)沒什么太大的差別。

所以這里主要講的是多用戶產(chǎn)生多個(gè) token 的情況。

下面來看一個(gè)具體的例子來了解一下。

場(chǎng)景接口

在這里的話,只有兩個(gè)接口,一個(gè)是登錄拿 token,一個(gè)是有 token 才能請(qǐng)求的。

下面是各接口定義

登錄接口

請(qǐng)求:

POST http://localhost:8532/MultiToken/Login
Content-Type: application/json

{
	"UserName":"catcherwong-1",
	"Password":"123"
}

響應(yīng):

{"code":0,"msg":"ok","data":"catcherwong-1-token"}

業(yè)務(wù)接口

請(qǐng)求:

GET http://localhost:8532//MultiToken/do?account=xxx
Content-Type: application/json
token: catcherwong-1-token

響應(yīng):

{"code":0,"msg":"ok","data":"catcherwong-1-token"}

登錄接口處理

登錄接口屬于預(yù)請(qǐng)求,所以我們一般會(huì)選擇把它放在 setUp 線程組里面。

我們需要準(zhǔn)備一個(gè) csv 文件,里面用來存放需要登錄的用戶名和密碼。

接下來就是把這個(gè) csv 配置好,定義了兩個(gè)變量 accountpwd

然后是把登錄的 HTTP 請(qǐng)求配置好:

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

到這里就要開始注意了?。。?!

由于我們會(huì)有多個(gè)用戶進(jìn)行登錄,但是這一個(gè)提取操作每次都會(huì)把 token 賦值到 access_token 這個(gè)變量上面,是覆蓋的操作。

換句話就是說,每登錄一個(gè)用戶,這個(gè) access_token 的值就會(huì)是最后一個(gè)登錄的用戶的 token,。

換個(gè)思路,每次它會(huì)覆蓋,那么把這些 token 存到一個(gè)地方,然后業(yè)務(wù)接口去這個(gè)地方取就可以了。

如果沒有用戶登錄這一步,給的直接是 token,那么我們也是直接把這個(gè) token 放到 csv 文件里面,然后讓 jmeter 去循環(huán)使用里面的 token。

那么要做的東西其實(shí)就很確定了,就是在提取到 token 后,把這個(gè) token 寫到一個(gè) csv 文件里面。

要想做到這一步,需要在登錄接口后面加一個(gè)后置的處理。

String p1 = System.getProperty("user.dir");
String p2 = System.getProperty("file.separator");
String p3 = "user_token.csv";
String path = p1 + p2 + p3;

FileWriter fileWriter = new FileWriter(new File(path), true);
BufferedWriter writer = new BufferedWriter(fileWriter);
writer.append(vars.get("accout")+","+vars.get("access_token")+"\n");
writer.close();
fileWriter.close();

這段代碼的意思是,把用戶名和提取到的 access_token 寫進(jìn)到 csv 文件里面,這個(gè)文件在的位置是 jmeter 的目錄。

這里是對(duì)文件路徑做了處理,可以適配所有操作系統(tǒng)的。不會(huì)出現(xiàn)說指定了一個(gè) windows 系統(tǒng)的路徑,然后放到 linux 系統(tǒng)下面就跑不了了。

還有最重要的一個(gè)是,要修改 setUp 線程組的屬性,把循環(huán)次數(shù)改成 3 。因?yàn)榍懊娴?csv 文件里面有 3 個(gè)用戶,這樣它才會(huì)觸發(fā)三次登錄。

業(yè)務(wù)接口處理

業(yè)務(wù)接口要放到正常的線程組里面,獨(dú)立于 setUp 線程組。

前面提到,登錄后會(huì)有一個(gè) csv 文件,所以這里第一個(gè)要做的是把 csv 配置好。

上面的截圖用的是 ${__P(user.dir,)}${__P(file.separator,)}user_token.csv 這個(gè)文件路徑,這個(gè)在本地環(huán)境的 Jmeter 是可以通過的,不過在一些云服務(wù)上面是不行的,如阿里云 PTS 。

這里可以忽略前面的路徑,直接填寫 user_token.csv 即可,填這兩個(gè),得到的文件路徑是一樣的,一個(gè)是絕對(duì)路徑一個(gè)是相對(duì)路徑。

然后就是配置 HTTP 請(qǐng)求了

PS:不要忘記把請(qǐng)求頭也配置了,這里就不截圖了。

這里試跑兩次,可以發(fā)現(xiàn)業(yè)務(wù)請(qǐng)求的接口,它的 token 請(qǐng)求頭每次都是不一樣的,在交替變化,這個(gè)是符合預(yù)期的。

但是會(huì)發(fā)現(xiàn)生成 csv 文件里面的數(shù)據(jù)會(huì)重復(fù),沒有自動(dòng)清理掉上一次產(chǎn)生的數(shù)據(jù)。如果上一次產(chǎn)生的 token 過期了,那么用了這些過期的 token === 涼涼。

所以這里還有必要加一步 tearDown 線程組,每次跑完腳本把這個(gè)文件刪除掉。

String p1 = System.getProperty("user.dir");
String p2 = System.getProperty("file.separator");
String p3 = "user_token.csv";
String path = p1 + p2 + p3;

log.info("準(zhǔn)備刪除文件:" + path);

File file = new File(path);
if (!file.exists()) {
  log.info("刪除文件失敗:" + path + "不存在!");
} else {
  file.delete();
}

這個(gè)時(shí)候跑腳本就基本沒什么問題了。

寫在最后

多用戶獲取多 token 再使用的場(chǎng)景其實(shí)挺多的,這篇內(nèi)容簡單講解了老黃正在用的一個(gè)方案,如果您有更好的建議,也歡迎一起溝通交流。

老黃把 JMeter 系列的內(nèi)容都放在 github 了,方便大家查閱和測(cè)試。

https://github.com/catcherwong/JmeterSample

到此這篇關(guān)于聊一聊Jmeter多用戶token使用問題的文章就介紹到這了,更多相關(guān)Jmeter多用戶token使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法

    java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法

    這篇文章主要為大家詳細(xì)介紹了java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • springboot接受前端請(qǐng)求的方法實(shí)現(xiàn)

    springboot接受前端請(qǐng)求的方法實(shí)現(xiàn)

    本文主要介紹了springboot接受前端請(qǐng)求的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • spring緩存自定義resolver的方法

    spring緩存自定義resolver的方法

    這篇文章主要為大家詳細(xì)介紹了spring緩存自定義resolver的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Spring動(dòng)態(tài)管理定時(shí)任務(wù)之ThreadPoolTaskScheduler解讀

    Spring動(dòng)態(tài)管理定時(shí)任務(wù)之ThreadPoolTaskScheduler解讀

    這篇文章主要介紹了Spring動(dòng)態(tài)管理定時(shí)任務(wù)之ThreadPoolTaskScheduler解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Java常問面試內(nèi)容--數(shù)組、聲明、初始化、冒泡、多維數(shù)組、稀疏數(shù)組

    Java常問面試內(nèi)容--數(shù)組、聲明、初始化、冒泡、多維數(shù)組、稀疏數(shù)組

    這篇文章主要介紹了Java多線程面試題(面試官常問),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Java8 如何正確高效的使用并行流

    Java8 如何正確高效的使用并行流

    這篇文章主要介紹了Java8 如何正確高效的使用并行流,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java8版本base64加密解密的實(shí)例

    java8版本base64加密解密的實(shí)例

    下面小編就為大家分享一篇java8版本base64加密解密的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 詳解servlet的url-pattern匹配規(guī)則

    詳解servlet的url-pattern匹配規(guī)則

    本篇文章主要介紹了=servlet的url-pattern匹配規(guī)則,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Python爬蟲之爬取2020女團(tuán)選秀數(shù)據(jù)

    Python爬蟲之爬取2020女團(tuán)選秀數(shù)據(jù)

    本文將對(duì)比《青春有你2》和《創(chuàng)造營2020》全體小姐姐,鑒于兩個(gè)節(jié)目的數(shù)據(jù)采集和處理過程基本相似,在使用Python做數(shù)據(jù)爬蟲采集的章節(jié)中將只以《創(chuàng)造營2020》為例做詳細(xì)介紹。感興趣的同學(xué)可以照貓畫虎去實(shí)操一下《青春有你2》的數(shù)據(jù)爬蟲采集,需要的朋友可以參考下
    2021-04-04
  • SpringMVC如何把后臺(tái)文件打印到前臺(tái)

    SpringMVC如何把后臺(tái)文件打印到前臺(tái)

    這篇文章主要介紹了SpringMVC如何把后臺(tái)文件打印到前臺(tái),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論