目录
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格式的请求头
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文件
创建如下配件
- 线程组
我是有7条数据,这么配置相当于一个用户请求7次
- .新建信息头管理器
因为是POST请求,所以要加content-type:application/json
- 新建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 ?:文件读取完后是否停止线程
- 添加HTTP请求
在请求中,基本上都是参数化了的,格式为“${参数}”
- 发起请求查看结果树即可
完~
家人们欢迎点赞、收藏、点评、提问呦
躬身自省,淳朴而谦逊否——文文的博客