黑马点评-使用jmeter解决生成1000个测试用户token的问题【保姆级教程】
前言:
黑马点评的课程视频并没有讲如何生成1000个测试用户和相应的token,而这又是测试并发问题所必要的,导致我们很难亲手去验证结果。所以在这篇文章我讲下如何去解决这个问题,虽然过程比较曲折(没啥测试基础),但好在最后还是顺利解决了。
目录
1.创建1000个测试用户
1.1 创建测试路径
首先我们在Controller包下创建一个新类UserControllerTest(请原谅我的不正规):
这个接口用于直接调用usermapper生成相应用户数据

下附代码:
@RestController
@RequestMapping("/userTest")
@Slf4j
public class UserControllerTest {
@Resource
private IUserService userService;
@PostMapping("/resigiter")
public Result resigiter(@RequestBody User user) {
userService.createUserWithPhone(user.getPhone());
return Result.ok();
}
}
在IUserService类中生成相应接口

这个方法本身在UserServiceimpl类下就有,不用自己实现,加个@override重写注释,把private改为public就可以拿来用了。

最后记得要排除在loginInterceptor拦截器之外

1.2 jmeter生成相应用户
我使用的1000线程在300s内启动生成,电脑不好的可以100个线程,循环10次生成

相应的路径,请求方式,IP端口等填好(记得不要填错)

下面的请求参数选择Body Data,写好json式子:
它的意思是生成139开头的11位随机数字
{
"phone": "139${__Random(10000000,99999999,)}"
}
最后,请求头加上就可以测试了。
name:Content-Type ,Value:application/json

测试完成没问题可以查询数据库。
数据库直接查询可能显示不出来,显示不出来的使用分页查询

成功的生成了1000个用户数据

2. 使用这1000个测试用户生成相应的token
2.1 修改Java代码
给UserServiceimpl类中login方法,关于验证码校验的功能去掉

注释完就可以测试下,随便输入个验证码,看是否登录成功

可以看到我随便输入的验证码登录成功了

2.2 导出tb_user表的csv文件
导出tb_user表的csv文件

将其命名为tb_user.csv文件,记得只留手机号一行数据,并且phone字段也要去掉,只留数据

2.3 使用jmeter生成
打开jmeter
因为要生成1000个token,我就设了100组线程,分10次循环,时间方面给的是100s

在thread group下创建一个CSV Data Config

其中filename写你的那个csv文件路径(后面browse选就行)
file encording选UTF-8
Vairable Names : 填写phone
其他的保持默认

创建http请求
路径啥的配好(/user/login)

选择Body Data写好下面的json式子
因为验证码写什么都行,我们这固定写成111了
{
"phone" : "${phone}",
"code" : "111"
}
请求头记得要带上

接着在http请求下创建一个JSON Extractor
这边选项一定要选Main sample only,我就是这在卡了两个小时
variable写啥都行(跟后面代码对的上就行,我写的auth_token)
然后因为返回结果是这种格式的:
"success":true,"data":"c13d39a2..."}
所以在JSON path这我们写$.data
(这个不能乱写)

然后在http请求下创建一个BaseShell PostProcessor

写好如下代码,auth_token要跟前面对上

下附代码:
// 读取变量(如果不存在,默认值设为 "NULL")
String phone = vars.get("phone") != null ? vars.get("phone") : "NULL";
String token = vars.get("auth_token") != null ? vars.get("auth_token") : "NULL";
// 确保目录存在
new File("D:/JMeter_Results").mkdirs();
// 写入 CSV 文件
try {
FileWriter fw = new FileWriter("D:/JMeter_Results/tokens_audit.csv", true);
fw.write(phone + "," + token + "\n");
fw.close();
log.info("写入成功: phone=" + phone + ", token=" + token);
} catch (Exception e) {
log.error("写入失败: " + e.getMessage());
}
这两个东西就不用多说了,创建好

另外说一点:
redis方面,如果跟我一样用的是这玩意的话(ARDM),要更改下设置,他默认只会显示最多500个字段

Load number改为1000,点击ok就行了

2.4 测试结果
运行jmeter,
完毕后可以看到在新生成的tokens_audit文件中,有两行数据,一行是phone,一行是token

redis中也储存了对应的数据

这边建议在运行前可以先拿一个线程测试下(循环别勾)
如果生成的文件有相应的数据的话,在正式进行1000个用户测试也不迟

如果有误,在jmeter.log文件中会生成错误日志,可以去看看是啥问题。

最后:
今天的分享就到这里。如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!(๑`・ᴗ・´๑)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)