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请求”为例介绍一下取样器

根据上图解释说明:

(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的更多相关文章

  1. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  2. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  3. 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍

    目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...

  4. 『动善时』JMeter基础 — 30、JMeter中JSON断言详解

    目录 1.JSON断言组件界面详解 2.JSON断言组件的使用 (1)测试计划内包含的元件 (2)登陆接口请求界面内容 (3)JSON断言界面内容 (4)查看运行结果 (5)断言结果组件说明 3.JS ...

  5. 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解

    目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...

  6. 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作

    目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...

  7. 『动善时』JMeter基础 — 18、JMeter配置元件【计数器】

    目录 1.计数器介绍 2.计数器界面详解 3.计数器的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)计数器界面内容 (4)HTTP请求界面内容 (5)查看结果 1.计数器介绍 如果需要 ...

  8. 『动善时』JMeter基础 — 19、JMeter配置元件【随机变量】

    目录 1.随机变量介绍 2.随机变量界面详解 3.随机变量的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)随机变量界面内容 (4)HTTP请求界面内容 (5)查看结果 1.随机变量介绍 ...

  9. 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)

    目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...

随机推荐

  1. Python编程中可能经常用到的函数

    1.os.walk() 一般用法为 import os ph=r'D:\temp\build' for root,dirs,files in os.walk(ph): print(root,dirs, ...

  2. android消息线程和消息队列

    基于消息队列的线程通信:           消息队列与线程循环            MessageQueue:           利用链表来管理消息.                  Mess ...

  3. Android中的TaskStack及启动模式

    目录 前言 如何观察ActivityStack? 几个问题 关键类介绍 ActivityStack的创建与种类 不同启动模式 launchMode Standard SingleTop SingleT ...

  4. github文件快速下载

    目录 一,提升加载速度 二,提升下载速度 只是想快速下载文件的直接看第二部分. github加载速度慢究其原因还是伟大的墙的存在.我们需要赞美墙,但就算墙很伟大,问题还是要解决的. 有问题就解决问题, ...

  5. Java单链表反转图文详解

    Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...

  6. 隐藏页面元素 css

    一.前言 在平常的样式排版中,我们经常遇到将某个模块隐藏的场景 通过css隐藏元素的方法有很多种,它们看起来实现的效果是一致的 但实际上每一种方法都有一丝轻微的不同,这些不同决定了在一些特定场合下使用 ...

  7. 2018年block3学习计划

    还是要给自己制定一个block的计划,希望自己的技术能有更进一步的提升 1. 算法/数学 随着学习的进一步深入,愈发认识到了算法的重要性,这个block给自己定下的计划就是 1)把introducti ...

  8. 自学转行JAVA,没有项目经历怎么找工作?

    应届生或者是刚参加工作的转行人员都有这样一个疑惑,刚学出来没有工作经验,但是企业又要求你必须要有工作经验,但是刚毕业找不到工作就不可能有工作经验,感觉陷入一个死循环.其实这种情况那些企业是不可能不知道 ...

  9. 如果你的application.properties中还存在明文密码----加密Spring Boot中的application.properties

    1 概述 什么?都2020年了还在Spring Boot的配置文件中写明文密码? 虽然是小项目,明文也没人看. 明文简单快捷方便啊!!! 你看直接用户名root密码123456多么简单!!! ... ...

  10. Java并发的背景

    在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行. 并发与操作系统的生命历程息息相关.进程的 ...