jmeter如何压测需要token认证的接口

一:场景

目前很多接口的业务场景是先登录才能访问,大部分接口使用的是token令牌的机制,
关于此类的接口如果要压测,必须要先进行登录,然后把登录返回的token携带到后
续的接口中,下面就介绍一下jmeter如何进行这些操作。

二:设置方法

2.1 实现思路
1.通过JSON提取器获取到token登录接口的token值
2.通过BeanSheel编写java脚本将JSON提取器捕获的值写入到token.csv文件中
3.手动加入token.csv的文件
4.后续压测使用token.csv的token值即可

此方法再每次重新生成token.csv文件的时候,需要将token.csv引入,生成好以后再加入。
2.2 登录接口返回值
{
    "resCode":"200",
    "resMsg":"操作成功!",
    "resData":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJteURhdGFLZXkiOnsidXNlcklkIjoiMDFhMWJkZTRkZWUxNDE5ODkxYjYzNDRiZDhiMGZjNzAiLCJhY3Rpdml0eUNvZGUiOiJIRF9USElSRDpLeER2VjZXRiJ9fQ.vpDfoO8Nvtt5ApKgrE_dH41PLkFw3ma0M5ZHhr0Klm4",
    "stackInfo":""
}
2.3 添加JSON提取器
Names of created variables:保存的变量名,后面使用${name}引用
JSON Path expressions:调试通过的json path表达式,是根据接口返回值来决定的,我这里是$.resData
Match No.(0 for Random):匹配数字(0代表随机,1代表第一个,-1代表所有)
Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”
Default Values:找不到时默认值

2.jpg
4.jpg

2.4 添加BeanShell后置处理程序
//${code}是在code.csv文件中设置的
log.info("code:" + "${code}");
//${resToken}是再JSON提取器中获取的
log.info("token:" + "${resToken}");

//自定义全局变量
String codeKeys = props.get("codeKeys");
//如果为空则初始化空字符串
if(codeKeys == null){
	codeKeys = "";
}

//判定是否已经添加过此code,如果已经添加则无需再添加
if(codeKeys.indexOf("${code}") < 0){
	codeKeys = codeKeys + "${code}" + ",";	
	props.put("codeKeys",codeKeys);

	//写入token.csv的文件
	FileWriter fstream = new FileWriter("D:/jmeterProgram/actminisite/20240704_token压测/token.csv",true);
	BufferedWriter out = new BufferedWriter(fstream);
	out.write("${resToken}");
	out.write("\r\n");
	out.close();
	fstream.close();
}

log.info("codeKeys:" + codeKeys);

3.jpg
3.jpg

2.5 添加token.csv
将2.4步骤中生成的token.csv加入到项目中

6.jpg

2.6 增加Header管理器

6.jpg

2.7 查看请求结果

6.jpg
6.jpg

2.8 清除token.csv以及全局变量
在实际压测中,我们可能生成的token有问题或者需要重新压测,当
我们已经生成过一份token.csv以后,如果在不重新打开的情况下,
需要手动去清除这些数据,所以加一个执行计划来清空数据

6.jpg

或者需要重新压测,当
我们已经生成过一份token.csv以后,如果在不重新打开的情况下,
需要手动去清除这些数据,所以加一个执行计划来清空数据

6.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老鬼M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值