Jmerter用户登录压力测试
背景 :在测试的时候,经常会有模拟用户登录,拿到用户 token 后再去请求接口的场景。 这个模拟用户登录就会分为两种,一种是单用户,另一种是多用户。 日常自动化测试的时候可能一个用户对应 n 个用例就可以满足大多数场景; 如果是在压力测试的场景下面,可能就会略显单调,也无法满足一些真实业务场景。 对于单用户的情况下,和我们常规的多接口有依赖的测试其实没什么太大的差别。 所以这里主要讲的是多用户产生多个 token 的情况。
登录接口处理: 进行jmeter 开发测试
登录接口属于预请求,所以我们一般会选择把它放在 setUp 线程组里面。
我们需要准备一个 csv 文件,里面用来存放需要登录的登录账号,验证码登录的情况下登录,验证码验证代码块先注释掉
接下来就是把这个 csv 配置好,定义了变量userTel , 这个变量根据顺序取值
开始jmeter 配置
- 先看一个总体配置
- 进行开始配置 --> 创建线程组
- 创建cvs 数据配置
- 数据配置成功后,然后需要增加http 请求配置,用来操作登录请求
- 添加结果树,该结果树是用来查看运行后的返回结果
- !
- ](https://img-blog.csdnimg.cn/2359a1a8abbd42fc91d69ac0cf7aa244.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_20,text_Q1NETiBAamF2YSDlh68=,size_20,color_FFFFFF,t_70,g_se,x_16)
- 运行成功后,就可以查看结果;在有结果的情况下,目前我们就可以想到运行完后的后置事件,需要提取数据,以及将数据保存到本地来存储,供后面的接口使用, 创建post请求后置Json Extractor 事件,用来json解析数据,然后将该获取的token值变量转为 access-token
7 .数据赋值成功后,则需要将改token 存储到本地的csv 中
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")+"\n");
writer.close();
fileWriter.close();
这段代码的意思是,把用户名和提取到的 access-token 写进到 csv 文件里面,这个文件在的位置是 jmeter 的目录。
这里是对文件路径做了处理,可以适配所有操作系统的。不会出现说指定了一个 windows 系统的路径,然后放到 linux 系统下面就跑不了了。
还有最重要的一个是,要修改 setUp 线程组的属性,把循环次数改成 3 。因为前面的 csv 文件里面有 3 个用户,这样它才会触发三次登录。