jmeter 取样器connect time_【工具】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环境,开源的,网上很容易下载),安装后配置环境变量

413e8972b3157959ceb9cf2d6275e7c4.png
java添加到环境变量

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

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

b5a59b221b44827053014352ed228aaa.png

二、页面操作说明:

1.添加线程组

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

349f6b92584cbfabd8638818ef208940.png
线程组页面说明

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

79c19af5ddffdf1e92fd91a25b324996.png
右键测试计划添加Sampler

6c55a72189506e36f865312f96d94d8e.png
请求必填项

3.添加监听器

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

428361ba5b75660b0753830871bdd3e3.png
添加监听器

064734baca03ce25879118565a1798cd.png
查看结果树

4.添加Http Cookie管理器

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

1a3ee31a905652e0628e6c59ba19a0a9.png

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

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

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

40b6dc63d1db205230b0e529c564986d.png
在用户参数中添加值

9a1c8723401879eac13e968b7e27581a.png

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

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

操作步骤:

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

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

815b81e879420031eadf1f8a7329412c.png

3b68470ec50ee031ca70e9e5148c92ff.png

fbb354e7b4e3b624c3d2b4cd21d180ca.png

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

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

a99da9320a5c318f9057b85ddc39f748.png
添加csv读取元件

eb7fc59c050a48372ab3cc4899b1baae.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时此项无意义,因为一直能读到数据。

7185ece00558694cd73509d7e25603bf.png
参数调用

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

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

681bf0b4e7ce0f97db1f15185f911fb6.png
添加同步定时器

4865e0f78f55fd62307d0db627908e21.png
同步定时器参数含义

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

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

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

9f578af87d581c448f17739b71625194.png
正则表达式页面

dbb67935bcbb2a4470719de55affce01.png

说明

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

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

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

+一次或多次

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

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

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

扩展
但是,在JDBC请求后的响应结果中,往往需要关联的内容是只有左边界而没有右边界的,此时,我们怎么去关联呢?
实现的关键就在正则表达式的编写,提取一段字符串后所有内容用 [^"]+ 实现,这里的具体实例是n([^"]+)n,意思是提取cpgroupname后面所有内容,加上n是因为这里有换行(空格用s)

9e0b9af73d6456ac292397ae3a1d7333.png

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

6d7605196603d51ff278da0671736113.png
Json表达式提取器

c9355665a3bc45aa37e294a14627c437.png

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

577cb0abba524c9398dd05eb44b405ed.png

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

$.key1.key2[0].key3

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

9.响应断言

d3f8e983a814d2035e60973198416513.png
添加断言

1afda24bffad51778934ae0dba10401b.png

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

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

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

7e89077d5238c7d3b4ff21ca0a289dbb.png

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

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

10.压力测试

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

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

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

38f9f41a01ca0a281b78a830457bbddf.png

d97113e42d84f09ef4ebe3b0904e9fa5.png
Jmeter中添加监听器

说明:PerfMon Metrics Collector资源监听器

Response Times Over Time响应时间监听器

f4fef35ad29ca180f7bb31e7edb43f09.png

11.Jmeter生成多维度HTML报告

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

4ffc7632270574ae7b3404030f64dda3.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报告的目录(建议放在根目录下,目录中无汉字)

472460935f6cdf36cd30018e73687e44.png
命令行

41f456e20dde89c74902d23ef674112d.png
生成文件

4d2253f96e177176a75001d7592473f1.png
HTML图表

图表说明:

1d09c54ae9ecdbe4abf1a8f69b403bf1.png

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

20bbc33edef592b76aa5af46fbd86bde.png
聚合报告

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

dc43992aec0567dab6d9e37b195cd44b.png
错误统计页面

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

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

7505dd08c96494711743bcffdaf1ae0c.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后放到需要的位置即可;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值