JMeter八大元件及元件运行顺序,作用域的理解

  • 1.八大元件分别是:

  • 配置元件:用来提供对静态数据配置的支持。例CSV Data Set config可以将本地数据文件形成数据池(Date Pool)。
  • 定时器(具有LR的Think_time功能):用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。
  • 前置处理器:用于在实际的请求发出之前对即将发出的请求进行特殊处理。例当url中有SessionID一类的信息时,可以通过该处理器填充发出请求实际的SessionID。
  • 后置处理器(具有类似于LR中的关联功能):用于对Sampler发出请求后得到的服务器响应数据进行处理,一般用于提取响应中的特定数据。
  • 断言(具有类似于LR中的检查点功能):用于检查测试中得到的响应数据是否符合预期。断言一般用来设置检查点,验证测试过程中的数据交互是否与预期一致。
  • 监听器(具有类似于LR中的日志功能):用来对测试结果数据进行处理和可视化显示的一系列原件。图形结果、查看结果树、聚合报告等都是比较常用的原件。
  • 取样器--Sampler:是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元。每一种不同类型的Sampler可以根据设置的参数向服务器发送不同的请求。
  • 逻辑控制器:逻辑控制器的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。分为两类元件:一类用于控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有 如果(If)控制器、Swirch Controller、Runtime Controller、循环控制器等。另一类用来对Test Plan中的脚本进行分组,方便Jmeter统计执行结果以及脚本运行时的控制。如事务控制器、吞吐量控制器等。
  • 2.元件讲解

  • 测试计划元件(Test Plan):Test Plan用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就是说本地性能测试的所有内容是基于一个计划的。它是一个根节点,Jmeter脚本执行执行请求的所有组件都在Test Plan下面。
  • JMeter八大元件及元件运行顺序,作用域的理解
  • 线程组(用户数):

    Threads(User)就是Thread Group线程组,是一组执行相同测试案例操作的用户(线程),简而言之就是JMeter的脚本,等同于LoadRunner的脚本概念,线程组的创建和其下面的3个不同线程组的作用和概念如下:

    JMeter八大元件及元件运行顺序,作用域的理解

  • 配置元件:

    点Test Plan右键—>Add—>Config Element中是配置元件(ConfigElement)用于提供静态数据配置支持。用于配置JMeter的各种参数。 配置元件仅对其所在的测试树分支有效。

  • JMeter八大元件及元件运行顺序,作用域的理解

  • 监听器:监听器(Listeners)是一种展示采样结果的测试元件,采样结果可以通过树、表格、图片加以展示,或者简单地写入某个结果文件之中。注:不同的监听器通过不同的方式展示服务器响应信息,但它们都将同样的原始数据记录到某个输出文件中。在我们调试jmeter项目时,需要用到这些结果查看器,在正式进行压测时,需要将这些结果器都禁用了,不然会很容易将jmeter 运行机器的io耗尽导致机器假死

  • JMeter八大元件及元件运行顺序,作用域的理解

  • 定时器:在默认情况下,JMeter发送每个请求之间是没有延时的,如果采用默认方式,如果线程数足够大,瞬间就会将服务器压死。再则在实际的业务过程中,请求之间是有一定时间的停顿的所以在请求之间设置合理的延时是必须的,也是更接近用户真实业务情况。在JMeter中,定时器组件提供了系列不同类型的延时控制。合理使用定时器组件,能让你的性能测试更接近真实,更能挖掘出系统的瓶颈和评估系统的性能指标。定时器是在它作用域内的所有取样器执行之前执行生效。定时器最主要的作用就是用来控制测试场景的吞吐量大小,类似于LoadRunner里面的TPS。

  • JMeter八大元件及元件运行顺序,作用域的理解

  • 后置处理器:前置处理器,用于对于采集器进行处理,且是在sampler启动之前,此处和后置处理器是有所区别的。

  • JMeter八大元件及元件运行顺序,作用域的理解

  • 前置处理器:后置处理器,用于对于采集器进行处理,和前置处理器相反,是在sampler启动之后。

  • JMeter八大元件及元件运行顺序,作用域的理解

  • 断言:断言用于验证被测试对象是否返回了预期的结果.在Jmeter中断言一般针对response,但也可以对request进行断言。

  • JMeter八大元件及元件运行顺序,作用域的理解

  • 响应断言:响应断言允许用户通过添加模式字符串来验证服务器返回的响应数据。
  • JSON断言:如果服务器响应返回的是JSON格式的内容,这时最佳的断言验证类型就是使用[email protected] - JSON Path Assertion。
  • Xpath断言:如果服务器响应返回的是XML格式的内容,这时最佳的断言验证类型就是使用XPath Assertion。数据断言如下
  • JMeter八大元件及元件运行顺序,作用域的理解
  • 测试字段:针对响应数据不同部分进行匹配

  • 响应文本:响应服务器返回的文本内容,http协议排除header部分
  • 响应代码:匹配响应代码,比如http请求中‘200’代表成功
  • 响应信息:匹配响应信息,处理成功返回‘成功’或者“ok”字样
  • Response Header:匹配响应头中的信息
  • 包括:响应内容包括需要匹配的内容就算成功
  • 匹配:响应内容要完全匹配匹配内容,不区分大小写
  • equals:完全相等,区分大小写
  • substring:响应内容包括匹配内容即为成功。

元件执行顺序

JMeter八大元件及元件运行顺序,作用域的理解

元件作用域

元件收集其作用范围的每一个sampler元件的信息并呈现。在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是:

  1. 取样器(sampler)元件不和其它元件相互作用,因此不存在作用域的问题。
  2. 逻辑控制器(Logic Controller)元件只对其子节点中的取样器 和 逻辑控制器作用。
  3. 除取样器 和逻辑控制器 元件外,其他6类元件,如果是某个sampler的子节点,则该元件公对其父子节点起作用。
  4. 除取样器和逻辑控制器元件外的其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。

示例一:

JMeter八大元件及元件运行顺序,作用域的理解

取样器(HTTP请求1 、FTP请求2 、TCP取样器3)逻辑控制器(循环控制器) 监听器(图形结果1、聚合报告2)

1.HTTP请求1 、FTP请求2 、TCP取样器3元件没有作用域的概念。

2.循环控制器元件作用域是其子节点FTP请求2、TCP取样器3 。

3.图形结果1 元件的作用域是是FTP请求2、TCP取样器3。

4.聚合报告2 元作的作用域是HTTP请求1、FTP请求2 、TCP取样器3