如何生成1000个用户token进行压力测试

如何生成1000个用户token进行压力测试,第1张

文章目录
  • 前言
  • 一、确定需求
  • 二、编写代码
    • 1.引入库
    • 2.编写代码
  • 总结


前言

最近在学黑马程序员的redis课程中,老师要模拟进行1000个用户同时秒杀优惠卷的压力测试,但是本菜鸟完全不知道如何生成1000个用户的token,一直在想这个脚本该在哪里写,又该怎么写。然后灵光一现!,之前有学过springboot测试的内容,那么我们可以用mockMvc模拟发送http请求开达到我们的目的。


一、确定需求

使用的是jmeter作为测试工具,设置如图

token.txt就是1000行uuid
大概是这样,这里只有10行,我们需要创造1000行token

jmeter会读取这文件的每一行字符赋值给请求头中,这样就能模拟1000个用户进行秒杀优惠卷的迸发 *** 作

二、编写代码 1.引入库

将这个工具包导入,用于将对象和json格式之间的转换,很方便好用

		//工具包
		<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.17</version>
        </dependency>
        //springboot测试环境
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
2.编写代码

代码如下:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
public class UserToken {
    @Autowired
    MockMvc mockMvc;
    @Resource
    IUserService userService;


    @Test
    public void getToken() throws Exception {
        String phone = "";
        String code = "";
		//注意!这里的绝对路径设置为自己想要的地方
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("e:\dyyhub\token.txt"));
		//先模拟10个用户的登录
        for (int i = 10; i < 20; i++) {
            //通过id从数据库中获得user对象
            User user = userService.getById(i);
            phone = user.getPhone();
            //创建虚拟请求,模拟通过手机号,发送验证码
            ResultActions perform1 = mockMvc.perform(MockMvcRequestBuilders
                    .post("/user/code?phone=" + phone));
            //获得Response的body信息
            String resultJson1 = perform1.andReturn().getResponse().getContentAsString();
            //将结果转换为result对象
            Result result = JSONUtil.toBean(resultJson1, Result.class);
            //获得验证码
            code = result.getData().toString();
            //创建登录表单
            LoginFormDTO loginFormDTO = new LoginFormDTO();
            loginFormDTO.setCode(code);
            loginFormDTO.setPhone(phone);
            //将表单转换为json格式的字符串
            String loginFormDtoJson = JSONUtil.toJsonStr(loginFormDTO);
            //创建虚拟请求,模拟登录
            ResultActions perform2 = mockMvc.perform(MockMvcRequestBuilders.post("/user/login")
                    //设置contentType表示为json信息
                    .contentType(MediaType.APPLICATION_JSON)
                    //放入json对象
                    .content(loginFormDtoJson));

            String resultJson2 = perform2.andReturn().getResponse().getContentAsString();
            Result result2 = JSONUtil.toBean(resultJson2, Result.class);
            //获得token
            String token = result2.getData().toString();
            //写入
            osw.write(token+"\n");
        }
        //关闭输出流
        osw.close();
    }
}

总结

这个项目是前后端分离的项目,所以不管是发送还是接受的对象都是Result对象,可以直接通过cn.hutool.json.JSONUtil 这个对象的toBean方法来转换,非常方便,然后获取Result中的data数据写入循环1000次就大功告成啦!

如果有任何错误或者不妥的地方欢迎大家指导~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/921757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存