Jmeter-界面功能介绍

之前已经介绍过了jmeter的安装以及部分简单使用,这篇文章主要用来详细描述Jmeter的界面功能
jmeter界面包括五个部分:标题栏、菜单栏、常用工具栏、测试计划标签、测试计划标签内容’
Jmeter-界面功能介绍_第1张图片

标题栏

记录计划的标题、jmeter的版本信息

菜单栏

文件

Jmeter-界面功能介绍_第2张图片

子菜单 描述
新建 新建一个测试用例
模板 常用用例模板指导
打开 打开一个新的jmx文件
最近打开 打开最近使用过的jmx文件
合并 合并多个jmx文件
保存测试计划 保存当前编辑的测试计划,不包括测试工作台相关内容
保存测试计划为 将当前编辑的测试计划保存为另一个指定的jmx文件,不包括测试工作台内容的相关编辑
选中部分保存为 将当前编辑的测试计划选中部分,另存为一个指定的jmx文件,包括测试工作台内容的相关编辑
保存为测试片段 只能保存除线程组、测试计划、工作台之外的测试片段
还原 将修改后的jmx还原为上一次已经保存过的jmx
重启 重新启动jmeter

模板-Templates:

用例模板
BeanShell Sampler 简单的BeanShell用例 (BeanShell 一种类似于java的脚本语言)
Building a SOAP WebService Test Plan 创建一个SOAP web服务的测试计划(SOAP 一种简单XML协议,使程序通过HTTP进行通信)
Building a Web Test Plan 创建一个web测试用例
Building an Advanced Web Test Plan 创建一个优化版本的测试计划
Building an Extended LDAP Test Plan 创建一个扩展的LDAP测试用例 (LDAP 一种轻型目录访问协议,通过IP协议提供访问控制和维护分布式信息的目录信息,常用于单点登录)
Building an LDAP Test Plan 创建一个LDAP测试计划(LDAP 一种轻型目录访问协议,通过IP协议提供访问控制和维护分布式信息的目录信息,常用于单点登录)
Building an FTP Test Plan 创建一个FTP测试计划(FTP 一种文件传输协议)
Functional Testing Test Plan [01] 功能测试测试计划
JDBC Load Test JDBC压力测试(JDBC java数据库)
MongoDB Load Test MongoDB压力测试
JSR223 Sampler using Groovy 使用Goovy的JSR223用例(JSR223 java中的script脚本引擎)
Recording 录制脚本
Recording with Think Time 录制带有思考时间的脚本(更真实模拟用户操作)
Think Time at a point 在某时刻设置思考时间

OverView:模板简介
Useful links:使用帮助文档链接

编辑

(对选中的标签进行处理(也可选中相应标签,右击鼠标))

  • 选中计划,点击编辑(或者右击鼠标):

Jmeter-界面功能介绍_第3张图片

子菜单 功能
添加 为计划添加相关测试组件
粘贴 将剪切板中的组件内容粘贴至计划中(仅限于计划下的一级子菜单内容)
打开 打开一个已存在的jmx文件
合并 将多个jmx文件合并成一个jmx文件(仅合并单个文件,不将文件内容合并)
选中部分保存为 将当前计划另存为一个jmx文件
保存节点为图片 将当前标签内容保存为图片形式
保存屏幕为图片 将当前整个jmeter屏幕保存为图片形式
启用 启用当前组件
禁用 禁用当前组件
切换 当前选中取样器禁用和启用两种状态的切换
帮助 官方帮助使用jmeter文档
  • 选中线程,点击编辑(或者右击鼠标):
    Jmeter-界面功能介绍_第4张图片
子菜单 功能
添加 添加线程下的相关组件
剪切 剪切当前线程组至剪切面板
复制 复制当前线程组
粘贴 将剪切面板中的线程下的相关组件复制到该线程下
复写 复制一份相同的线程组至当前测试计划下
删除 删除该线程组
打开 打开一个已存在的 .jmx文件
合并 将其它线程组与当前选中线程组进行合并
选中部分保存为 将当前线程组保存为一份jmx文件
保存节点为图片 将当前线程组界面内容保存为一张图片形式
保存屏幕为图片 将当前整个JMetre界面保存为图片形式
启用 启用当前选中的线程组
禁用 禁用当前选中的线程组
切换 切换当前线程组的启用和禁用状态
帮助 跳转至介绍线程组使用的官方文档
  • 选中取样器,点击编辑(或者右击鼠标)
    Jmeter-界面功能介绍_第5张图片
子菜单 功能
添加 在取样器下添加相关元件
插入上级 在当前取样器上一级插入逻辑控制器,控制取样器的执行
剪切 将当前取样器剪切至剪切面板中
复制 复制当前取样器
粘贴 将剪切板中的取样器下包含的元件复制到当前取样器下
复写 复制一份相同的取样器至当前线程组下
删除 删除当前取样器
打开 打开一个已存在的 .jmx文件
合并 将其它jmx文件的取样器内容合并至当前取样器下
选中部分保存为 将当前取样器的内容保存为另一份 .jmx文件
保存为测试片段 将当前取样器脚本保存为可复用的测试片段,可在其它模块中进行添加复用
保存节点为图片 将当前取样器内容保存为图片形式
保存屏幕为图片 将当前JMetre界面保存为图片形式
启用 启用该取样器
禁用 禁用该取样器
切换 切换取样器的禁用和启用状态
帮助 点击至介绍取样器使用的官方文档
  • 选中元件,点击编辑(或者右击鼠标):
    监听器会多一个子菜单:清除,其它子菜单功能均与上述子菜单类似
    Jmeter-界面功能介绍_第6张图片

查找

在这里插入图片描述

子菜单 功能
查找 查找/替换标签树中相匹配的标签,点击search All 会将所有模糊匹配成功的标签都标红,只有点击重置搜索,才可恢复
重置搜索 取消查找标记

Jmeter-界面功能介绍_第7张图片

运行

Jmeter-界面功能介绍_第8张图片

子菜单 功能
启动 运行启用状态下的线程组
不停顿开始 直接不停顿运行,忽略定时器
停止 停止测试计划的运行
关闭 关闭测试计划
远程启动 指定一个远程代理运行测试计划
远程启动所有 让所有远程代理运行测试计划
远程停止 指定一个远程代理停止运行测试计划
远程停止所有 让所有远程代理停止运行测试计划
远程关闭 关闭一个指定的远程代理
远程关闭所有 关闭所有远程代理
远程退出 指定一个远程代理退出执行
远程退出所有 所有远程代理退出执行
清除 清除选择菜单中的运行结果数据
清除全部 清除所有历史运行结果数据

选项

Jmeter-界面功能介绍_第9张图片

子菜单 功能
外观 界面展示选择,主要是字体及背景颜色、边框线的区别
日志查看 查看运行日志,启用后会在标签内容下出现
日志级别 选择需要查看相应级别的日志,有6种
SSL管理器 选择相应的SSL证书(在进行https请求时,需要安装SSL证书),每次重启jmeter都需要选择一次
选择语言 选择jmeter使用的描述语言
全部折叠 折叠所有标签
全部展开 展开所有标签
放大 放大整个界面的内容
缩小 缩小整个界面的内容
运行前自动保存 在每次运行测试计划前都自动保存编辑内容

工具

Jmeter-界面功能介绍_第10张图片

子菜单 功能
创建一个堆转储 创建当JVM崩溃的堆转储(堆转储是某个时间点应用程序内存的快照),这个文件可以用堆分析工具(如JHAT),以确定根本原因进行分析
创建一个线程转储 创建当JVM崩溃的线程转储 (线程转储是某个时间点在应用程序中运行的所有线程的快照)
函数助手对话框 在编写脚本的时候,使用函数助手可以协助生成指定的代码,比入随机码,正则过滤等
Generate HTML report 将测试结果输出为html报告
Compile JSR223 Test Elements 编译JSR223测试元素
导出交换报告 导出交换报告
Generate Schematic View(alpha) 生成结构数视图
Import from cURL 导入
函数助手对话框:生成相对应的函数字符串

Jmeter-界面功能介绍_第11张图片
可选函数:

函数 功能
BeanShell 执行传递的脚本,返回相应的结果
changeCase 更改大小写功能返回一个字符串值
char 将一串数字翻译成Unicode字符
counter 计数器,可配置为独立计数器(统计测试计划执行了多少次)或者全局计数器(统计总共请求了多少次)
CSVRead 从CSV文件读取一个字符串,遇到空行停止读取,遇到逗号断行,需区分文件名大小写。支持从多个文件中读取
dataTimeConvert 时间戳转为本地时间
digest 摘要函数在特定的哈希算法中返回加密的值,并带有可选的salt,大写字母和变量名
escapeHtml 将字符转换为HTML格式的字符
escapeOroRegexpChars 把正则表达式转换成Java正则引擎能识别的表达式
escapeXML 转义字符串中的字符(使用HTML实体),例如,“bread” & "butter"变为"bread" & "butter"
eval 执行一个字符串表达式,并返回执行结果.可以对字符串(存储在变量中)中的变量和函数引用做出修改。例如,给定变量name=Smith、column=age、table=birthdays、SQL=select ${column} from ${table} where name=’${name}’,那么通过${__eval(${SQL})},就能执行"select age from birthdays where name=‘Smith’"
evalVar 执行保存在变量中的表达式,并返回执行结果。用户可以从文件中读取一行字符串,并处理字符串中引用的变量。例如,假设变量 query 中包含有 select ${column} from ${table} ,而 column 和 table 中分别包含有 name 和 customers ,那么${__evalVar(query)}将会执行 select name from customers
FileToString 用来读取设置的整个文件,与StringFromFile区别在于,StringFromFile读取的是字符串,并非一次性读取整个文件
groovy 执行Apache Groovy脚本,并返回结果
intSum 用来计算多个整数值的和,最后一个指定的包含字母的参数为其它参数求和的结果变量名,结果变量名非必填
IsPropDefined 判断属性是否存在
isVarDefined 判断变量是否存在
javaScript 执行javaScript代码片段,可作为脚本语言做计算
jexl2 用于执行通用JEXL表达式,并返回执行结果
jexl3 用于执行通用JEXL表达式,并返回执行结果
log 记录日志,并返回函数的输入字符串
logn 记录日志,返回空字符串
longSum 用来计算多个长整型的和,最后一个指定的包含字母的参数为其它参数求和的结果变量名,结果变量名非必填
machineIP 返回本地IP地址
machineName 返回本机主机名
p 简化版的属性函数,目的是使用命令行中定义的属性,若默认值未设定,则默认为1
property 返回一个Jmeter属性的值,如果函数没有返回属性值,也没有指定默认值,则将返回属性的名称
Random 指定最大值和最小值之间的随机数,并指定结果变量名,结果变量名非必填
RandomDate 返回位于给定开始日期和结束日期值之间的随机日期
RandomFromMultipleVars 根据源变量提供的变量值返回一个随机值
RandomString 随机字符串函数
regexFunction 正则表达式函数,可使用正则表达式解析之前服务器响应/变量值,也可用于保存变量值,便于后期调用
samplerName 返回当前采样器的名称
setProperty 设置JMeter属性值,默认返回空字符串,属性对于JMeter是全局的,可以被用来在线程和线程组之间通信
split 通过分隔符来拆分传递的字符串,并返回原始的字符串。连接在一起的分隔符将会返回变量值 ?,拖尾的分隔符也会被认为缺少一个变量,返回 ?
StringFromFile 从文本文件中一行一行地读取字符串,用于处理大文件数据,类似于配置元件CSV Data Set Config的功能。打开/读取文件发生错误时,返回Error
StringToFile 用于将字符串写入文件。每次调用它时,它都会向文件中写入一个字符串,并追加或覆盖该字符串,默认返回空字符串
TestPlanName 返回当前测试计划的名称
threadGroupName 返回当前线程组的名字
threadNum 线程编号,无函数参数,不可使用于配置元件中(不同线程可能拥有相同的线程编号)
time 通过设置不同格式返回当前时间
timeShift 计算时间差,不填写任何参数则返回当前时间
unescape 反转义Java-escaped字符串
unescapeHtml 反转义一个包含HTML实体的字符串,将其变为包含实际Unicode字符的字符串,例如,字符串"<Français>“变为”"
urldecode 使用UTF8编码方案解密application/x-www-form-urlencoded这种类型的字符串
urlencode 加密一个字符串成为application/x-www-form-urlencoded类型的字符串
UUID 返回伪随机类型4通用唯一标识符(UUID)
V 执行变量名表达式,并返回执行结果,可以被用于执行嵌套函数引用
XPath 读取XML文件,并在文件中寻找与指定XPath相匹配的地方。每调用函数一次,就会返回下一个匹配项。到达文件末尾后,会从头开始,如果没有匹配的节点,那么函数会返回空字符串,另外,还会向JMeter日志文件写一条警告信息
  • counter
函数参数 函数参数描述
TRUE,每个用户有自己的计数器;FALSE,使用全局计数器 指定全局计数器或者独立计数器
存储结果的变量名(可选) 指定存储计数值的变量
  • CSVRead
函数参数 函数参数描述
用于获取值的CSV文件 | *别名 设置从哪个文件读取(或者*ALIAS),使用*ALIAS特性可以多次打开同一个文件,另外还能缩减文件名称
CSV文件列号| next| *alias 从文件的哪一列读取。0 =第一列, 1 =第二列,依此类推。next为走到文件的下一行。*ALIAS为打开一个文件,并给它分配一个别名

注意:
1、如果希望在输入的列中使用逗号,那么需要换一个分隔符(通过设置属性csvread.delimiter来实现),且该符号没有在CSV文件的任何列中出现
2、每一个线程都有独立的内部指针指向文件数组中的当前行。当某个线程第一次引用文件时,函数会为线程在数组中分配下一个空闲行。如此一来,任何一个线程访问的文件行,都与其他线程不同(除非线程数大于数组包含的行数)
3、当对某个文件进行第一次读取时,文件将被打开并读取到一个内部数组中,一旦数据量大,将会占用大量内存空间,因此不适用于大数据文件,大数据文件可选择使用StringToFile函数或者CSV Data Set进行存取

  • dataTimeConvert
    Jmeter-界面功能介绍_第12张图片
函数参数 函数参数描述
格式化时间 被转换的时间,为空时,表示当前时间戳,精确到毫秒
源时间格式 被转换时间转换前的时间格式
目标时间格式 被转换时间转换后的时间格式
存储结果的变量名(可选) 转换后时间的引用变量名
  • digest
    Jmeter-界面功能介绍_第13张图片
函数参数 函数参数描述
算法摘要 加密算法,常见的有MD2、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
String to be hashed 需加密的字符串
Salt to be used for hashing (optional) 用于计算散列的盐(可选项)
Upper case result, defaults to false (optional) 结果是否为大写,默认为小写(False),大写为True
存储结果的变量名(可选) 存储加密结果的引用名
  • FileToString
函数参数 函数参数描述
输入文件的全路径 包含路径的文件名(路径可以是相对于JMeter启动目录的相对路径)
File encoding if not the platform default (opt) 读取文件需要用到的文件编码方式。如果没有指明就使用平台默认的编码方式
存储结果的变量名(可选) 引用名(refName)用于重用函数创建的值
  • javaScript
    Jmeter-界面功能介绍_第14张图片
函数参数 函数参数描述
JavaScript expression to evaluate 待执行的JavaScript代码片段
存储结果的变量名(可选) 指定结果变量名,方便后期调用

常见调用变量:

变量 描述
Log 该函数的日志记录器
Ctx JmeterContext对象
Vars JmeterVariables对象
threadName 字符串包含当前线程名称
sampler 当前采样器对象
sampleResult 前面的采样结果对象
props JMeter属性对象
通过它的包对象来访问静态方法 example:访问JMeterContextService静态方法 Packages.org.apache.jmeter.threads.JMeterContextService.getTotalThreads()

注意:为文本字符串添加必要的引号以及对类似于逗号一类字符用 \ 进行转义

  • log
函数参数 函数参数描述
String to be logged (and returned) 待记录的字符串
Log level (default INFO) or OUT or ERR 日志级别,OUT、ERR、DEBUG、INFO(默认)、WARN或者ERROR
Throwable text (optional) 可抛弃的文本,如果非空,会创建一个可抛弃的文本传递给记录器
Additional comment (optional) 注释, 会在字符串中展示,用于标识日志记录了什么

注意:OUT 和ERR的日志级别,将会分别导致输出记录到System.out和System.err中。在这种情况下,输出总是会被打印(它不依赖于当前的日志设置)

  • logn
函数参数 函数参数描述
String to be logged 待记录的字符串
Log level (default INFO) or OUT or ERR 日志级别,OUT、ERR、DEBUG、INFO(默认)、WARN或者ERROR
Throwable text (optional) 可抛弃的文本,如果非空,会创建一个可抛弃的文本传递给记录器

注意:OUT 和ERR的日志级别,将会分别导致输出记录到System.out和System.err中。在这种情况下,输出总是会被打印(它不依赖于当前的日志设置)

  • RandomDate
    Jmeter-界面功能介绍_第15张图片
函数参数 函数参数描述
Format string for DateTimeFormatter (optional) (default yyyy-MM-dd) 生成的随机日期的格式
开始时间(可选)(默认:现在) 可取随机时期开始时间
结束时间 可取随机日期结束时间
String format of a locale (ex: fr_FR , en_EN) (optional) 日期相关的地区信息
存储结果的变量名(可选) 存储随机日期的引用变量名
  • RandomFromMultipleVars
    Jmeter-界面功能介绍_第16张图片
    Jmeter-界面功能介绍_第17张图片
    Jmeter-界面功能介绍_第18张图片
函数参数 函数参数描述
Source Variable(s) (use | as separator) 源数据的变量名,如a|b|c,此时a、b、c均为赋值过的变量,此处不可直接填写源数据
Target Variable 随机获取到的值的引用变量名
  • RandomString
    Jmeter-界面功能介绍_第19张图片
函数参数 函数参数描述
Random string length 随机字符的长度
Chars to use for random string generation 用来生成随机字符串的字符,可以是纯数字,纯字符,字符字母数字组合
存储结果的变量名(可选) 生成的随机字符串变量名
  • regexFunction
函数参数 函数参数描述
用于从前一个请求搜索结果的正则表达式 第1个参数是用于解析服务器响应数据的正则表达式。它会找到所有匹配项。如果测试人员希望将表达式中的某部分应用在模板字符串中,一定记得为其加上圆括号。例如,< a href="(.)" >。这样就会将链接的值存放到第一个匹配组合中(这里只有一个匹配组合)。又如,。在这个例子中,链接的name作为第一个匹配组合,链接的value会作为第二个匹配组合。这些组合可以用在测试人员的模板字符串中(必填项)
Template for the replacement string, using groups from the regular expression. Format is [ g r o u p ] [group] [group]. Example 1 1 1. 这是一个模板字符串,函数会动态填写字符串的部分内容。要在字符串中引用正则表达式捕获的匹配组合,请使用语法: [ g r o u p n u m b e r ] [group_number] [groupnumber]。例如 1 1 1或者 2 2 2 (必填项)
Which match to use. An integer 1 or greater, RAND to indicate JMeter should randomly choose, A float, or ALL indicating all matches should be used ([1]) 第3个参数告诉JMeter使用第几次匹配。填写的正则表达式可能会找到多个匹配项。对此,有4种选择:整数,直接告诉JMeter使用第几个匹配项。"1"对应第一个匹配,"2"对应第二个匹配,以此类推;RAND,告诉JMeter随机选择一个匹配项;ALL,告诉JMeter使用所有匹配项,为每一个匹配项创建一个模板字符串,并将它们连接在一起;浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项,计算值向最近的整数取整 。默认为1(非必填项)
Between text. If ALL is selected, the between text will be used to generate the results ([""]) 如果在上一个参数中选择了“ALL”,那么这个参数会被插入到重复的模板值之间(非必填项)
Default text. Used instead of the template if the regular expression finds no matches ([""]) 如果没有找到匹配项返回的默认值(非必填项)
存储结果的变量名(可选) 重用函数解析值的引用名,如果输入"refName"作为该参数变量名,则:$ {refName}为第2个参数(Template for the replacement string)的计算结果;$ {refName_g0}为函数解析后发现的所有匹配结果;$ {refName_g1}为函数解析后发现的第一个匹配组合;$ {refName_gN}为函数解析后发现的第N个匹配组合;${refName_matchNr}为函数总共发现的匹配组合数目 (非必填项)
Input variable name containing the text to be parsed ([previous sample]) 输入变量名称。如果指定了这一参数,那么该变量的值就会作为函数的输入,而不再使用前面的采样结果作为搜索对象(非必填项)
  • setProperty
函数参数 函数参数描述
属性名称 待设置的属性名
Value of property 属性的值
Return Original Value of property (default false)? 是否返回属性的初始值,选择True的话,函数会返回该属性的初始值
  • split
    Jmeter-界面功能介绍_第20张图片
函数参数 函数参数描述
String to split 待拆分的字符串
函数名称。用于存储在测试计划中其他的方式使用的值。 重用函数计算值的引用名称
String to split on. Default is , (comma). 分隔符,默认使用逗号作为分隔符,若手动设置逗号为空格符,则需要对逗号进行转义:\,
  • StringFromFile
    Jmeter-界面功能介绍_第21张图片
函数参数 函数参数描述
输入文件的全路径 文件名(可以使用相对于JMeter启动目录的相对路径)。如果要在文件名中使用可选的序列号,那么文件名必须适合转成十进制格式,文件名需要使用格式字符串java.text.DecimalFormat。如果要在文件名中使用可选的序列号,当前的序列号会作为唯一的参数。如果不指明可选的初始序列号,就使用文件名作为起始值。一些有用的格式序列如下:#:插入数字,不从零开始,不包含空格(pin#:pin1,pin2,…);000:插入数字,包含3个数字组合,不从零开始(pin000:pin001,pin002,…)
存储结果的变量名(可选) 一个引用名(refName),目的是复用这一函数创建的值。可以使用语法${refName}来引用函数创建的值。默认值为“StringFromFile_”
Start file sequence number (opt) 初始序列号(如果省略这一参数,终止序列号会作为一个循环计数器)
Final file sequence number (opt) 终止序列号(如果省略这一参数,序列号会一直增加下去,不会受到限制)

注意:如果不希望某个格式字符被翻译,需要为它加上单引号,如"."是格式字符,必须被单引号所包含

  • StringToFile
函数参数 函数参数描述
Path to file (absolute) 文件名的路径(路径为绝对路径)
String to write 要写入文件的字符串,如果需要在内容中插入换行符,请在字符串中使用\n
Append to file (true appends, false overwrites, default true) 写入字符串的方法,true表示追加,false表示覆盖。如果未指定,则默认附加为true
Charset (defaults to UTF-8) 用于写入文件的编码。如果未指定,则默认编码为UTF-8
  • time
    Jmeter-界面功能介绍_第22张图片
函数参数 函数参数描述
Format string for SimpleDateFormat (optional) 当前时间返回的格式,默认以毫秒的形式返回当前时间
存储结果的变量名(可选) 结果返回的变量名

时间采用的格式:

时间格式 描述
YMd yyyyMMdd,年月日,eg:20211020
Hms HHmmss,时分秒,eg:173440
YMdHms 年月日时分秒,eg:2021102931710653
  • timeShift
    Jmeter-界面功能介绍_第23张图片
函数参数 函数参数描述
Format string for DateTimeFormatter (optional) (default unix timestamp in millisecond) 格式化时间,如果不填,时间戳精确到毫秒,如果填了,就格式化输出时间
转换时间(可选)(默认:现在) 需进行处理的时间
Amount of seconds/minutes/hours/days to add (e.g. P2D : plus two days) (optional) 时间位移,第一位:负号或正号,负号表示整个时间相减;正号或者不填表示相加;第二位p或者P,表示后面跟具体位移数和单位;第三位:数字+单位’D’,表示天;第四位:‘T’,表示后面跟时分秒和单位;第五位:数字+单位’H’,表示小时;第六位:数字+‘M’,表示分钟,第七位:数字+‘S’,表示秒。数字可以是正数或负数;天\时\分 前的数字为整数,秒,可以是小数。如在当前日期上增加 2 天 4 小数 6 分 10.234 秒:p2dt4h6m10.234s)}
String format of a locale (ex: fr_FR , en_EN) (optional) 区域语言
存储结果的变量名(可选) 计算后结果的引用变量名
  • V

eg:存在变量A1、A2和N=1
${A1} = A1变量的值
${A${N}}:无法正常工作(嵌套变量引用)
${__V(A${N})}:可以正常工作。A${N}变为A1,函数 __V返回变量值A1

  • XPath
函数参数 函数参数描述
XML file to get values from 一个待解析的XML文件名
XPath expression to match against 一个XPath表达式,用于在XML文件中寻找目标节点

使用时可参考网上XPath表达式语法

Generate HTML report

Jmeter-界面功能介绍_第24张图片
点击Generate report:
Jmeter-界面功能介绍_第25张图片
Jmeter-界面功能介绍_第26张图片
生成的测试报告:
Jmeter-界面功能介绍_第27张图片
注:jmeter.properties文件中有个output_format的属性配置,如果不是默认的csv格式,在生成报告时,会报错

帮助

Jmeter-界面功能介绍_第28张图片

子菜单 描述
帮助 点击后跳转至Apache JMeter官方使用文档介绍界面
这个节点是什么? 点击后将在控制台打印出当前选中标签的GUI 和测试元件的类名
调试开 开启debug调试日志记录
调试关 关闭debug调试日志记录
有用的链接 点击后可访问apache Jmeter官网版本发布信息、发布页、组件介绍、变量属性介绍 等链接
关于Apache JMetre 当前使用的Apache JMetre的版本信息

常用工具栏

从菜单栏提取出来的常用工具,鼠标悬浮可展示图标功能
在这里插入图片描述

测试计划标签及内容

线程(用户)

子菜单 描述
setUp线程组 在其他线程执行开始前自动执行的预操作,一般用于准备测试数据
tearDown线程组 在所有线程执行完毕后自动执行,一般用于测试清理工作,删除数据、回收等
线程组 正式执行的普通线程组

配置元件:

子菜单 描述
CSV Data Set Config 导入批量数据,用来模拟大量用户并发场景
HTTP信息头管理 设置HTTP头部信息
HTTP Cookie管理器 Cookie管理器,会在登录成功后,自动存储cookie值,用于之后的请求
HTTP缓存管理器 向HTTP请求添加缓存,模拟浏览器缓存功能。会对照当前时间检查“Cache-Control/Expires”值。如果请求是GET请求,并且时间戳记在缓存之后,则取样器将立即返回,而无需从远程服务器请求URL
HTTP请求默认值 设置请求默认携带的param参数、请求,每次请求将会自动携带该部分信息
Bolt Connection Configuration 提供给Bolt Request取样器使用的Bolt连接池(表示咱目前不懂)
DNS缓存管理器 允许测试在负载平衡器(CDN等)后面有多个服务器的应用程序;在每次迭代时分别解析每个线程的名称,并将解析结果保存到其内部DNS缓存中,该缓存独立于JVM和系统DNS缓存
FTP默认请求 FTP(文件传输协议)默认请求,配置相应请求信息进行上传或者下载文件
HTTP授权管理器 设置自动对一些需要验证的页面进行验证和登录
JDBC Connection Configuration 数据库连接设置,需下载相应的数据库连接jar包使用
Java默认请求 配合java 请求使用,设置请求时携带的默认值,每个java请求都会携带该配置中的值
Keystore Configuration 秘钥库配置,允许配置密钥库的加载方式以及它将使用的密钥,通常用于HTTPS方案中,在响应时间内不考虑秘钥初始化时间
LDAP扩展请求默认值 配合LDAP默认请求使用,设置请求默认值(LDAP:轻型访问目录协议)
LDAP默认请求 向LDAP服务器发送不同的LDAP请求(添加、修改、删除和搜索) (LDAP:轻型访问目录协议)
Random Variable 随机变量
TCP取样器配置 配合TCP取样器发送TCP协议请求
用户定义的变量 配置用户常使用的默认变量值
登陆配置元件/素 用来配置取样器验证的默认用户名和密码,如可配置所要测试的服务器的用户名和密码
简单配置元件 允许在取样器中添加或覆盖任意值,主要是供开发人员在开发新的JMeter组件时使用的基本GUI
计数器 根据配置的递增规则,产生递增的变量值

监听器:可参考 https://copyfuture.com/blogs-details/202008041651527922ld7vnymru0bwps 但更推荐查看官网描述

子菜单 描述
查看结果树 展示每一个取样器的结果、请求信息和响应信息,可以查看这些内容分析脚本是否存在问题,请求是否出错
汇总报告 为测试中的每个不同命名的请求创建一个表行,统计测试数据,分析被测系统的性能,相比较聚合报告消耗更低的内存
聚合报告 统计测试数据,分析测试被测系统的性能
后端监听器 异步侦听器,可以将数据推入都数据库中
JSR223 Listener JSR223脚本代码应用于示例结果,得出自己想要的结果格式
保存响应到文件 创建一个响应数据文件。它的主要用途是创建功能测试,也可以应用于因响应太大而无法显示在视图结果树侦听器中的场景
响应时间图 查看整个请求过程响应时间的变化图
图形结果 以曲线图展示出TPS、响应时间、偏差等数据
断言结果 可以文件形式保存测试过程中的所有请求断言结果
比较断言可视化器 显示任何比较断言元素的结果
汇总图 表格数据结果展示成图表
生成概要结果 在日志文件和/或标准输出中生成到目前为止的测试运行摘要。显示运行和差异总计。在适当的时间边界上,每n秒(默认为30秒)生成一次输出,以便同步在同一时间上的多个测试运行
用表格查看结果 为每个示例结果创建一行,与查看结果树一样,使用大量内存
简单数据写入器 将结果记录到文件中,但不能记录到UI中。它旨在通过消除GUI开销来提供记录数据的有效方法
邮件观察仪 可在服务器多次响应失败时,使用该元件发送email
BeanShell Listener 允许使用BeanShell处理样本以进行保存等

定时器:

作用域:
1、定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
2、当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3、如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入

子菜单 描述
固定定时器 控制请求的时间间隔,延迟请求到达服务器的时间,模拟真实用户的行为;获取服务端某些数据之前加固定定时器,用以确保之前的请求已经在服务端生成了数据。(固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间)
统一随机定时器 控制请求的时间间隔,延迟请求到达服务器的时间。这个延迟的时间是随机的,延时时间在指定范围内且每个时间的取值概率相同,每个时间间隔都有相同的概率发生,总的延迟时间就是随机值和偏移值之和:总的延时 = 固定延迟时间 + 随机生成的延时
Precise Throughput Timer 精确吞吐量计时器,此计时器引入了可变暂停,计算的目的是使总吞吐量(例如,以每分钟样本数为单位)尽可能接近给定的数字)。用于揭发并发问题
Constant Throughput Timer 常数吞吐量定时器,此计时器引入可变暂停,计算时使总吞吐量(以每分钟样本数为单位)尽可能接近给定的数字,尽管计时器被称为恒定吞吐量计时器,但吞吐量值不需要恒定。它可以通过变量或函数调用来定义,并且可以在测试期间更改值
JSR223 Timer 用于使用JSR223脚本语言生成延迟
Synchronizing Timer 同步定时器,将相同请求的线程组集合到一起进行释放,可以瞬间产生很大的压力,模拟并发测试
泊松随机定时器 在每个线程请求之前按随机的时间停顿(这个随机时间符合泊松分布,更符合自然停顿时间),大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和
高斯随机定时器 在每个线程请求之前按随机的时间停顿(这个随机时间符合高斯分布,更符合自然停顿时间),总的延时 = 固定延迟时间 + 高斯随机生成的偏差值
BeanShell Timer 用于自定义编程设置取样器延时时间

Precise Throughput Timer 配置元素:

元素 描述
Target throughput (in samples per ‘throughput period’) 每个“吞吐量周期”(包括组中的所有线程)从所有受影响的采样器获取的最大样本数吞吐量周期
Throughput period (seconds) 吞吐量周期。例如,如果“吞吐量”设置为42,“吞吐量周期”设置为21秒,则每秒将获得2个样本
Test duration (seconds) 这用于确保在“测试持续时间”时间段内获得吞吐量*持续时间样本。
Number of threads in the batch (threads) 如果该值超过1,则多个线程同时离开计时器。平均吞吐量仍然满足“吞吐量”值
Delay between threads in the batch (ms) 例如,如果设置为42,且批大小为3,则线程将在x、x+42ms、x+84ms处离开
Random seed (change from 0 to random) 注意:不同的计时器最好具有不同的种子值。恒定种子确保计时器在每次测试启动时产生相同的延迟。值“0”表示计时器是真正随机的(从一个执行到另一个执行不可重复)。。

Constant Throughput Timer配置元素:

元素 描述
Target throughput(in samples per minute) 目标吞吐量(单位分钟),即每分钟要求发出的吞吐量(QPS)
Calculate Throughput based on 计算吞吐量策略
This thread only 仅对当前线程,也就是每个线程相互是不干扰的,都互相分开计算需要多少延迟时间(总吞吐量=Target throughput乘以线程数
All active threads 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程
All active threads in current thread group 设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同
All active threads(shared) 线程延迟计算是基于任意一个线程上次运行的时间,也就是随便获取一个线程的运行时间来计算,既然是随机,结果就不一定准确,所以只能是努力控制吞吐量在某一个范围
All active threads in current thread group (shared) 在当前线程组中任取一个线程的上次运行时间来计算延时,与上面意思相近

Synchronizing Timer 配置元素:

元素 描述
Number of Simulated users to Group by 集合点集合够N个用户开始并发,如果设置为0,等同于设置为线程租中的线程数量
Timeout in milliseconds 如果设置为0,Timer将会等待线程数达到了“Number of Simultaneous Users toGroup”中设置的值才释放。如果大于0,那么如果超过Timeout inmilliseconds中设置的最大等待时间(毫秒为单位)后还没达到“Number of Simultaneous Users toGroup”中设置的值,Timer将不再等待,释放已到达的线程。默认为0

前置处理器:在取样之前运行

子菜单 描述
JSR223 PreProcessor 使用JSR223脚本获取取样器所需要的的准备数据,如登录时对相关传参进行加密
用户参数 对不同用户设置相应的传参变量
HTML链接解析器 用于从前一个sampler返回的html页面中按照规则解析链接和表单(input/textarea/select/option等),再根据此处理器所在的sampler中的规则进行匹配修改
HTTP URL 重写修饰器 专用于使用url重写来存储sessionId而非cookie的http request。Session Argument Name参数:sessionID存储的名称。应用场景:系统只允许登录成功的用户才可以访问系统,当用户登录成功后返回一个SessionID(或者JsessionId)给用户,后续访问都需要验证这个SessionID
JDBC PreProcessor 数据库预处理器,用于在sample开始前查询数据库并获取一些值,参考JDBC Request
取样器超时 用于设定sample的超时时间,如果完成时间过长,此预处理器会调度计时器任务以中断样本
正则表达式用户参数 使用正则表达式为从另一个HTTP请求中提取的HTTP参数指定动态值,配合regular expression extractor使用
BeanShell PreProcessor 使用java脚本获取取样器所需要的的准备数据,如登录时对相关传参进行加密

后置处理器:发出“取样器请求”之后执行一些操作

子菜单 描述
CSS/Query提取器 通过css选择器定位页面元素并读取数据
JSON JMESPath Extractor 使用JMESPath查询语言从Json结果中提取值,只支持提取一个变量
JSON提取器 使用JSON-PATH语法从JSON格式的响应中提取数据,支持提取多个个变量
正则表达式提取器 使用正则表达式从服务器响应中提取值
边界提取器 填写左右边界提取服务器响应的值
JSR223 PostProcessor 使用JSR223脚本提取服务器响应值
Debug PostProcessor 调试后置处理程序,脚本调试,察看结果树可以看到取样器的相关变量、系统相关属性、JMeter相关变量与属性
JDBC PostProcessor JDBC后置处理器,相当于JDBC Request,可发送JDBC请求
XPath2 Extractor 可以使用XPath2查询语言从结构化响应(XML或(X)HTML)中提取值
XPath提取器 提取请求返回的消息为xml或html格式的数据
结果状态处理器 控制请求遇到错误后执行的操作
BeanShell PostProcessor jBeanShell后置处理器,可使用java编写脚本处理服务器响应内容或者提取响应值

断言:

子菜单 描述
响应断言 对各种返回类型的结果进行断言
JSON断言 针对响应结果是applicaton/json格式的请求进行断言
大小断言 对服务器响应返回的结果字节大小进行断言
JSR223 Assertion 针对取样器中的JSR223 sampler而使用的断言
XPath2 Assertion 断言测试文档的格式是否良好
Compare Assertion 比较断言可用于比较其范围内的样本结果。可以比较内容或经过的时间,并且可以在比较之前过滤内容。断言比较可以在“ 比较断言可视化器”中看到,负载测试中不可使用,因为它消耗大量资源(内存和CPU)
HTML断言 针对sampler中的SOAP/XML-RPC Request而使用的断言
JSON JMESPath Assertion 使用JMESPath对JSON文档内容执行断言
MD5Hex断言 允许用户检查响应数据的MD5 hash
SMIME断言 用于评估来自邮件阅读器采样器的样本结果,此断言验证邮件消息的主体是否已签名。签名也可以针对特定的签名者证书进行验证
XML Schema断言 对返回结果为xml-schema xml模式数据类型的消息进行断言
XML断言 判断返回结果是否和xml的格式即<>成对出现,即测试响应数据包含形式正确的XML文档
XPath断言 针对返回信息为XPAth的数据类型进行断言
断言持续时间 在限定的时间内得到响应数据,如果响应时间大于设置的响应时间,则断言失败,否则成功
BeanShell断言 针对sampler中的Bean Shell sampler而使用的断言

测试片段:

非测试元件:

子菜单 描述
HTTP代理服务器 录制脚本使用,作为web浏览器代理,对浏览器请求进行脚本录制
HTTP镜像服务器
属性显示

取样器:

子菜单 描述
HTTP请求 HTTP请求取样器,发送http或者https请求
测试活动
Debug Sampler 可以将其元组范围内的变量进行输出,输出结果包含在相应数据中,元组范围指的是该元组可以调用的所有变量,都会进行输出,变量的来源一般是以下几种:用户自定义变量,正则表达式提取的变量,用户定义的全局变量,参数文件导入的变量
JSR223 Sampler
AJP/1.3 取样器
Access Log Sampler
BeanShell取样器
Bolt Request
FTP请求
GraphQL HTTP Request
JDBC Request JDBC请求取样器
JMS发布
JMS点到点
JMS订阅
JUnit请求
Java请求
LDAP扩展请求默认值
LDAP请求
OS进程取样器
SMTP取样器
TCP取样器
WebSocket Sampler WebSocket取样器
邮件阅读者取样器

逻辑控制器:参考https://www.cnblogs.com/du-hong/category/1149349.html?page=1

子菜单 描述
如果(if)控制器 实现了代码中IF的功能,通过判断表达式的True/False来判定是否执行相应的操作
事务控制器 事务控制器可以把其他节点下的取样器执行消耗时间累加在一起,便于统计其响应时间、吞吐量等
循环控制器 控制在其节点下的元件的执行次数,可以是具体数字,也可以是变量
While控制器 其节点下的元件将一直运行直到While 条件为false
ForEach控制器 一般搭配用户变量使用。依次调用用户定义的变量,直到最后一个,结束循环;为了满足ForEach Controller提取数据,变量命名的格式一般为“变量名_数字”,其中数字从1开始
Include控制器 导入外部的测试片段(非完整的测试计划),在执行时会执行导入的测试计划,但是被导入的测试计划有特殊要求,它不能有线程组,只能包含简单的控制器及控制器下的元件。换句话说就是相当于加了一个执行单元,一个封装了的业务操作单元,类似我们程序开发中的函数(方法)一样
Runtime控制器 用来控制其子元件的执行时长。市场单位是秒(Runtime默认为1,去掉1则默认为0,此时不执行其节点下的元件。与线程组中的调度器的持续时间 效果一致;如果线程组中设置了持续时间,Runtime 控制器也设置了 运行时间,那么会优先于线程组中的设置。)
临界部分控制器 控制它的子元素(samplers /控制器等)在执行控制器的子程序之前只执行一个线程作为指定的锁,使其按顺序执行取样器和线程循环
仅一次控制器 通常用于控制需要登录的请求,测试过程中,我们往往都只需要登录一次,获取到对应的登录信息后即可执行后续相关的请求,而不是每执行一个请求都登录一次,如将login请求放入仅一次控制器,则在线程组循环运行期间,不论循环次数设置为多少次,login请求都将仅在第一次执行时运行
录制控制器 实际上它是一个位置,当我们用JMeter代理进行录制时,录制的脚本默认放在此控制器的节点下面。没有实际的逻辑作用,我们用简单控制器也可以代替它
简单控制器 简单控制器可以被模块控制器所引用,其作用就是分组
交替控制器 根据被控制器触发执行次数,去依次执行控制器下的子节点<逻辑控制器、采样器>。被触发执行可以由线程组的线程数、循环次数、逻辑控制器触发,每个线程只执行次控制器下的一个子节点
随机控制器 节点下的元件随机运行,与交替控制器不一样的是节点下的元件运行顺序不定
随机顺序控制器 随机顺序控制器是将节点下的所有子节点都正常执行,只是将执行顺序打乱
吞吐量控制器 用来控制其下元件的执行次数,并无控制吞吐量的功能(1、吞吐量控制器有两种模式:Total Executions:设置运行次数与Percent Executions:设置运行比例(1~100之间);2、Per User:线程数,当选Total Executions时,是线程数;当选percent Executions时,是线程数*循环次数)
Switch控制器 开关控制器,通过其下样例顺序数值或名称 控制执行某一个样例
模块控制器 可以快速的切换脚本,不用来回的新建,方便脚本调试,是从内部文件中引用,引用上相对比较灵活,可以只引用部分测试片段或模块内容,包括控制器是从外部文件引用,只能引用整个测试片段的内容

你可能感兴趣的:(测试工具的使用,压力测试,测试类型)