一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺析Jmeter多用戶token使用問題

淺析Jmeter多用戶token使用問題

2022-02-21 13:26Github Java教程

這篇文章主要介紹了Jmeter多用戶token使用問題,通過具體的例子給大家介紹了Jmeter多用戶token使用場景接口分析,需要的朋友可以參考下

 

背景

在測試的時候,經(jīng)常會有模擬用戶登錄,拿到用戶 token 后再去請求接口的場景。

這個模擬用戶登錄就會分為兩種,一種是單用戶,另一種是多用戶。

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

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

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

所以這里主要講的是多用戶產生多個 token 的情況。

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

 

場景接口

在這里的話,只有兩個接口,一個是登錄拿 token,一個是有 token 才能請求的。

下面是各接口定義

 

登錄接口

請求:

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

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

響應:

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

 

業(yè)務接口

請求:

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

響應:

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

 

登錄接口處理

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

我們需要準備一個 csv 文件,里面用來存放需要登錄的用戶名和密碼。

淺析Jmeter多用戶token使用問題

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

淺析Jmeter多用戶token使用問題

然后是把登錄的 HTTP 請求配置好:

淺析Jmeter多用戶token使用問題

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

淺析Jmeter多用戶token使用問題

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

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

換句話就是說,每登錄一個用戶,這個 access_token 的值就會是最后一個登錄的用戶的 token,。

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

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

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

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

淺析Jmeter多用戶token使用問題

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")+"
");
writer.close();
fileWriter.close();

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

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

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

 

業(yè)務接口處理

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

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

淺析Jmeter多用戶token使用問題

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

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

然后就是配置 HTTP 請求了

淺析Jmeter多用戶token使用問題

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

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

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

淺析Jmeter多用戶token使用問題

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

淺析Jmeter多用戶token使用問題

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

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

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

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

淺析Jmeter多用戶token使用問題

 

寫在最后

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

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

https://github.com/catcherwong/JmeterSample

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

原文鏈接:https://www.cnblogs.com/catcher1994/p/15419072.html

延伸 · 閱讀

精彩推薦
  • Java教程IDEA版使用Java操作Redis數(shù)據(jù)庫的方法

    IDEA版使用Java操作Redis數(shù)據(jù)庫的方法

    這篇文章主要介紹了IDEA版使用Java操作Redis數(shù)據(jù)庫的方法,首先需要下載jedis.jar包,然后再工程中設置具體操作步驟跟隨小編一起學習下吧...

    一棵小白楊站在哨所旁8522021-08-07
  • Java教程詳解Java中類的加載順序

    詳解Java中類的加載順序

    Java中什么時候類加載,第一次需要使用類信息時加載。類加載的原則:延遲加載,能不加載就不加載。下面這篇文章主要介紹了Java中類的加載順序,需要的朋...

    刺客XIII5772020-07-25
  • Java教程Spring Boot下的Job定時任務

    Spring Boot下的Job定時任務

    編寫Job定時執(zhí)行任務十分有用,能解決很多問題,這次實習的項目里做了一下系統(tǒng)定時更新三方系統(tǒng)訂單狀態(tài)的功能,這里用到了Spring的定時任務使用的非常方...

    說話的方式簡單點丶5562020-10-21
  • Java教程MyBatis如何使用(二)

    MyBatis如何使用(二)

    這篇文章主要介紹了MyBatis如何使用(二)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下 ...

    迷茫中守候2582020-05-31
  • Java教程淺談SpringMVC中Interceptor和Filter區(qū)別

    淺談SpringMVC中Interceptor和Filter區(qū)別

    這篇文章主要介紹了淺談SpringMVC中Interceptor和Filter區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    rayallenbj10202021-07-28
  • Java教程java虛擬機指令dup詳解

    java虛擬機指令dup詳解

    這篇文章主要為大家詳細介紹了java虛擬機指令dup,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    CLAYJJ10632021-01-23
  • Java教程eclipse 聯(lián)想功能設置技巧

    eclipse 聯(lián)想功能設置技巧

    本文主要介紹了eclipse 聯(lián)想功能設置技巧的相關內容,還是比較不錯的,需要的朋友可以參考。...

    jerry_zhang40211732021-01-17
  • Java教程詳解SpringCloud mysql實現(xiàn)配置中心

    詳解SpringCloud mysql實現(xiàn)配置中心

    這篇文章主要介紹了詳解SpringCloud mysql實現(xiàn)配置中心,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    雨點的名字6202021-05-31
主站蜘蛛池模板: 美女班主任下面好爽好湿好紧 | 地址二地址三2021变更 | ysav67| aaa毛片在线 | 精品久久洲久久久久护士免费 | 国产精品成人一区二区1 | 99久久精品国内 | 亚洲福利二区 | 国产精品va在线观看不 | 吻戏辣妞范1000免费体验 | 色综合久久最新中文字幕 | 我和寂寞孕妇的性事 | 波多野结衣xxxxx在线播放 | 成人国产一区二区 | 免费看一级a一片毛片 | 夫妻性生活免费在线观看 | 激情六月丁香婷婷四房播 | 按摩师他揉我奶好爽捏我奶 | 欧美午夜视频一区二区三区 | 国产片自拍 | 亚洲精品高清中文字幕完整版 | 好逼365| 免费黄色片网站 | 耽美双性| 欧美成人aaaa免费高清 | 日本春菜花在线中文字幕 | 消息称老熟妇乱视频一区二区 | 日本aa大片在线播放免费看 | 福利视频久久 | 明星乱淫 | 国产香蕉97碰碰在线视频 | 91久久精品国产亚洲 | 色妞视频一级毛片 | 无码毛片内射白浆视频 | 70岁多老妇人特黄a级毛片 | 国产91精品久久久久久 | 夫妻性生活影院 | 亚洲黄视频在线观看 | 欧美作爱福利免费观看视频 | 精品视频99| 欧美一区二区三区成人看不卡 |