Jmeter系统学习
创始人
2024-05-03 15:11:31
0

Jmeter体系结构

Jmeter概念:

元件:每一个功能,例如Http请求,响应断言等。

组件:每一类元件的组合,例如采样器,配置元件。

Jmeter体系可以分为3个维度:

  • X1--X5:负载模拟的过程。
  • Y1:负载模拟过程。Y2:负载模拟结果验证
  • Z:负载结果收集。

JMeter基本原理是建立一个线程池, 多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果。 如果取样器中有参数化的需求,可以通过X2 中的配置元件或者前置处理器来完成。 如果有关联需求, 可以通过后置处理器来完成。 如果我们想要设置运行场景, 比如模拟 多少用户, 运行多长时间, 就设置线程组。如果我们想要模拟并发场景, 可以利用定时器来设置:如果我们想要控制业务的执行逻辑,比如登录只运行一次, 我们可以用控制器来完成。

各组件介绍

取样器:模拟用户操作,向服务器发送请求。

断言:用来验证结构是否正确。

监听器:模拟操作结果收集。

前置处理器:请求发送前,做一些环境或者参数准备的工作,可以使用前置处理器。

配置元件:请求配置元件。

后置处理器:用于处理请求处理的结果。

控制器:用于控制处理逻辑。

定时器:

线程组:模拟用户,一线程一用户。

Test Fragment·:辅助组件,几乎可以放置任何元件。它一般不会运行。作用:1、脚本开发过程中备份元件,2:其下的元件可以被模块控制器调用,用来模块化请求。

Jmeter测试计划要素

脚本中测试计划(TestPlan)仅能有一个。

测试计划必须要有一个线程组。

至少要有一个取样器。

至少要有一个监听器。

Jmeter脚本开发

Jmeter Http协议录制

  • Http代理方式录制
  • Badboy方式录制

在同一作用域名范围内(不考虑逻辑控制器),测试计划中的元件按照如下顺序执行。
(1)配置元件(config elements )
(2)前置处理程序(Per-processors)
(3)定时器(timers )
(4)取样器(Sampler)
(5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)
(6)断言(Assertions)(除非Sampler 得到的返回结果为空)
(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)

Jmeter元件

组件元件功能参数
SamperFTP Request
HTTP Request
JDBC Request
Java Request
LDAP Request
LDAP Extended Request
Access Log Sampler
BeanShell Sampler
JSR223 Sampler
TCP Sampler
JMS Publisher
JMS Subscriber
JMS Point-to-Point
JUnit Request
Mail Reader Sampler
Flow Control Action (was: Test Action )
SMTP Sampler
OS Process Sampler
MongoDB Script (DEPRECATED)
Bolt Request
Logic ControllerSimple Controller指定一个控制单元,不改变元件的执行顺序
Loop Controller控制器在每个线程中运行次数。Loop Count:循环次数。-1等同forever
Once Only Controller仅一次控制器,此控制器在每个线程中只会运行一次,无论多少个循环
Interleave Controller下属元件交互执行,是全部执行次数交替,不是每次循环。ignore sub-controller blocks:无视子控制器,每个元件作为一个独立执行节点
Interleave across threads:交替控制器下的请求将应用至所有线程和循环中迭代
Random Controller随机选择一个元件执行。ignore sub-controller blocks:无视子控制器,每个元件作为一个独立执行节点
Random Order Controller随机选择一个元件执行。但是会选择未执行的节点。
Throughput Controller控制其下的子节点的执行次数,无吞吐量控制功能。Percent executions:百分比计算执行次数。以整个执行计划作为基数。不受Per User影响。
Total executions:执行多少次后终止。
Per User:是否每个用户都执行total 次。
Runtime Controller控制子元件的执行时长(秒)。0则不执行。
If Controller满足表达式,则执行。Evaluate for all children:是否针对子节点。
While Controller下属元件一直运行到表达式为false。下标可以通过变量__jm____idx获取。Condition:条件。
blank:有取样器失败则退出。
LAST:最后一个取样器失败,则退出。
variable/function
Switch Controller指定下属元件执行。匹配指定序号和名称(name),则执行。序号超出范围,则0号执行,名称不匹配,则default执行,无default,则控制器不执行。Switch Value:下属元件序号,从0开始。也可以是元件name。
ForEach Controller每个取样器执行N次。输入变量为null,则不执行此次循环。下标可以通过变量__jm____idx获取Input variable prefix:输入变量前缀。
Start index for loop:开始下标,第一个元素下标为index + 1。
End index for loop:结束下标。(包含在内)
Output variable:输出参数名称
数字前是否加前缀"_".
Module Controller
Include Controller用来导入外部测试片段。测试计划不能有线程组,只能有一个简单控制器和其下元件。
Transaction Controller事务控制器,用于统计整个流程。
Recording Controller录制脚本放置此节点下。
Critical Section Controller关键部分控制器,用于核心部分的控制,确保其子节点下的取样器或控制器在一个线程中仅会执行一次
ListenersSample Result Save Configuration
Graph Results
Assertion Results
View Results Tree
Aggregate Report
View Results in Table
Simple Data Writer
Aggregate Graph
Response Time Graph
Mailer Visualizer
BeanShell Listener
Summary Report
Save Responses to a file
JSR223 Listener
Generate Summary Results
Comparison Assertion Visualizer
Backend Listener
Configuration
Elements
CSV Data Set Config
FTP Request Defaults
DNS Cache Manager
HTTP Authorization Manager
HTTP Cache Manager
HTTP Cookie Manager
HTTP Request Defaults多个HTTP请求的默认值
HTTP Header Manager
Java Request Defaults
JDBC Connection Configuration
Keystore Configuration
Login Config Element
LDAP Request Defaults
LDAP Extended Request Defaults
TCP Sampler Config
User Defined Variables
Random Variable生成随机数字
Counter记录迭代次数
Simple Config Element
MongoDB Source Config (DEPRECATED)
Bolt Connection Configuration
AssertionsResponse Assertion
Duration Assertion
Size Assertion
XML Assertion
BeanShell Assertion
MD5Hex Assertion
HTML Assertion
XPath Assertion
XPath2 Assertion
XML Schema Assertion
JSR223 Assertion
Compare Assertion
SMIME Assertion
JSON Assertion
JSON JMESPath Assertion
TimersConstant Timer固定时间定时器
Gaussian Random Timer高斯随机数,可用于模拟思考时间
Uniform Random Timer让线程暂停一个随机时间。
Constant Throughput Timer用于平稳吞吐量。
Precise Throughput Timer
Synchronizing Timer同步定时。用于并发同时执行
BeanShell Timer
JSR223 Timer
Poisson Random Timer
Pre ProcessorsHTML Link Parser
HTTP URL Re-writing Modifier
User Parameters
BeanShell PreProcessor
JSR223 PreProcessor
JDBC PreProcessor
RegEx User Parameters
Sample Timeout
Post-ProcessorsRegular Expression Extractor
CSS Selector Extractor (was: CSS/JQuery Extractor )
XPath2 Extractor
XPath Extractor
JSON JMESPath Extractor
Result Status Action Handler
BeanShell PostProcessor
JSR223 PostProcessor
JDBC PostProcessor
JSON Extractor
Boundary Extractor
Threads
(Users)
Thread Group
tearDown Thread Group
setUp Thread Group
Test Plan
No-Test ElementsHTTP(S) Test Script Recorder (was: HTTP Proxy Server )
HTTP Mirror Server
Property Display

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...