JMeter基础---全组件目录

https://blog.csdn.net/paidaxing_dashu/article/details/102677738html

组件介绍
1)线程组
2)配置元件
3)定时器
4)前置处理器
5)取样器
6)后置处理器
7)逻辑控制器
8)断言
9)监听器
10)函数java

概述正则表达式


1)线程组
序号 名称 含义
原生线程组有:
1) setUp线程组 不管何种状况下,最早执行的线程组,页面配置同线程组
2) tearDown线程组 不管何种状况下,最后执行的线程组,页面配置同线程组
3) 线程组 最经常使用的
可安装插件新增:安装参考 参考案例
4) bzm - Arrivals Thread Group 到达线程组,模拟用户在一段时间内的操做次数,达到这个负载。
5) bzm - Free-Form Arrivals Thread Group 自由格式到达线程组,相似到达线程组,能够同时添加多个到达(迭代)设置。
6) jp@gc - Stepping Thread Group 步进线程组,阶梯式加压/阶梯式减压,由于能够设置查看加/减压的整个过程。
7) bzm - Concurrency Thread Group 并发线程组,步进线程组的替代方案。
8) jp@gc - Ultimate Thread Group 最终线程组,能够灵活的添加多种不一样的负载方式同时运行。
返回目录数据库

2)配置元件
序号 名称 含义
原生配置元件有:
1) CSV Data Set Config CSV 数据文件设置,用来导入外部文件数据,参数化脚本
参数化操做,数据驱动,注意事项
2) JDBC Connection Configuration JDBC链接配置,链接数据库使用的。参考案例
3) 计数器 能够用来统计迭代次数,数字格式能够本身设置。参考案例
4) Random Variable 数据变量,能够按照指定格式随机输出数字字符。参考案例
5) 用户定义的变量 自定义一系列变量,方便使用。参考案例
6) FTP请求缺省值 FTP Request Defaults,用于设置FTP请求的默认值。参考案例
HTTP属性管理系列五个:参考案例
7) HTTP Cache Manager HTTP 缓存管理器,提供缓存功能,模拟浏览器行为
8) HTTP Cookie 管理器 用来存储浏览器产生的用户信息
9) HTTP信息头管理器 能够添加HTTP请求头 ,设置不一样的请求类型
10) HTTP受权管理器 HTTP Authorization Manager,用于设置自动对一些须要NTLM验证的页面进行认证和登陆,NTLM是WinNT早期版本的标准安全协议
11) HTTP请求默认值 HTTP Request Defaults,设置HTTP请求使用的默认值
LDAP系列:
12) LDAP Extended Request Defaults LDAP扩展请求默认值,为LDAP扩展测试设置默认值
13) LDAP请求默认值 为LDAP测试设置默认值
不经常使用:参考案例
14) Java请求默认值 Java Request Defaults,为Java测试设置默认值。参考案例
15) DNS Cache Manager DNS缓存管理器,提供静态表来管理host,
16) Keystore Configuration 密钥库配置,配置密钥库的加载方式以及它将使用的密钥。
17) TCP取样器配置 为TCP取样器提供默认数据
18) 登录配置元件/素 为提取器添加或重载用户名和密码
19) 简单配置元件 能够在提取器中添加或重载任意值,主要是供开发人员在开发新的JMeter组件时使用的基本GUI
可安装插件新增:安装参考
20) jp@gc - Lock File Config
21) jp@gc - Variables From CSV File
返回目录apache

3)定时器
通常用来设置延迟与同步。优先级高于取样器(提取器)后端

在默认状况下,jmeter发送每一个请求之间是没有延时的,若是采用默认的方式,若是线程数足够大,瞬间就会将服务器压死。再则,实际的业务中,请求之间是有必定时间的停顿的。api

因此在请求之间设置合理的延时是必须的,也是更接近用户真实业务状况。在jmeter中,定时器组件提供了系列不一样类型的延时控制。合理使用定时器组件,可让性能测试更接近真实,更能挖掘出系统的瓶颈和评估系统的性能指标。浏览器

定时器的做用域:缓存

定时器是在每一个请求以前执行的,不管定时器位置是在提取器前面仍是后面
在执行一个请求以前,全部当前做用域内的定时器都会被执行
若是只是但愿定时器仅仅应用于其中一个提取器,则把定时器做为子节点加入
序号 名称 含义
原生定时器有:
1) Constant Throughput Timer 常数吞吐量定时器,控制每分钟请求数量。参考案例
2) Synchronizing Timer 同步定时器,并发数设置用它。参考案例
控制延迟的组件:
3) BeanShell Timer BeanShell定时器可用于生成延迟
4) JSR223 Timer 可以使用JSR223脚本语言生成延迟
控制时停的组件:参考案例
5) Constant Timer 固定定时器,用于添加相同固定的延迟
6) Uniform Random Timer 统一随机定时器,模拟不一样的延迟长度。这有助于在网页上模拟现实的用户行为。
7) Poisson Random Timer 泊松随机定时器,该定时器暂停每一个线程请求一段随机时间,大部分时间间隔发生在特定值附近。总延迟是泊松分布值和偏移值之和。
8) Caussian Random Timer 高斯随机定时器,可让每一个线程在请求之间暂停一段随机时间。总延迟是高斯分布值加偏移值之和。
可安装插件新增:安装参考
9) jp@gc - Throughput Shaping Timer
5.1版本新增的组件
10) Precise Throughput Timer(准确的吞吐量定时器)
返回目录安全

4)前置处理器
处理一些请求前的准备工做,好比参数设置,环境变量设置等。前置处理器用于修饰其范围内的取样器。

序号 名称 含义
原生前置处理器有:
1) 用户参数 容许用户指定特定于各个线程的用户变量的值。
2) JDBC PreProcessor JDBC预处理程序,使您能够在样本运行以前运行一些SQL语句。参考案例
3) RegEx User Parameters 正则表达式用户参数,容许使用正则表达式从一个HTTP请求中提取指定动态值并传递到另外一个HTTP参数。
4) Sample Timeout 取样器超时,若是完成时间过长,此前置处理器会调度计时器任务以中断样本。
5) HTML 连接解析器 此修饰器解析来自服务器的HTML响应并提取连接和表单
6) HTTP URL 重写修饰符 此修饰器与HTML连接分析器的工做方式相似,不一样之处在于它具备比HTML连接分析器更易于使用的特定目的,而且效率更高。
须要运行代码的组件:
7) BeanShell PreProcessor BeanShell预处理程序,容许在采样以前应用任意代码。
8) JSR223 PreProcessor JSR223预处理程序,容许在采样以前应用JSR223脚本代码。
可安装插件新增:安装参考
9) jp@gc - Inter-Thread Communication PreProcessor 做用是跨线程组传递数据,相似函数_setProperty 和 _property,须要配合后置处理器jp@gc - Inter-Thread Communication PostProcessor来使用。参考案例
10) jp@gc - Raw Data Source PreProcessor 原始数据源预处理器,参考案例
返回目录

5)取样器
模拟用户在客户端发起的请求

取样器执行JMeter实际的工做。每一个取样器( 测试活动 除外)生成一个或多个样本结果。样本结果具备各类属性(成功/失败,通过时间,数据大小等),而且能够在各类监听器中查看。

序号 名称 含义
原生取样器有:
1) HTTP Request 参考案例
2) JDBC Request 此取样器容许您将JDBC请求(SQL查询)发送到数据库。参考案例
3) JUnit Request 当前实现支持标准JUnit约定和扩展。
4) FTP请求 从ftp上下载文件,和上传文件到ftp中。参考案例
5) Java请求 java请求和jp@gc - Dummy Sampler(虚拟取样器)做用差很少,能够用来模拟一个接口的请求和返回。参考案例
6) Debug Sampler 调试取样器,就是用来查看咱们后置处理器提取的数据是否正确。参考案例
7) AJP/1.3 Sampler
8) Access Log Sampler 访问日志采样器,AccessLogSampler旨在读取访问日志并生成http请求。
JMS系列组件:
9) JMS Point-to-Point JMS 点到点,此取样器经过点到点链接(队列)发送并可选地接收JMS消息。与发布/订阅消息不一样,它一般用于处理事务。
10) JMS Publisher JMS 发布,JMS发布将消息发布到给定目标(主题/队列)。
11) JMS Subscriber JMS 订阅,JMS订阅将订阅给定目标(主题或队列)中的消息。
LDAP系列组件:
12) LDAP Extended Request LDAP扩展请求,此取样器能够将全部8个不一样的LDAP请求发送到LDAP服务器。它是LDAP取样器的扩展版本,所以配置起来比较困难,但能够更接近真实的LDAP会话。
13) LDAP请求 此取样器容许向LDAP服务器发送不一样的LDAP请求(添加,修改,删除和搜索)。
须要代码的组件:
14) JSR223 Sampler 使用JSR223脚本代码来执行一个样本或建立/更新变量所需的一些计算。
15) BeanShell Sampler 使用BeanShell脚本语言编写取样器。
不经常使用:
16) SOAP/XML - RPC Request
17) OS Process Sampler OS进程取样器,OS进程取样器是一个可用于在本地计算机上执行命令的取样器。
18) Test Action 测试活动,测试活动取样器是一个适用于条件控制器的取样器。测试元件不是生成样本,而是暂停或中止所选目标。参考案例
19) SMTP Sampler SMTP取样器可使用SMTP/SMTPS协议发送邮件。能够为链接(SSL和TLS)以及用户身份认证设置安全协议。若是使用安全协议,则将对服务器证书进行验证。
20) TCP取样器 TCP取样器打开与指定服务器的TCP/IP链接。而后发送文本,并等待响应。
21) Mail Reader Sampler 邮件阅读者取样器,可使用POP3(S)或IMAP(S)协议读取(可选删除)邮件消息。
可安装插件新增:安装参考
22) jp@gc - Dummy Sampler 虚拟取样器,参考案例
23) jp@gc - HTTP Raw Request HTTP原始请求,
24) jp@gc - UDP Request
返回目录

6)后置处理器
请求是用来模拟用户请求,有时候服务器的响应数据在后续请求中须要用到,咱们势必要对这些响应数据进行处理,后置处理器就是用来完成这项工做的。

序号 名称 含义
原生后置处理器有:
1) 正则表达式提取器 将响应数据进一步提取供后面使用。提取文本内容参考案例
2) XPath Extractor 该测试元素容许用户使用XPath查询语言从结构化响应-XML或(X)HTML中提取值。提取页面元素属性值
3) JSON Extractor 可使用JSON-PATH语法从JSON响应中提取数据。该后处理器与正则表达式提取器很是类似。参考案例
4) JDBC PostProcessor JDBC后置处理程序使您能够在样本运行后当即运行一些SQL语句。若是JDBC样本更改了某些数据,而且您但愿将状态重置为JDBC样本运行以前的状态,那么这将很是有用。参考案例
5) Debug PostProcessor 调试后置处理程序,做用和调试取样器同样。参考案例
6) CSS/JQuery Extractor 容许用户使用CSS选择器语法从服务器HTML响应中提取值。参考案例
7) Result Status Action Handler 结果状态处理器,此测试元件容许用户在相关取样器发生故障后中止线程或整个测试。
须要代码的组件:
8) BeanShell PostProcessor
9) JSR223 PostProcessor
可安装插件新增:安装参考
10) jp@gc - Inter-Thread Communication PostProcessor 做用是跨线程组传递数据,相似函数_setProperty 和 _property,须要配合前置处理器jp@gc - Inter-Thread Communication PreProcessor来使用。参考案例
11) jp@gc - XML Format Post Processor
返回目录

7)逻辑控制器
控制器用于在线程组内经过Sampler(提取器)实现各类测试逻辑,能够定义提取器执行的条件

序号 名称 含义
原生逻辑控制器有:
控制如何循环执行的:
1) Loop Controller 循环控制器,控制在其下面的子元素循环执行。参考案例
2) ForEach Controller 遍历一组相关变量的值。参考案例
3) While Controller 循环执行其下面的测试元件,直到写入的条件为False。 参考案例
4) Alternate controller 交替控制器,交替执行其下面的测试元件。参考案例
5) Random Controller 随机控制器,每次循环随机执行一个。参考案例
6) Random Order Controller 随机顺序控制器,其下面的测试元件所有执行,可是顺序是随机的
控制执行条件的:
7) 若是(if)控制器 If控制器容许用户控制其下方的测试元件(其子元件)是否运行。
8) Switch Controller Switch控制器的做用相似于交替控制器,它在每次迭代时运行一个子元件,但控制器运行顺序不是按排列顺序,而是按switch value定义。
9) Throughput Controller 吞吐量控制器,控制该控制器下采集器执行的频率。参考案例
10) Runtime Controller 运行时长控制器,控制其下面的测试元件运行执行的时间
11) Once Only Controller 仅一次控制器,控制在其下面的测试原件仅执行一次(若是它的父级是循环控制器的话,每一次循环都会执行一次)
12) Critical Section Controller 临界部分控制器,确保这个控制器下的测试元素在一个线程中执行
功能性:参考案例
13) Simple Controller 简单控制器,使用率最高的控制器之一,没有特殊做用,就是单纯的为提取器和其余逻辑控制器作区分
14) Transaction Controller 事务控制器,生成一个额外的采集器,用于测量嵌套在其内的测试元素执行的总时间
15) Module Controller 模块控制器,执行到该模块控制器时,会执行该控制器指定的目标控制器
16) Include Controller 包含控制器,加载一个外部的JMX文件,配合测试片断元件使用
17) Recording Controller 录制控制器 ,是一个存放位置,在使用HTTP代理服务器的时候,全部录制的采样都被保存在录制控制器下
可安装插件新增:安装参考
18) bzm - Weighted Switch Controller 加权开关控制器,按照设置的权重比来执行该子元素。 参考案例
19) jp@gc - Parameterized Controller 参数化控制器,若是须要使用不一样的参数执行相同动做的重复序列,则可使用“参数化控制器”插件 参考案例
返回目录

8)断言
断言就是让程序代替人工,去判断程序响应数据是否达到预期结果
程序更安全,高效,功能强大
序号 名称 含义
原生断言)
1) 响应断言 对服务器的响应内容进行断言。参考案例
2) Compare Assertion 比较断言,
3) MD5Hex断言 针对参数类型为MD5Hex加密的参数的断言
4) Size Assertion 对响应内容的大小进行断言
5) SMIME Assertion
8) XML Schema Assertion
9) XML断言
10) XPath Assertion
12) 断言持续时间 断言响应时间的。
10) HTML Assertion
11) JSR223 Assertion
12) BeanShell 断言
返回目录

9)监听器
序号 名称 含义
可安装插件新增:安装参考
基本数据展现:参考案例
1) 察看结果树 显示所有请求的响应和请求数据,不管成功或是失败。压力测试不要用。
2) 用表格察看结果 表格式的察看结果树,为每一个样本建立一行,使用大量内存。用于快速估计被测系统的行为。 压力测试不要用
3) 断言结果 帮助咱们显示断言的结果,不显示经过的断言。压力测试不要用。
4) Comparison Assertion Visualizer 比较断言可视化器 ,
5) Backend Listener 后端监听器,后端侦听器是一个异步侦听器。
6) jp@gc - Console Status Logger 外部插件,控制台状态记录器
7) jp@gc - Page Data Extractor 外部插件,页面数据提取程序
8) jp@gc - Transaction Throughput vs Threads 外部插件,吞吐量和线程关系图
聚合数据展现:参考案例
9) 聚合报告 聚合报告为测试中的每一个不一样命名的请求建立一个表行。展现请求响应时间,吞吐量等数据结果。
10) Summary Report 汇总报告,这是为测试中的每一个不一样名字的请求建立一个表行。和聚合报告相似,只是它使用更少的内存。
11) Aggregate Graph 汇总图,汇总图与聚合报告相似。主要区别在于汇总图提供了一种生成条形图并将图形保存为PNG文件的简便方法。
12) 图形结果 图形结果监听器生成一个简单的图形,用于绘制全部取样时间。压力测试不要用。
13) Generate summary results 生成概要结果,该组件可让结果在CMD(Windows 系统下)窗口显示。
14) jp@gc - Graphs Generator 外部插件,图形生成器,生成多种指标数据图,为当前测试结果生成CSV / PNG。
15) jp@gc - Synthesis Report (filtered) 外部插件,可过滤的聚合报告,综合报告是摘要报告和汇总报告之间的混合。
文件写出:参考案例
16) Simple Data Writer 简单数据写入器,没有图形化显示结果,更加高效的执行保存测试结果。
17) 保存响应到文件 用来存储服务器响应数据。
18) jp@gc - Flexible File Writer 外部插件,灵活的文件编写器,更灵活的简单数据录入。
代码自定义和系统管理:
19) JSR223 Listener
20) BeanShell Listener
21) jp@gc - PerfMon Metrics Collector 外部插件,接收的CPU使用率,存储器消耗,磁盘和网络利用率度量,并提供报告。
22) jp@gc - AutoStop Listener 外部插件,自动中止监听,配置为若是响应时间超过某个值或错误百分比率高于定义的限制,则测试将中止执行。参考案例
23) jp@gc - Composite Graph 外部插件,组合式监听,合并来自脚本中配置的其余侦听器的全部信息。 参考案例
24) 邮件观察仪 设置在必定状况给不一样人员发送邮件通知。参考案例
跟随测试时间的指标监控:参考案例
25) jp@gc - Active Threads Over Time 外部插件,测试时间和活动线程关系图
26) jp@gc - Connect Times Over Time 外部插件,测试时间和链接时间关系图
27) jp@gc - Bytes Throughput Over Time 外部插件,测试时间和字节吞吐量关系图
28) jp@gc - Hits per Second 外部插件,测试时间和点击量关系图
29) jp@gc - Response Codes per Second 外部插件,测试时间和响应代码关系图
30) jp@gc - Response Latencies Over Time 外部插件,测试时间和响应延迟关系图
31) jp@gc - Transactions per Second 外部插件,测试时间和事务数关系图
32) jp@gc - JMXMon Samples Collector 外部插件,测试时间和JMX性能指标关系图
33) jp@gc - DbMon Samples Collector 外部插件,测试时间和SQL读写性能的关系图
跟随响应时间的指标监控:参考案例
34) Response Time Graph 响应时间图,以图形的形式显示取样器的响应时间结果,单位是毫秒。
35) jp@gc - Response Times Over Time 外部插件,响应时间和测试时间关系图
36) jp@gc - Response Times Distribution 外部插件,响应时间柱状分布图
37) jp@gc - Response Times Percentiles 外部插件,响应时间百分比
38) jp@gc - Response Times vs Threads 外部插件,响应时间和活动线程数关系图
返回目录

10)函数
Jmeter 中使用函数,打开内置函数功能模块
选择要调用的函数,传参数,生成调用格式
哪里须要粘哪里
是程序中的封装单元(最小的),封装一些功能实现 易读,易维护 实现功能复用
启动方式:

菜单(选项)–>函数助手对话框
Ctrl+Shift+F1
工具栏倒数第二个 图标"记事本"

函数的格式:.

${__functionName(var1,var2,var3)}

1) ${} 函数引用固定格式和参数化相同
2) __functionName匹配被调用的函数名称;
3) 用圆括号包含函数的形参,例如${__time(YMD)},不一样函数要求的参数也不一样;
4) 有些JMeter函数不要求参数,则能够不使用圆括号,例如${__threadNum};
1
2
3
4
5
6
内容 **Jmeter中的函数列表按照字母的顺序展现依次为:**
字母 函数 含义
B base64Decode
base64Encode
BeanShell
C changeCase
char
chooseRandom
counter
CSVRead
D dateTimeConvert
digest
doubleSum
E env
escapeHtml
escapeOroRegexpChars
escapeXml
eval
evalVar
F fifoGet
fifoPop
fifoPut
fifoSize
FileToString
G groovy
I if
intSum
isDefined
isPropDefined
isVarDefined
iterationNum
J javaScript
jexl2
jexl3
L log
logn
longSum
lowercase
M machineIP
machineName
MD5
P P
property
R Random
RandomDate
RandomFromMultipleVars
RandomString
regexFunction
S samplerName
setProperty
split
StringFromFile
strLen
strReplace
substring
T TestPlanName
threadGroupName
threadNum
time
timeShift
U unescape
unescapeHtml
uppercase
urldecode
urlencode
UUID
V V
X XPath
返回目录

学习地址:

Jmeter官方文档:http://jmeter.apache.org/usermanual/component_reference.html#ForEach_Controller
Jmeter外部插件集:
https://www.cnblogs.com/baihuitestsoftware/articles/7798032.html
全栈测试笔记:
https://www.cnblogs.com/UncleYong/p/10779268.html#_label6
blazemeter:
https://www.blazemeter.com/jmeter/
虫师:
https://www.cnblogs.com/fnng/
飞天小子:
https://www.cnblogs.com/Zfc-Cjk/category/1164772.html
老张:
https://www.cnblogs.com/imyalost/category/846346.html
乔治Maksimenko博客:
https://www.blazemeter.com/blog/how-to-use-the-arrivals-thread-group-and-the-free-form-arrivals-thread-group/
Noga Cohen博客:
https://www.blazemeter.com/blog/performance-testing-vs-load-testing-vs-stress-testing/
书籍:

《全栈性能测试修炼宝典JMeter实战》

————————————————版权声明:本文为CSDN博主「paidaxing_dashu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。原文连接:https://blog.csdn.net/paidaxing_dashu/java/article/details/102677738

相关文章
相关标签/搜索