(1)取样器介绍
取样器是用来模拟用户操作的,向服务器发送请求以及接收服务器的响应数据。
取样器是在线程组内部的元件,也就是说取样器只能在线程组中添加。
取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元。(取样器通常要进行三个工作)
(2)JMeter自带的取样器
-
HTTP Request
:HTTP请求 -
Flow Control Action
:测试活动 -
Debug Sampler
:Debug取样器 -
JSR223 Sampler
:JSR223取样器 -
AJP/1.3 Sampler
:AJP/1.3取样器 -
Access Log Sampler
:Access Log取样器 -
Bean Shell Sampler
:Bean Shell取样器 -
FTP Request
:FTP请求 -
JDBC Request
:JDBC Request -
JMS Publisher
:JMS发布 -
JMS Point-to-Point
:JMS点到点 -
JMS Subscriber
:JMS订阅 -
JUnit Request
:JUnit请求 -
Java Request
:Java请求 -
LDAP Extended Request
:LDAP扩展请求默认值 -
LDAP Request
:LDAP请求 -
OS Process Sampler
:OS进程取样器 -
SMTP Sampler
:SMTP取样器 -
TCP Sampler
:TCP取样器 -
Mail Reader Sampler
:邮件阅读者取样器
说明:
- 在测试工作中用的最多的可能就是“HTTP请求”。
- 每一种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求。
- 在JMeter的所有Sampler中,
Java Request Sampler
与Bean Shell Sampler
是两种特殊的可定制的Sampler。总结:
- 取样器的作用是向服务器发送请求,记录响应信息,记录响应时间。
- 多个取样器按照它们在树中出现的顺序运行。
(3)“HTTP请求”为例介绍一下取样器
根据上图解释说明:
HTTP Request:
-
名称(Name)
:取样器名称,也就是需要访问接口的名称。建议写成请求接口的地址,例如:
/login
这样在有多个取样器的时候,左侧列表就可以知道该取样器是针对哪个接口的。 -
注释(Comments)
:对当前取样器的解释说明。
Web服务器:
-
协议<Protocol(http)>
:向目标服务器发送HTTP请求时的协议,可以是http或者是https或者File ,默认值为http协议 (根据需求定)。 -
服务器名称或IP(Server Name or IP)
:HTTP请求发送目标服务器的域名或IP地址,例如www.baidu.com
或者127.0.0.1
。 -
端口号(Port Number)
:所访问服务器中应用所占的端口,默认80端口。
HTTP请求:
1)方法(Method)
:
发送HTTP请求的请求方式。(可以根据接口文档获得)
请求方式包括:GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
2)路径(Path)
:
目标接口的URL路径(不包括服务器地址和端口)。
也可以直接写完整路径(上面配置的IP+端口就可以省略了) ,不带参数的api路径。
3)内容编码(Content encoding)
:
请求数据内容的编码方式,默认值为iso8859
编码,但一般content encoding
配置为UTF-8
,来防止中文乱码。
说明一下
Content encoding
属性:
Accept-Encoding
和Content-Encoding
是HTTP中用来对采用哪种编码格式传输正文进行协定的一对头部字段。工作原理如下:
1、首先浏览器(也就是客户端)发送请求时,通过
Accept-Encoding
带上自己支持的内容编码格式列表。2、服务端在接收到请求后,从中挑选出一种用来对响应信息进行编码,并通过
Content-Encoding
来说明服务端选定的编码信息。3、浏览器在拿到响应正文后,依据
Content-Encoding
进行解压。
4)自动重定向
:
如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter会自动重定向到新的页面,但是JMeter是不记录重定向的过程内容。只能用于GET和HEAD方法,如果是POST或者PUT请求则取样器不会发送。
301、302响应码说明:
官方的比较简洁的说明:
301 redirect:301 代表永久性转移(Permanently Moved)
302 redirect: 302 代表暂时性转移(Temporarily Moved )
详细来说,
它们的共同点301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)
他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。
总结:
http 协议的 301 和 302 状态码都代表重定向。浏览器请求某url收到这两个状态码时,都会显示和跳转到 Response Headers 中的Location。即在浏览器地址输入 url A,却自动跳转到url B。
5)跟随重定向
:
Http Request
取样器的默认选项,当响应code是3xx时,自动跳转到目标地址。与自动重定向不同,JMeter会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,如有多个跳转则多个请求都会被记录下来,此为默认选项。
自动重定向和跟随重定向的区别只在于是否记录多个跳转的请求上。
在JMeter默认选中跟随重定向
,但跟随重定向
与自动重定向
只能二选一。
参考:
https://www.cnblogs.com/Psara/p/13448040.html
https://blog.csdn.net/grandPang/article/details/47448395
网友评论