JMeter的使用,同时发起多次请求的压测,POST请求使用scv参数化文件

0.安装

地址:https://jmeter.apache.org/download_jmeter.cgi
在这里插入图片描述

解压后, 运行 “bin/jmeter.bat”
Jmeter 是支持中文的, 启动Jmeter 后, 点击 Options -> Choose Language 来选择语言

1.发起一次请求,例子贯穿使用

调用后端一个POST的请求,需要带请求头、Cookie、请求体

1.1新建一个线程组

在这里插入图片描述

1.2新建一个测试

要在线程组里右键
在这里插入图片描述

1.3填写请求

在这里插入图片描述

此处遇到过问题,就是参数传到后端参数显示问号
解决方法:在上图内容编码栏目里填写UTF-8,针对不同后端不同的编码,我使用的UTF-8所以填写UTF-8后就生效了

1.4添加请求头

先新建一个配置元件,类型为信息头的管理器
在这里插入图片描述

点开,填写支持JSON、UTF-8格式的请求头
在这里插入图片描述

扫描二维码关注公众号,回复: 13417569 查看本文章

1.5添加Cookie

先新建一个配置元件,类型为Cookie管理器
在这里插入图片描述

填写要添加的请求头,我是使用的导入,太多了,少的话直接使用添加就行
在这里插入图片描述

载入有格式要求,首先.txt文档
按照这个格式书写
在这里插入图片描述

格式如下

# JMeter generated Cookie file,中间使用Tab隔开
	TRUE	接口URI	FALSE	0	cookie名	cookie值

1.6建立观察树

完成上述已经可以进行请求了,他会把请求结果保存成文件,但为了方便查看结果,我们建立观察树直接在软件中进行查看。
在这里插入图片描述

1.7发起请求

在这里插入图片描述

1.8查看请求结果

我前几次请求Cookie输入错误导致前几次请求失败
在这里插入图片描述

1.9断言

这里使用JSON断言,其余同理
在这里插入图片描述

执行效果还是在“观看结果树”里
在这里插入图片描述

1.10响应乱码问题

产生原因:响应页面没有做编码处理,jmeter默认按照ISO-8859-1编码格式进行解析
解决方法一:修改默认配置文件
bin目录下找到jmeter.properties文件,文件里找到sampleresult.default.encoding这个参数,此行默认是注释的可以看到说明,默认值是ISO-8859-1。将ISO-8859-1修改成utf-8,去掉注释符号,重启Jmeter
在这里插入图片描述

解决方法二:
通过后置处理器BeanShell PostProcessor
在这里插入图片描述

输入prev.setDataEncoding(“utf-8”); 目的是修改响应数据编码格式为utf-8,保存
在这里插入图片描述

乱码解决
在这里插入图片描述

1.11 JSON格式美化

可以看见上面的数据非常乱,但他是个JSON格式,我们点击这里修改他的响应格式
在这里插入图片描述

2.压力测试

压力测试,就是 被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况)
比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速度是否会变慢,或者网站是否会奔溃

2.1并发请求

为什么使用JMeter,原来的Postman他不香吗?Postman里有runner但是几经测试发现都是线式请求,就是请求完一次再发起另一次请求。我需要的是1ms甚至是不到1ms就发起多次请求,创造并发的情况,Postman并不能实现我的需求。
还是上述第一章的请求,在点击线程组进行设置
在这里插入图片描述

创建汇总报告看结果
在这里插入图片描述

点击运行看结果
在这里插入图片描述

汇总报告这里面的参数都什么意思:
最小值:最小响应时间;
最大值:最大响应时间;
异常%:本次测试中出现的错误率,即 错误的请求的数量/请求的总数;
吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction
接收:每秒从服务器端接收到的数据量;
发送:每秒从客户端发送的请求的数量。

服务器效果:
在这里插入图片描述

2.2连续请求

根据上面线程属性的组合设置实现
在这里插入图片描述

就一个用户不断执行一个请求,但中间要间隔5秒,如何实现?
创建一个固定定时器就好啦。见下截图
在这里插入图片描述

3.动态参数

3.1用户自定义变量

在这里插入图片描述

创建字段
在这里插入图片描述

使用字段,如果是GET在URI处同理使用
在这里插入图片描述

3.2关联

是第二个Request, 使用第一个Request中的数据
使用后置处理器取到响应体中的数据
在这里插入图片描述

填写引用名称、如何获取
在这里插入图片描述

新建第二个Http Request,使用${引用名称}即可使用

3.3前置/后置处理器

Postman中是在这里编写,Postman给提供很多模板在右侧
在这里插入图片描述

JMeter在这编写,语法也不复杂

在这里插入图片描述

3.4 POST请求使用scv参数化文件

3.4.1编辑scv文件

创建一个Excel文件编辑需要的字段,我这里使用了2个一个URI、一个POST请求内容,示例如下
在这里插入图片描述

直接用.xlsx格式,出来一堆乱码
写完后另存为.csv格式
变量名不要用中文

3.4.2编辑JMeter文件

创建如下配件
在这里插入图片描述

  1. 线程组
    我是有7条数据,这么配置相当于一个用户请求7次
    在这里插入图片描述
  2. .新建信息头管理器
    因为是POST请求,所以要加content-type:application/json
    在这里插入图片描述
  3. 新建CSV Data Set Config
    在这里插入图片描述

参数说明:
Filename: 文件的完整路径,包括文件名和类型
File encoding:文件编码,好像不写也可以,开始写了utf-8报错了
Variable Names(comma-delimited):储存参数的变量名,如果在.csv文件中有写变量名就不需要写了,在这里写的话需要将每个变量名用“,”隔开
Delimiter(use ‘\t’ for tab): 分隔多个参数的分隔符
Allow quoted data?:是否有引用数据,ps:如果参数中有逗号或双引号,要选为“true”
Recycle on EOF ?:文件读取完后是否继续读取
Stop thread on EOF ?:文件读取完后是否停止线程

  1. 添加HTTP请求
    在请求中,基本上都是参数化了的,格式为“${参数}”
    在这里插入图片描述
  2. 发起请求查看结果树即可

完~
家人们欢迎点赞、收藏、点评、提问呦
在这里插入图片描述

躬身自省,淳朴而谦逊否——文文的博客

猜你喜欢

转载自blog.csdn.net/weixin_42119415/article/details/117029110