jmeter csv参数化_【工具】Jmeter的下载安装和使用

目录
一、下载安装方式
二、页面操作说明:
1.添加线程组
2.在线程组中添加取样器Sampler
3.添加监听器
4.添加Http Cookie管理器
5.Jmeter参数化(三种方式)
6.同步定时器(集合点)
7.正则表达式提取器
8.Json提取器
9.响应断言
10.压力测试
11.Jmeter生成多维度HTML报告
一些常用小工具,非必须
12.Jmeter函数助手之__time函数(获取当前时间)

Apache JMeter是Apache组织开发的基于Java的压力测试工具。纯java开发的。

一、下载安装方式

1.下载安装JDK(java环境,开源的,网上很容易下载),安装后配置环境变量

28eb3297dd4e5c98aa6aa7d21da8e192.png
java添加到环境变量

2.下载解压Jmeter压缩包(无需安装,直接解压即可)

打开jmeter/bin/jmeter.bat(批处理文件),直接双击即可打开Jmeter

360186a43e74da3786627772f7a82f54.png

二、页面操作说明:

1.添加线程组

b5f1d46f53d02b1d654be6d89df23271.png
测试计划右键添加线程组

78bc20259e58fccad3ce53b63452e8a6.png
线程组页面说明

2.在线程组中添加取样器Sampler

9048c8c4d30006a62f9b62aa222a468f.png
右键测试计划添加Sampler

8ab94b1573b280a01adc364eda9d6752.png
请求必填项

3.添加监听器

常用的为:查看结果树、聚合报告

ddc0aa071687f304f9a118287611d3fa.png
添加监听器

4b19b9e7aa8a6bd6f9c464130dddce6a.png
查看结果树

4.添加Http Cookie管理器

保存上一步取样器结果中返回的Cookie值供下一步使用,不用额外配置,一次自上而下的操作认为是一个用户,都会添加同一个Cookie。

c58f964d02f4236da3689f78bca7a4a2.png

5.Jmeter参数化(三种方式)

方法1:添加前置处理器——用户参数,使用‘${参数名}’进行调用

a8dbe3df0192a728b451e078d1854551.png
右键测试计划在前置处理器里添加用户参数

b2fc247c7d8dee2e89180a52fe2aa95e.png
在用户参数中添加值

c0eee9d41adb9bad6ceeb1df602bec3d.png

方法2:使用函数读取.csv文件中的数据(.csv可以用Excel建或者用notepad++)

_CSVRead函数原理:先去读取csv文件,然后读取其中的列,挨个赋值给取样器中的参数。

操作步骤:

点击选项→函数助手对话框(快捷键ctrl+shift+F1)→选择CSVRead函数→第一个参数值放文件路径名称,第二个参数是开始的列,0代表第一列→点击生成

然后复制生成的参数化的字符串到Sampler中粘贴即可,注意改下列号

52d601f36bc0cf83b2599016466c41de.png

9cc944a0e6cbff724785cdd18f9478db.png

a0d9f2c684b8e33e62c8668cccdfdce4.png

问题排查:如果请求里的参数取的有问题,把.csv文件编码改为‘以utf-8无BOM格式进行编码’(在nodepad里可以改编码)

方法3:使用元件读取CSV Data参数(类似方法1使用函数调用.csv文件数据)

8ed142c00a54ce11e336719d0952b98a.png
添加csv读取元件

84cad5cbfddb0298f81c14fbc4c6f438.png
设置参数解读

Delimiter:变量之间的分隔符,.csv文件用‘,’分隔

Allow quoted data?(是否支持引号,默认选False就可以):选择True,可用双引号来识别内部包含逗号或双引号的数据;

比如数据文件中为1,2,"3,"4",5",为false时,则识别为5个数据a=1,b=2,c=“3,d=“4”,e=5”;为True识别为3个数据a=1,b=2,c=3,"4",5。

Recycle on EOF?:True时读取文件到结尾时,再从头读取;False时读取到文件结尾停止读取。

Stop thread on EOF?:和上一个Recycle on EOF相关,当Recycle on EOF为False时,当读取不到数据时是否停止线程,True为停止,False为继续。Recycle on EOF为True时此项无意义,因为一直能读到数据。

e19b73ed780a3afd88b1b689c9b69aed.png
参数调用

6.同步定时器(Synchronizing Timer),也叫集合点(就是大家在集合好了一起走)

定时器→同步定时器中添加,目的是并发测试,让多个用户同时调用接口,原理是等待n个用户,满足后才一起运行。

2e803a9216172d29016d8d1de5410af6.png
添加同步定时器

90d2debd64bfbc84a08f7298a877fd4f.png
同步定时器参数含义

7.正则表达式提取器(属于后置处理器,请求结束后拿的响应的数据):并不直接涉及请求测试,但是对数据传递起着很大作用。

添加方式:右键添加→后置处理器→正则表达式提取器,位于具体的请求里面,代表获取这个请求返回的结果中的值。

d01c664b6fc1786b76984380b1548840.png
正则表达式提取器添加路径

a6a595c4dad622265f9bbe53c2b0c749.png
正则表达式页面

25a56bf91c35f4adc5a3b1f1aef39c1d.png

说明

引用名称:下一个请求要引用的参数名称,上图中名称为uid,其他请求使用${uid}调用这个参数值。

正则表达式:()起来的部分是要提取的内容,()前后为定位用的内容,一般把目标值前后多复制一些,然后把目标值用()取代

.代表匹配任何字符串,不对一些特殊字符做处理,全部取回

+一次或多次

?匹配到第一个匹配项后就停止

(.+?)经常一起用,代表只取第一个值

模板:正则表达式也可以写多个,用;隔开,$1$代表取第一个模板的正则表达式

8.Json提取器:对于响应结果是Json体的就可以用

e19f74826b3d555d008368cf976de1b1.png
Json表达式提取器

73242833a3c15a39f51f46b3853b52e5.png

Compute concatenation var(suffix_ALL):用于匹配到多个结果时,勾选此项会生成一个名称为“变量名_ALL”的列表,一般不用。

3718da9bf57d66e3b5831f50cf636293.png

说明:如果json路径有层级结构,格式

$.key1.key2[0].key3

.区分层级,列表的话用[]下标

9.响应断言

6a12dbfc6ed5508dcd0660d31f7b98e6.png
添加断言

6fbf8980f066b96f83fff0e16b3fd41c.png

注意:响应代码取的的是“取样器结果”中的Response Code,不是“响应数据”中的。

响应信息取的是“取样器结果”中的Response message

响应文本取的是“响应数据”中的信息

935585c42d019fc2e8377a45860e7fbd.png

匹配模式:包括是包含即可,匹配是完全一样

断言中也可以使用变量${}作为预期结果,需要跟着用户改变的话直接加到用户参数中即可。

10.压力测试

linux服务器上安装插件,帮助统计服务器资源使用情况反馈回来,相当于资源获取器

java -jar /home/AIbert/ServerAgent-2.2.1/CMDRunner.jar(插件地址) --tool PerfMonAgent --udp-port 7777 --tcp-port 4445(分配端口)

服务需要每次开启,测试完成后Crtl+C退出;

a5b849220b632347d36b80b3cd8f66f5.png

3147217c2e95a70bc9059806a7722171.png
Jmeter中添加监听器

说明:PerfMon Metrics Collector资源监听器

Response Times Over Time响应时间监听器

997ab425f27ad7ebe7b45a2fba932b6d.png

11.Jmeter生成多维度HTML报告

  • 关闭Jmeter
  • 如果没有.jtl文件,进入Jmeter下/bin目录,按住shift+右键,选择在此处打开命令窗口;Ctrl+C退出;

4905bbde2809ce51279afa1a8966aaf4.png
  • 运行命令:jmeter -n -t source.jmx -l result.jtl -e -o /tmp/ResultReport

参数说明:-n以非GUI方式运行Jmeter

-t source.jmx脚本路径(改成你的测试计划的路径)

-l result.jtl运行结果保存路径(.jtl),此文件必须不存在

-e 在脚本运行结束后生成HTML报告

-o 用于存放HTML报告的目录(建议放在根目录下,目录中无汉字)

c88ed74d23bfb77461d3ac731aa3aa5f.png
命令行

a41de9b8ba2ce2dabbc8b158e5b8ff91.png
生成文件

5ad3f0559565d9bbf0705b4252a34bdd.png
HTML图表

图表说明:

5a48373bd599fe6ee112859c61a5541a.png

Apdex参数越接近1说明性能表现越好,反之越接近0则越差。

d48964e0cad20ca22c5da787bd7a639a.png
聚合报告

聚合报告图表,和Jmeter聚合报告数据一致

8441db9fc536413172481675527ee8a7.png
错误统计页面

12.Jmeter函数助手之__time函数(获取当前时间)

功能:__time函数可以获取到当前的时间并传参供调用

4470df169386ba883c6a17160b41c5dd.png

使用方式:1.打开函数助手,找到__time这个函数,可以看到该函数有两个参数,即格式和参数名称,两者都不是必填项。

  • 格式:格式如果不填那么就是默认获取当前时间的毫秒数(此项也常被用于接口参数中那些不允许重复的字段);
  • 参数名称:非必填项,如果填了,则生成的时间会被放到该参数中,可以在任意地方调用这个参数,常用于多接口中某个值使用同一个时间参数的情况;

${__time(,)}:获取当前时间的毫秒数;

${__time(,time_ms)}:获取当前时间的毫秒数并存入参数time_ms中;

${__time(/1000,)}:获取当前时间的秒数;

${__time(/1000,time_s)}:获取当前时间的秒数并存入参数time_s中;

${__time(yyyy-MM-dd,)}:获取当前日期;

${__time(yyyy-MM-dd,time_date1)}:获取当前日期并存入参数time_date1中;

${__time(yyyy-MM-dd HH:mm:ss,)}:获取当前时间,固定格式;

${__time(yyyyMMddHHmmss,time_2)}:获取当前时间,固定格式,并存入参数time_2中;

${__time(YMDHMS,)}:获取当前时间,固定格式

2.点击生成按钮即可生成函数字符串,copy后放到需要的位置即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值