Jmeter核心组件说明

Apache JMeter是Apache组织开发的基于Java的压力测试工具,主要有以下作用:

1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)

2.完全的可移植性和100% 纯java

3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。

4.完全多线程 框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样

5.精心的GUI设计允许快速操作和更精确的计时

6.缓存和离线分析/回放测试结果

一   JMETER安装及相关环境变量设置

https://blog.csdn.net/qq_34661227/article/details/51482133

二   常用组件介绍

启动jmeter:安装目录下bin目录中的jmeter.bat即可

1、测试计划

 用来描述测试,包含与本次测试所有相关的功能threads(users)线程用户

2、线程组

setup thread group:特殊类型的线程组,可用于执行预测试操作

teardown thread group:特殊类型的线程组,可用于执行测试后动作

thread group(线程组):通常添加运行的线程,开通多少个线程就代表有多少个并发用户

线程数:请求并发的数量

Ramp-Up Period(in seconds):在多少秒内创建线程数中定义的所有线程。每秒并发数 = 线程数/RUP

循环次数:当前线程组中的测试脚本循环运行次数

调度器:用来控制并发执行时长的,可设置开始时间、结束时间、延迟时间(类似LR中的思考时间)

3、test fragment(测试片段)

控制器上的一个特殊的线程组,它在测试树上与线程处于一个层级。它与线程组有所不同,它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行

4、控制器

JMETER有两种类型的控制器:取样器(sample)和逻辑控制器(logiccontroller),用这些原件来驱动一个测试

逻辑控制器

包括两类元件。一类是用于控制test plan 中sampler节点发生请求的逻辑顺序的控制器,常用的有如果(if)控制器、switch controller、runtime

controller、循环控制器等。另一类是用于组织可控制sampler来节点的,如事务控制器、吞吐量控制器。

详解:

简单控制器:方便用户组织sampler和其他logic controller,提供一个块的结构和控制,提供分组存放功能,不具备任何逻辑控制或运行时的功能

循环控制器:指定子节点运行的次数,“永远”选项被勾选,将忽略设置的循环数值,永远循环运行,若同时设置了线程组的循环次数和循环控制器,子节点运行的次数为两个数组相乘的结果。

仅一次控制器:在测试执行期间,该控制器下的子节点对每个线程仅运行一次( 登录场景会经常使用),将仅一次控制器作为循环控制器的子节点时,仅一次控制器在每次循环的第一次迭代时

会被执行(放在设置循环的线程中时,仅一次控制器的子节点也仅执行一次)

交替控制器(interleave): 迭代中循环执行交替控制器中的一个子节点(控制器除外), 如交替控制器中存在子节点A和B,线程迭代5次,第一次迭代执行A,第二次迭代执行B...以此类推

忽略资控制器块:被选中时,交替控制器会将子控制器作为独立的请求元素,一次仅允许执行一个请求

随机控制器:与交替控制器类似,只是每次迭代时是随机执行其下某个子节点(交替控制器为按顺序依次执行)

随机顺序控制器:其下子节点随机执行,所有子节点必须执行但仅执行一次

吞吐量控制器:允许用户通过以下两种方法控制执行频率

执行时间控制器:控制子节点的执行时间

if控制器:控制子节点的执行条件(满足条件则执行,不满足条件不执行)。默认使用JavaScript语法

while控制器:控制子节点运行直到条件为“false”

switch控制器:指定执行某个子节点

switch value:

  1)数字:执行排序为该数字的节点(从0开始计数)

  2)数字超过子节点数或值为空:执行第一个节点

  3)节点名字:执行对应名字的节点

  4)指定的节点名字不存在:执行name为default的子节点,若无此子节点,不执行任何操作

forEach控制器:一般和用户自定义变量一起使用,在其中读取一系列相关变量。

模块控制器:控制仅运行哪些模块

包含控制器:用于使用外部jmx文件

事务控制器:会产生一个额外的sampler,用于统计该控制器下子节点的所有时间

录制控制器:指明代理服务器在何处录制脚本。在测试运行期间,无任何影响;但当使用 HTTP(S) Test Script Recorder录制时,所有录制的样品默认情况下将存放在录制控制器中

critical section控制器:控制子节点仅能被一个线程执行


取样器(sample)

性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMETER原生支持多种不同的sample,比如 http

请求、FTP请求等,每种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求。

取样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。取样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。

 

5、配置元件(config element)

用于提供对静态数据配置的支持。CSV date set config可以将本地数据文件形成数据池(date pool),而对应于http request sampler

和TCP request sampler等类型的配置元件则可以修改sampler的默认数据。(例如,http cookie manager 可以用于对http request sampler 的cookie进行管理)

6、定时器(timer)

JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。

定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为

采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。JMETER定义了bean shell timer、constant throughput timer、固定定时器等不同类型的timer。

7、前置处理器(per processors)

用于在实际的请求发出之前对即将发出的请求进行特殊处理。(例如,http URL重写修复符则可以实现URL重写,当URL中

有session ID一类的session信息时,可以通过该处理器填充发出请求的实际的session ID。

8、后置处理器(post processors)

对sampler发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似lr测试工具中的关联概念,

例如,XPATH EXTRACTOR则可以用于提取响应数据中通过给定XPATH值获得的数据。)

9、断言(assertions)

检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用于保证测试过程中的数据交互是否和预期一致。

10、监听器

对测试结果数据进行处理和可视化展示的一系列元件。图形结果、察看结果树、聚合报告。都是常用到的元件。

常见的层次结构

三   执行顺序与作用域

执行顺序:

同一线程组下

(1)配置元件(config elements )

(2)前置处理程序(Per-processors)

(3)定时器(timers )

(4)取样器(Sampler)

(5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)。

(6)断言(Assertions)(除非Sampler 得到的返回结果为空)

(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)

作用域:

在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是

采样器(sampler):元件不和其它元件相互作用,因此不存在作用域的问题

逻辑控制器(Logic Controller):元件只对其子节点中的取样器 和 逻辑控制器作用

除采样器 和 逻辑控制器 元件外,其他6类元件,如果是某个sampler的子节点,则该元件只对其父子节点起作用

除采样器和逻辑控制器元件外的其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

特殊说明:配置元件(Config Elemnet)-->用户自定义变量组件(User Defined Variables):这个组件不管放在哪个位置,它定义的变量都会被整个线程所共享

猜你喜欢

转载自blog.csdn.net/zh123a/article/details/80085695
今日推荐