使用JMeter也有一阵时间了,一直没有做总结归纳,这次对常用的一些接口自动化、性能测试功能做个记录。
1,下载安装
下载地址:Apache JMeter - Download Apache JMeter
JMeter在Mac,Windows均可运行,根据需求选择对应版本即可。
一键式安装,因此具体下载安装步骤不做叙述。
2,语言切换
在Options-Choose Language内可切换语言,非常适合初学者。
3,测试计划,线程组,HTTP请求
① 刚打开JMeter会有个默认的测试计划。
② 需要先添加线程组。
③ 之后添加取样器-HTTP请求。
④ 一个线程组内可以有多个请求,运行时会运行整个线程组。如果个别请求不需要运行,可以右键请求将其禁用。
⑤ HTTP请求内需要填写的内容和常规接口一致:
protocol:请求方式,http/https
server name or ip:访问ip
port:端口号,默认80
method:请求方式
path:访问地址
content encoding:编码,一般为utf-8
parameters:传参
body data:body传参,一般为json格式
files upload:文件上传
⑥ 运行、停止、清理等按钮
4,HTTP信息头
HTTP信息头对应接口就是接口的header。
可在配置元件内添加,主要添加HTTP信息头内参数,如token等。
5,传参,用户参数
在JMeter中,经常会使用传参,而不是写死某个参数值。
传参使用 ${ }的方式,花括号内为参数名。
也可以添加前置处理器中的用户参数,配合传参使用。
① 用户参数在前置处理器内。
② 下图为用户参数和HTTP信息头截图,在用户参数中定义全局的参数,然后在信息头中引用,这样就可以配合传参,也可以一键修改和管理。
6,查看结果树,聚合报告
至此,一个最简单的HTTP请求就写完了,想要查看是否可以跑通,可添加监听器内查看结果树和聚合报告等查看。
① 在监听器内有许多报告类型。
② 查看结果树内可设置输出内容存放到文件,也可设置只展示错误/成功日志。
③ 聚合报告主要是在性能测试中使用的,常用参数如下:
samples:样本数
average:平均响应时间
min,max:最小/最大响应时间
error:错误率
throughout:吞吐量,一般单位为 个/秒
同样,聚合参数也可以勾选只展示错误/成功数据。
7,CSV文件参数传递
在性能测试中,我们经常需要模拟客户场景,传一个参数肯定是不够的,此时常用CSV文件来配合传参,用法如下:
① 在配置元件内添加CSV Data Set Config。
② CSV内常用参数:
filename:csv传参文件路径
file encoding:文件编码,默认为utf-8
variable names:参数名,需自定义,传参时使用 ${ XXX }
ignore first line:是否忽略第一行(根据csv文件内写法决定,若第一行是参数名,则需要忽略)
delimeter:参数分隔方式,如文件中使用的是逗号分隔,则填写逗号;如使用的是tab则填写t;(如果此文本文件为CSV格式的,默认用英文逗号分隔)
allow quoted data:是否允许引用数据(在数据带“ ”时需要配置)
recycle on eof:是否循环,True=当读取文件到结尾时,再重头读取文件
False=当读取文件到结尾时,停止读取文件
stop thread on eof:当 recycle on eof 为False时,即当读取文件到结尾时,停止进程
当 recycle on eof 为True时,此项无意义
sharing mode:CSV文件的分享范围
③ 配套的CSV参数文件中,需填写对应的参数,如下图所示,我写了2个robotId作为demo,在CSV文件中可以每行写1条。
④ 在读取CSV文件后,实际并发时就会根据顺序使用多条数据进行测试,并根据设置的循环条件执行。
8,正则表达式提取器
在实际的接口场景中,有时需要通过获取上一条接口的传参,给到下一条接口作为输入参数,此时我们可以用正则表达式提取器来完成。
① 在后置处理器中添加 正则表达式提取器。
② 正则表达式提取器参数详解,我看到大佬一篇较为详细的博文,分享:
详解JMeter正则表达式提取器_六月的风-CSDN博客_正则表达式提取器应用场景:在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。正则表达式提取器:允许用户从作用域内的sampler请求的服务器响应结果中通过正则表达式提取值所需值,生成模板字符串,并将结果存储到给定的变量名中。先上个图:各配置项介绍:APPly to:作用范围...https://blog.csdn.net/qq_29234631/article/details/80987492
③ 如图,我的需求是获取到response中的assetId,并通过传参的方式被下一条接口获取到,参数名为created_assetId。
9,JMeter自带函数
① JMeter自带较多函数,在如下图中2个位置可以选中。
② 以时间函数为例,在实际测试中,有时我们的参数值需要传时间戳来避免重复,可以选择time函数。通过点击generate & copy 可以生成函数,可直接在请求中调用,非常方便。
10,BeanShell后置处理器
上面我们提到了正则表达式提取器,但要注意,正则表达式提取器提取出来的内容,只能在当前线程组使用,那么,如果我们有多个线程组,如何使用到其他线程组提取出来的参数呢?
此时我们可以用BeanShell后置处理器将参数设置为全局值,提供给其他线程组使用。
① 添加后置处理器-BeanShell后置处理器。
② 之后使用JMeter自带函数,使用setProperty设置值方法。如图,我这儿是把输出了参数login_token 的值。
③ 然后在BeanShell后置处理器中调用此方法,就可以设置成全局值啦。
④ 在其他地方使用时,可以使用 __property或__P方法来获取参数。
11,断言
这一块已经有很多大佬写出很详细的文章了,此处添加大佬文章。
jmeter常用四种断言 - GeorgeXu - 博客园一、Response Assertion(响应断言)二、Size Assertion(数据包字节大小断言)三、Duration Assertion(持续时间断言)四、beanshell 断言(自由断言https://www.cnblogs.com/georgexu/p/11224095.html
12,文件导出
在多个监听器中均可以设置导出文件,需要填写本地已有文件。
13,并发数与并发设置
在线程组中的并发数与并发设置详解如下:
number of threads:并发数
ramp-up period:准备时长,即多少秒到达设置的并发数
loop count:循环次数,若选择forever,则一直循环
duration:持续时间,勾选scheduler时生效
startup delay:延迟时间, 勾选scheduler时生效
写的比较流水账,后续持续补充~~~



