『动善时』JMeter基础 — 12、JMeter取样器详解:sampler
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 RequestJMS 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请求”为例介绍一下取样器
根据上图解释说明:
(1)HTTP Request:
名称(Name)
:取样器名称,也就是需要访问接口的名称。
建议写成请求接口的地址,例如:/login
这样在有多个取样器的时候,左侧列表就可以知道该取样器是针对哪个接口的。注释(Comments)
:对当前取样器的解释说明。
(2)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端口。
(3)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默认选中跟随重定向
,但跟随重定向
与自动重定向
只能二选一。
6)使用keep Alive:
当该选项被选中时,JMeter和目标服务器之间使用Keep-Alive
方式进行HTTP通信,默认选中。
HTTP请求中Keep-Alive模式说明:
如果一个浏览器对某一个域名有多个请求,就会进行频繁的建立连接和断开连接。所以HTTP 1.0中出现了
Connection: keep-alive
属性,用于建立长连接,即我们所说的Keep-Alive模式。Keep-Alive模式更加高效,因为避免连接频繁建立和释放的开销。
7)对POST使用multipart/form-data:
使用multipart/from-data
或application/x-www-form-urlencoded
方式发送HTTP POST请求,默认不选中。
说明POST请求表单提交的编码类型:
multipart/from-data
或application/x-www-form-urlencoded
用来控制请求向服务器发送表单数据之前如何对其进行编码。
enctype属性 | 说明 |
---|---|
application/x-www-form-urlencoded | 默认编码方式, key1=value1&key2=value2。 |
multipart/form-data | 普通表单提交,以及表单文件上传。 |
text/plain | 以纯文本形式进行编码,其中不含任何控件或格式字符,该方式不常用。 |
8)与浏览器兼容的头(Browser-compatible headers)
当勾选multipart/form-data
时,勾选此项会截掉HTTP请求头中的Content-Type
和Content-Transfer-Encoding
,而只发送Content-Disposition
部分。
(4)同请求一起发送参数:
1)参数(Parameters):
在请求中发送带参数的URL ,JMeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。
编码这个选项最好勾选,因为如果参数值内含有ASCII Control Chars
或者Non-ASCII characters
或者其他符号的话,如果不勾选会导致发送失败(乱码问题),勾选的话会自动将含有的这些特殊符号进行编码。
2)消息体数据(Body Data):
通请求一起发送的数据消息,这里可以支持多种数据格式 json、xml等。
例如:
参数格式:name=zhangsan&age=15的形式。(参数以纯文本形式)
参数格式:json形式。(需要配置http信息头管理器,添加Context-Type = application/json)
注意:Parameters和Body Data只能选用其中一种方式发送参数。
3)文件上传(Files Upload):
在请求中发送文件。通常HTTP文件上传行为可以通过这种方式模拟,参数名称就是发送文件对应的参数,MINE Type
为资源媒体类型。
4、高级页面选项介绍
根据上图解释说明:
(1)客户端实现:
实现(Implementation)
:发送http请求的方式。可选项为Java和HttpClient4,默认为HttpClient4。HttpClient4是Java工具包实现的请求方式,是基于.net工具包二次定制,效率高。
如果是上传文件的话一定要选择,否则请求发送成功了,其实文件并未上传成功。
超时(毫秒)<Timeouts(milliseconds)>
:超时设置。链接(Connect):连接超时时间,单位为毫秒;
响应(Response):响应等待超时时间,单位为毫秒;
(2)从HTML文件嵌入资源:
从HTML文件获取所有内含的资源(Retrieve All Embedded Resources)
:当该选项被选中时,JMeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行解析,并获取HTML中包含的所有资源(图片、flash等),默认不选中。
如果用户只希望获取页面中的特定资源,可以在后边的
URLs must match
文本框中,填入需要下载的特定资源表达式,这样只有能匹配指定正则表达式的URL指向资源会被下载。并行下载(Parallel downloads)
:是否使用自设资源池,勾选后可设置大小。数量(Number)
:资源池大小,默认设置为6。网址必须匹配(URLs must match)
:URL匹配过滤,填写此项则只会下载与此内容项匹配的url的资源。例如:要获取
http://example.com/
下的所有资源,使用正则表达式http://example.com/.*
。
(3)源地址:
只用于http协议且Implementation为HttpClient4的情况,此属性用于启用IP欺骗,会重写了这个http请求使用的默认本地IP地址。
用于JMeter主机具有多个IP地址的情况。该值可以是主机名、IP地址或网络接口设备,如“ey0”或“l0”或“wlan0”
。
可以设置多个,防止IP地址被服务端拉黑。
IP/主机名(IP/Hostname)
:使用特定的IP地址或(本地)主机名。设备(Device)
:选择该接口的第一个可用地址,该设备可以是IPv4或IPv6。设备IPV4
:选择名称设备的IPv4地址。设备IPV6
:选择名称设备的IPv6地址。
(4)代理服务器:
不想用本机的地址来发送Http请求,而想使用代理服务器时则填写。
服务器名称或IP
:代理服务器的名称或者IP地址。端口号
:该代理的端口号。用户名
:使用该代理的用户名。密码
:用户密码。
(5)保存响应为MD5哈希:
选中该项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该选项,以减少取样器记录响应数据的开销。
到这里“HTTP请求”这个取样器介绍完了,每个取样器的页面和用法都不用,这里不能一一进行说明,以后再用到哪种取样器(Samplers)会单独讲解。
参考:
『动善时』JMeter基础 — 12、JMeter取样器详解:sampler的更多相关文章
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 8、JMeter主要元件介绍
目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
- 『动善时』JMeter基础 — 30、JMeter中JSON断言详解
目录 1.JSON断言组件界面详解 2.JSON断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)JSON断言界面内容 (4)查看运行结果 (5)断言结果组件说明 3.JS ...
- 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解
目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...
- 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作
目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...
- 『动善时』JMeter基础 — 18、JMeter配置元件【计数器】
目录 1.计数器介绍 2.计数器界面详解 3.计数器的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)计数器界面内容 (4)HTTP请求界面内容 (5)查看结果 1.计数器介绍 如果需要 ...
- 『动善时』JMeter基础 — 19、JMeter配置元件【随机变量】
目录 1.随机变量介绍 2.随机变量界面详解 3.随机变量的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)随机变量界面内容 (4)HTTP请求界面内容 (5)查看结果 1.随机变量介绍 ...
- 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)
目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...
随机推荐
- 死磕生菜 -- lettuce 间歇性发生 RedisCommandTimeoutException 的深层原理及解决方案
0x00 起源 项目的一些微服务集成了 Spring Data Redis,而底层的 Redis 客户端是 lettuce,这也是默认的客户端.微服务在某些环境中运行很正常,但在另一些环境中运行就会间 ...
- logging日志的使用和设置过期自动删除
一.logging的基础使用 1.logging的级别 import logging logging.debug('debug message') # 计算或者工作的细节 logging.info(' ...
- 循环3n加1问题
package 第二章; import java.util.Scanner; //int 32位整数 /* * 猜想:对于任意大于一的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半 经过 ...
- 201871030133-徐作朝 实验二 个人项目—《D{0-1} KP》项目报告
项目 内容 课程班级博客链接 课程班级博客链接 这个作业要求连接 作业要求链接 我的课程学习目标 (1)掌握软件项目个人开发流程.(2)掌握Github发布软件项目的操作方法. 这个作业在那些方面帮助 ...
- 对象存储服务MinIO安装部署分布式及Spring Boot项目实现文件上传下载
目录 一.MinIO快速入门 1. MinIO简介 2. CentOS7更换成阿里云镜像 3. 安装 3.1 下载 3.2 运行测试 4. 配置脚本执行文件 4.1 创建配置执行文件 4.2 执行 二 ...
- 解决WebStorm无法正确识别Vue3组合式API的问题
1 问题描述 Vue3的组合式API无法在WebStorm中正确识别,表现为defineComponent等无法被识别: 2 尝试方案 猜想这种问题的原因是无法正确识别对应的Vue3库,笔者相信Web ...
- Ambassador-04- Mapping 资源
官方文档:https://www.getambassador.io/docs/latest/topics/using/intro-mappings/#resources Ambassador 通过Ma ...
- (十二)docker --privileged
1. privileged参数作用 --privileged Give extended privileges to this container 大约在0.6版,privileged被引入docke ...
- 什么?女神发了朋友圈,快来围观之Java设计模式:观察者模式
目录 观察者模式 示例 定义 设计原则 意图 主要解决问题 何时使用 优缺点 女神和追求者的故事 Java中的实现 观察者模式 示例 微信公众号,关注就可以收到推送的消息,取消关注就不会收到 定义 定 ...
- 现代操作系统原书第3版.mobi
电子书资源:现代操作系统原书第3版 书籍简介 本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux.Windows Vista和Symbian操作系统的详细介绍.书中集中讨论了操作系统 ...