概述
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 | |
返回目录
3)定时器
使用简介
插件安装
序号 | 名称 | 含义 |
---|
原生定时器有: |
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)取样器
插件安装
取样器简介1
取样器简介2
取样器简介3
序号 | 名称 | 含义 |
---|
原生取样器有: |
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
逻辑控制器2
序号 | 名称 | 含义 |
---|
原生逻辑控制器有: |
控制如何循环执行的: |
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};
内容 **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 | |
返回目录
学习地址:
书籍: