JMeter——模拟多用户同时发送请求(三)

第四章 JMeter模拟多用户同时发送请求

1、一个简单的压力测试实战

现有一个http请求接口http://localhost:8080/goods/to_list, 要使用Jmeter对其进行压测,测试步骤如下:

a.新建一个线程组。

image.png

b. 设置线程组参数。这里配置为:10个线程,同时启动,循环一次。

image.png

c. 新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为localhost,端口为8080。

image.png

image.png

d. 添加要压测的http请求。

image.png
下图第一个红框内的协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可,这里填入/goods/to_list

image.png

e. 新增监听器,用于查看压测结果。这里添加三种:聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。

image.png

f. 点击运行按钮开始压测,并查看结果。

image.png

五、如何查看系统负载何性能瓶颈
服务器上执行以下命令:

top

如下图所示,可以看到系统负载load average情况,1分钟平均负载,5分钟平均负载,15分钟平均负载分别是1.58, 0.50, 0.23;同时可以看到最耗费资源的进程为mysql

image.png

2、如何创建带参数的请求

1. 首先新建一个http请求。

image.png
2.设置请求路径,并添加参数。  如下图所示,Path中填写请求路径,点击Add添加参数,有一个名为token的参数。
在这里插入图片描述
至此给带参数请求已创建完成,点击运行即可开始压测。

3、如何模拟设置多个变量,模拟多个用户请求接口

  1. 新建Csv Data Set Config设置。

image.png
2.新建配置文件config.txt,配置用户信息。 文件名随便写,里面数据每行有两个值,userId和userToken,中间用逗号隔开,我这里设置了两个用户的信息。

image.png
3.引用配置文件。 Csv Data Set Config中引用配置文件config.txt,并定义变量名为userId和userToken。

image.png
4.请求中引用配置文件中的变量。 在填写参数Value的地方不要将值写死,而是写为 变量名这种格式,我这里想要引用配置文件中 u s e r T o k e n 的值,所以写为 {变量名}这种格式,我这里想要引用配置文件中userToken的值,所以写为 变量名这种格式,我这里想要引用配置文件中userToken的值,所以写为{userToken}。

image.png
至此配置完毕,点击运行按钮,即可开始压测。

4. jmeter模拟多用户并发

一. 100个真实的用户

  1. 一个账号模拟100虚拟用户同时登录和100账号同时登录
    区别
  • 1个账号100个人用,同时登录;
  • 100个人100个账号,同时登录。

相同

  • 两个都是100人同时登录,具体看项目需求。
  1. 账号来源
  • 利用“注册”或“创建”账号接口,创建100个用户;
  • “查询”接口,保存100个账号的账号、密码到一个文件。

3、提取100个账号、密码的文件

  1. meter脚本整体布局
线程组(一级)---->请求默认值、请求头、http请求、察看结果树(二级)----->正则表达式、BeanShell 后置处理程序(三级)。
  • HTTP请求默认值:是存放系统通用ip的位置(协议:http; 服务名称或ip:127.0.0.1);
  • HTTP信息头管理:接口请求之前需要带的信息,部分接口不带不能运行(Authorization、Content-Type、Accept、User-Agent),例如必须带的token就在信息头中存放;
  • 登录请求:请求方法、请求路径、消息体;正则表达式提取token
  • 创建请求:请求方法、请求路径、消息体;参数化用户名,创建多个用户;
  • 查询账号:请求方法、请求路径、消息体;正则表达式提取用户名、密码;BeanShell 后置处理程序存储返回值到文件中

image.png

(2)查询请求中的正则表达式和BeanShell 后置处理程序

正则表达提取----->获取想要的字段内容
(详看:https://blog.csdn.net/belief_009/article/details/123051440)

image.png

  • BeanShell 后置处理程序---->将提取到的字段内容存储在指定文件4.csv中
FileWriter fs=new FileWriter("D://近期//4.csv",true);
BufferedWriter out =new BufferedWriter(fs);

out.write(vars.get("username")+","+vars.get("id"));    //username、id为正则定义名称
out.write(System.getProperty("line.separator"));      //相当于"\n"自动换行

out.close();
fs.close();

image.png

  • 线程组线程数设置数目等于提取到的条数,执行脚本得到100个用户的账号和密码

image.png

二、100个用户同时登录

  1. 设置线程组
    线程数:并发用户数
    Ramp-up时间(秒):启动所有线程所需要的时长
  • 0---->代表同时并发;
  • 100---->线程数100,时间100秒。代表每隔1s启动一个线程(100/100=1)

循环次数:Loop Count

  • 默认值是1;
  • 2---->线程数100,循环次数2。代表启动200个线程;
  • 勾选“永远”,会一直执行,需要人工停止,一般配合调度器使用。

image.png

补充:同步定时器:

  • 作用:阻塞线程,直到指定的线程数量到达后,在一起释放,可以瞬间产生很大的压力;
  • 使用同步定时器时,循环次数要勾选为永远

image.png
2. 模拟多用户登录
线程组下添加----->CSV 数据文件设置
将存储用户账号、密码的文件引入,并命名变量名称,在登录时调用。

image.png

  • 调用,传参${name}
  • 注释:本系统账号密码一致,所以只需要调用一列值
/api/v1/oauth/token?username=${name}&password=${name}&scope=all&grant_type=password

  1. 执行测试,查看结果
  • 100用户同时登录

image.png

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
JMeter是一种流行的压力测试工具,用于测试Web应用程序的性能和负载能力。它可以模拟多个用户同时访问和操作Web应用程序。 在进行多个用户同时编辑文档的压力测试时,可以使用JMeter模拟并发用户来执行这个场景。以下是一种可能的测试方法: 1. 配置线程组:在JMeter中创建一个线程组,用于模拟多个用户。可以设置线程数为所需的用户数量,并指定循环次数或持续时间。 2. 添加HTTP请求:在线程组中添加HTTP请求,用于访问和编辑文档的相关URL。可以配置请求的方法(GET、POST等)、路径和参数。 3. 设置用户登录信息:如果需要用户登录才能编辑文档,可以在HTTP请求中设置相应的登录参数,以确保每个用户都以其自己的凭据登录。 4. 数据准备:如果需要在编辑文档之前准备一些数据,可以使用JMeter的前置处理器来执行相应的数据准备操作,例如上传文档、创建用户等。 5. 结果分析:运行测试并等待所有的线程执行完毕后,可以通过查看JMeter的测试结果来分析性能和负载情况。可以查看响应时间、吞吐量和错误率等指标,以评估系统的性能和稳定性。 需要注意的是,进行多用户同时编辑文档的压力测试时,可能会造成数据库或服务器的负载增加,因此应提前对系统进行评估,并确保测试环境具备足够的硬件资源来支持并发用户的操作。 总之,使用JMeter进行多个用户同时编辑文档的压力测试,可以模拟真实的用户场景,并通过分析测试结果来评估系统的性能和负载能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值