0


Jmeter的使用

JMeter线程组设计

1、线程组

一个线程相当于一个虚拟用户,那么线程组就是多个线程的一个集合,是执行特定测试用例的用户池,是任何一个测试计划的开始点,它能使本线程组内的所有元件按照设定的测试用例来执行,故要执行性能测试的元件都必须在某个线程组下,否则没法控制。
在这里插入图片描述
在线程组的GUI界面中,我们可以模拟用户线程数、启动所有线程所需时间、执行测试的次数,也可通过调度器来执行测试的循环时长及定时执行等。
首先根据自己的喜好可以先设置语言,如下:
在这里插入图片描述

1.1 添加线程组

步骤:测试计划–鼠标右键–添加–线程(用户)–线程组,如下:
在这里插入图片描述

1.2 线程组中的参数

在这里插入图片描述
名称:线程组名称,自定义名称,一般若有多个线程组,建议名称是和业务关联
注释:自定义内容,对线程组进行解释说明

1.3 取样器错误后要执行的动作

继续:当请求出错后继续运⾏。我们常规压测中,⼀般都是有⼤量的线程并发,⽽个别请求出现响应 异常也属 正常现象,只要错误率不是特别⾼即可。另外可能由于性能问题导致响应异常能够记录下来,也可供我们对服 务是否有性能问题或稳定性作为⼀项参考依据。

启动下⼀进程循环:当有请求出错后同⼀脚本中剩下的请求不再执⾏,⽽是重新开始执⾏。

停⽌线程:当有请求出错后则停⽌当前线程,不再执⾏。如果我们运⾏了 10 个线程,其中某个线程有请求出 错后,则会停⽌这个线程,只有9个线程并发了。如果错的越多,线程停⽌的就会越多,执⾏时间⻓了,运⾏ 的线程因为较少,对服务器的负载压⼒下降,导致压测结果没有参考性了

停⽌测试:当有请求出错后则停⽌所有线程,但不管线程执⾏到哪个请求,都会执⾏完当前循环的线程组内所 有请求后才停⽌。

⽴即停⽌测试:当有请求出错后,⽴即停⽌整个测试场景。

1.4 线程属性

线程数:模拟的用户数,一个线程一个用户

Ramp-Up时间(秒):虚拟用户增长时长。也就是说在规定时间内启动所有线程数,单位:s,如: 200个线程要在1秒钟内启动完,则每个线程启动间隔时间为5ms

循环次数(永远):请求重复执行的次数,勾选永远则不能填入次数且会一直执行,除非你把它强制停止;不勾选永远,在输入框中输入数字则表示请求重复执行对应的次数。默认为1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。

延迟创建线程直到需要:勾选则按照 Ramp-Up 时间启动线程并运⾏;不勾选则先启动所有线程,再按照 Ramp-Up 时间启动请求。

调度器:设置开始运⾏时间。 持续时间(秒):执⾏多⻓时间,单位是秒,必然执⾏ 5 分钟则填 300。

启动延迟(秒):点执⾏按钮后不运⾏线程,等待延迟时间过后开始运⾏线程

2、HTTP请求

取样器主要是用来模拟用户操作,向服务器发送请求以及接受服务器的响应数据的一类元件,其中http请求取样器是用来模拟常用的http请求的。

2.1 添加HTTP请求

步骤:右击线程组–添加–取样器–HTTP请求,如下图所示:
在这里插入图片描述

2.2 界面参数

在这里插入图片描述
名称:用于标识一个取样器,建议使用一个有意义的名称

注释:在测试过程中可以不填,仅用户记录用户可读的注释信息

协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https或者File,默认值为http

服务器名称或IP:HTTP请求发送的目标服务器名称或者IP地址

端口号:目标服务器的端口号,默认值为80,https的端口为443

http请求:发送HTTP请求的方法,可用方法包括GET、POST等

路径:目标URL路径(不包括服务器地址和端口)

内容编码:内容的编码方式,默认值为iso8859;一般填写utf-8

自动重定向:选择该项的话,当发送HTTP请求后得到的响应是302/302时,JMeter会自动重定向到新的页面,但是Jmeter不记录重定向的过程内容

跟随重定向:Http Request取样器的默认选项,当响应code是3xx时,自动跳转 到目标地址。与自动重定向不同,Jmeter会记录重定向过程中的所有请求响应, 在查看结果树时可以看到服务器返回的内容,如有多个跳转则多个请求都会被记 录下来,此为默认选项

使用Keep Alive:选中该选项时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中

对post使用multipart/from-data:当发送POST请求时,使用multipart/from-data 方法或者application/x-www-form-urlencoded方法发送,默认不选中

与浏览器兼容的头:勾选此项会截掉http请求头中 的Content-Type和Content-Transfer-Encoding,而只发送Content-Disposition部分

参数:可以将URL中所有参数设置在本表中,表中的每一行是一个键值对,此时编码这个选项设置为UTF-8并勾选最好,防止参数值内含有ASCII Control Chars或者Non-ASCII characters或者其他符号导致乱码问题

消息体数据:同请求一起发送的数据信息,这里可以支持多种数据格式,json、 xml等

文件上传:同请求一起发送的文件信息,参数名称就是发送文件对应的参数, MINE Type为资源媒体类型

2.3 示例演示

比如登录接口,首先在控制台抓取数据,如下图:
在这里插入图片描述
然后将入参数据复制粘贴在jmeter的消息体数据,如下图:

在这里插入图片描述

3、HTTP信息头管理器

信息头管理器放到线程组下,那么线程组下所有 HTTP 请求都会共享这些 HTTP 信息头;
信息头管理器放到 HTTP 请求下,那么只有该请求拥有这些 HTTP 信息头;
HTTP 请求下的信息头管理器的优先级高于线程组下的信息头管理器;
若有重名的信息头名称,则优先取 HTTP 请求下的信息头管理器。

3.1 添加http信息头管理器

步骤:右键点击线程组–添加–配置元件–HTTP信息头管理器
在这里插入图片描述

3.2 示例演示

以自己实际项目的登录接口为例,在浏览器的登录页打开控制台,抓取请求头信息,如下图:
在这里插入图片描述
然后按需将抓取的数据添加到jmeter的http信息头管理器,如下图:
在这里插入图片描述

4、正则表达式提取器

JSON提取器和正则提取器的区别在于JSON提取器只针对接口返回的响应内容,正则提取器可以提取请求头、响应头、响应内容的值;如果需要提取请求头或者响应头的值就只能使用正则提取器了。

4.1 添加正则表达式提取器

步骤:鼠标右键点击线程组–添加–后置处理器–正则表达式提取器,如下图:
在这里插入图片描述

4.2 界面参数

在这里插入图片描述
引用名称:在HTTP等请求中,引用此数据需要用到的名称

正则表达式:用于将需要的数据提取出来

模板:表示提取到的第几个值:

     1 
    
   
  
    1 
   
  
1:表示取第1个, 
 
  
   
   
     2 
    
   
  
    2 
   
  
2:表示取第二个,以此类推: 
 
  
   
   
     n 
    
   
  
    n 
   
  
n:表示取第n个

匹配数字(0代表随机):0代表随机取值,1代表全部取值

缺省值:如果正则表达式没有查找到值,则使用此缺省值

4.3 正则表达式

提取内容的范围:
● ():封装了待返回的匹配字符串。
● .:匹配任何字符串。
● +:一次或多次。
● ?:不要太贪婪,在找到第一个匹配项后停止
正则表达式正确性验证:

可以在jmeter的查看结果数界面,鼠标点击选择要验证的接口,然后选择RegExp Tester,最后在Regular expression输入框填写你已经写好的正则并点击Test查看下方提取的数据是否正确,
(当然也可以通过正在表达式|菜鸟工具在线测试)如下图:

在这里插入图片描述

5、接口返回值作为请求参数传递

我们经常会遇到上一个接口的返回值,会作为下一个接口的请求参数,因此这里就需要将正则表达式提取的值作为全局变量,供其他接口使用,也就是作为其他接口的请求参数。

5.1 示例演示

以登录接口为例,将登录接口返回的参数token和userID通过正则表达式提取出来(参考即上述4),如下图:
在这里插入图片描述
将yssxToken和userID添加到HTTP信息头管理器(参考上述3),如下图:
在这里插入图片描述

6、响应断言

每个请求必须要有响应断⾔,是因为若对接⼝返回不做判断的话,我们⽆法判断请求的有效 性,从⽽⽆法评估出性能测试的真实性,故每个请求必须要有响应断⾔ 。

断⾔是通过获取服务器响应数据,再根据断⾔规则去匹配这些响应数据;若匹配到了是正常现象,不会进⾏任何提 示,若匹配不到,JMeter 则会断定这个请求失败,在后⾯调试脚本中我们会看到查看结果树中的请求名称是红⾊ 字体 。

6.1 添加响应断言

步骤:选择请求名称鼠标右键点击–添加–断言–响应断言
在这里插入图片描述

6.2 界面参数

名称和注释:可以随意设置,最后有业务意义
Apply to:应⽤范围,有 4 个选项
Main sample and sub-samples:匹配范围包括当前⽗取样器并覆盖⼦取样器
Main sample only:匹配范围是当前⽗取样器
Sub-sample only:仅匹配⼦取样器
JMeter Variable:⽀持JMeter变量值进⾏匹配
测试字段:对响应数据的不同部分进⾏匹配,有 7 个选项(文档和忽略状态不常用这里不做解释)。
响应⽂本:返回的⽂本内容
响应代码:响应码,在结果树的取样器结果中可看到
响应信息:在结果树的取样器结果中可看到
响应头:相当于结果树的 Response headers
请求头:相当于结果树的 Request headers
URL样本:请求 URL
请求数据:请求数据,发送到服务器(即正文)的请求文本,不包括任何 HTTP 头,相当于结果树的 Request Body
模式匹配规则:有6个选项
包括:包含,可用正则
匹配:匹配,可用正则
相等:相等,不能用正则,区分大小写
字符串:类似 py 的 substring 方法,也是包含,不能用正则,区分大小写
:取反
或者:只要有一个模式匹配,断言就是成功的
在这里插入图片描述


本文转载自: https://blog.csdn.net/Bruce_Wangjr/article/details/128631009
版权归原作者 迎着北风向北漂~ 所有, 如有侵权,请联系我们删除。

“Jmeter的使用”的评论:

还没有评论