栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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


前言

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


一、确定需求

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

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

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

二、编写代码 1.引入库

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

		//工具包
		
            cn.hutool
            hutool-all
            5.7.17
        
        //springboot测试环境
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
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次就大功告成啦!

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号