Jmeter进阶之路

2018-09-29  尹文姣 

[本文系原创博文,首发在测试窝,如需转载请务必注明作者和出处] 



Jmeter图形监控扩展

1,JMeterPlugins-Standard.jar

1,可在我给的百度云网盘里面去下载相关资料,链接: https://pan.baidu.com/s/19O6iqICLl601ACT-ldBfsQ 提取码: t9py

2,首先将JmeterPlugins.jar复制到Jmeter的Lib目录下面的ext目录下面,重新启动Jmeter,看到jc@jp的就是扩展的插件

设置方式:添加→监听器-JP@gc,设置如下:

2,ServerAgent-2.2.1.jar

1,ServerAgent-2.2.1.jar上传到被测服务器,解压,进入目录,Windows环境,双击ServerAgent.bat启动;linux环境执ServerAgent.sh启动,默认使用4444端口,出现如下情况即服务端成功


3,设置每秒事务数

设置方式:添加→监听器-jp@gc-Transactions per Second设置如下:


4,设置每秒点击数

设置方式:添加→监听器-jp@gc-Hits per Second设置如下:


百度资料:https://www.cnblogs.com/imyalost/p/7751981.html

https://blog.csdn.net/aisemi/article/details/55272435




Jmeter函数

JMeter函数是一些能够转化在测试树中取样器或者其他配置元件的域的特殊值。一个函数的调用就像这样:${_functionName(var1,var2,var3)},-functionName匹配函数名,圆括号内设置函数的参数,例如${_time(YMD)}实际参数因函数而不同。不需要参数的函数使圆括号内为空,例如${_theadNum}.

Jmeter函数有两种函数:自定义静态值(或者变量)和内置函数。

 

函数列表:

regexFunction        -正则表达式函数

counter

threadNum                   -得到线程数

intSum                     -添加变量

StringFromFile                  -从文件读取一行

machineName                  -得到本地计算机名

JavaScript(Apache Rhino)

random number

CSVRead                     -从CSV文件读取一个属性

P                          -读取一个属性

setProperty                    -设置一个属性

log                         -记录一个日志

logn                       -记录一个日志

BeanShell                    -运行BeanShell

split                      -分隔一个字符串变量

XPATH                    -使用一个xpath表达式

time                     -返回一些格式的当前时间

jexl                      -执行一个jexl表达式



1,_csvRead函数

2,_cvsRead函数是从外部读取参数,csvRead函数可以从一个文件中读取多个参数。

3,步骤:

1、先新建一个文件,例如test.txt,里面的数据存放为

2、web@qq.com,111111, col@qq.com,111111, mon@qq.com,111111

3、为使用的用户名和密码,也可以加其他参数,用逗号隔开,每一列表示一种参数,每一行则表示一组参数

4、设置方式:选项→函数助手对话框→选择函数为:_CSVRead函数,设置如下:

CSV file to get values from | *alias:要读取的文件路径,为绝对路径

CSV文件列号| next| *alias:从第几列开始读取,注意第一列是0

如上图所示,我们读取的是test.txt里面的第一列用户名(如果要读取第二列的密码,只需将0改成1即可,往后类推),点击【生成】按钮即可生成函数,我们使用时即拷贝生成的函数字符串:${__CSVRead(E:\c.txt,0)}

1,复制函数到HTTP请求 值里面去


其中的值即为我们的生成的函数 (${__CSVRead(E:\c.txt,0)}),jmeter执行时,如果是多线程,则从test.txt中第一行开始读取,如果设置的线程数大于test.txt中的行数,将会循环读取数据,通常该行数可用于参数化



2_Random函数

_Random函数是从某数据段随机读取数据替换参数,当需要添加多条数据记录且某些字段需要唯一性时使用,使用该函数随机生成的数据是数字。

设置方式:选项→函数助手对话框→选择函数为:_Random,设置如下:


复制函数到HTTP请求 值里面去

一个范围内的最小值:即我们所要取的随机数的最小值,上述设置为 1,生成的随机数将不会小于1

一个范围内允许的最大值:即我们所要取的随机数的最大值,上述设置为100,生成的随机数将不能超过100

Name of variable in which to store the result(optional)为函数名称名称:这里我们设置为random,即用于存储在测试计划中其他的方式使用的值

点击【生成】按钮即可得到我们所需要的函数:${__Random(1,100,random)},然后将函数复制到需要用到随机数的地方,我们就可以使用啦。

注意:当我们设置的线程数超过随机数范围时,随机数将会重复生成



3、_StringFromFile函数

_StringFromFile函数是从一个文件中读取一个字符串,用来实现参数化,如果读取或者打开这个文件发生错误时,将会返回“**ERR** ”字符串

设置方式:选项→函数助手对话框→选择函数为:_StringFromFile函数,设置如下:


输入文件的全路径:输入读取文件的绝对路径+文件名

Name of variable in which to store the result (optional):存储结果的变量名称(选填)

Start file sequence number (opt):初始序列号(选填)

复制函数到响应断言请求 值里面去




2、_count函数

每次调用计数器函数都会产生一个新值,从1开始每次加1。计数器既可以被配置成针对每个虚拟用户是独立的,也可以被配置成所有虚拟用户公用的。如果每个虚拟用户的计数器是独立增长的,那么通常被用于记录测试计划运行了多少遍。全局计数器通常被用于记录发送了多少次请求。计数器使用一个整数值来记录,允许的最大值为2,147,483,647。

设置方式:选项→函数助手对话框→选择函数为:_count函数,设置如下:


复制函数到响应断言请求 值里面去

运行请求,请求数为5,count请求为5

【参数】

第一个参数:true,如果测试人员希望每个虚拟用户的计数器保持独立,与其他用户的计数器相区别。False,全局计数器

第二个参数:重用计数器函数创建值的引用名。测试人员可以这样引用计数器的值,{$count}。这样一来,测试人员就可以创建一个计数器后,在多个地方引用它的值(选填)

【格式】:${_count(FALSE,count)}

【使用】:我们将“_counter"函数生成的参数复制到某个参数下面,如果为TRUE格式,则每个线程各自统计,最大数为循环数,如果为FALSE,则所有线程一起统计,最大数为线程数乘以循环数

count选择为true 所以只记当前Http请求,访问百度的次数

count选择为false,当前请求还有其他的Http请求,那就会统计全部所有请求发送的次数





Jmeter逻辑控制器

Jmeter中的Logic Controller 用于为Test Plan 中的节点添加逻辑控制器

Jmeter中的Logic Controller 分为两类:

一类:用来控制Test Plan 执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等

另一类:与节点逻辑执行顺序无关,用于对Test Plan 中的脚本进行分组、方便Jmeter统计执行结果以及进行脚本的运行是控制等,如:Throughput Controller、Transaction Controller。

控制Test Plan 中的节点执行顺序的Logic Controller


1、用户自定义

设置方式:添加-配置元件-用户自定义变量,设置如下:



2、遍历循环控制器(ForEach Controller)

    作用:用来遍历当前元素的所有可执行场景;在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值;

    定义变量注意命名格式:变量名+下划线+数字(从1开始 计数)之所以这样命名是为了满足以后forEach控制器提取数据

 设置方式:添加-逻辑控制器-ForEach控制器,设置如下:



输入变量前缀:在其中输入需要遍历的用户参数(User Parameter)

Start index for loop(exclusive):循环指数开始(唯一)→ 遍历查询的变量范围,开始的值(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)

End index for loop(inclusive):循环指数结束(包含)→ 遍历查询的变量范围,结束的值

输出变量名称:将遍历查询到的符合条件的用户参数赋值给输入变量(Vname),然后就可以在控制器下的取样器使用,格式为${输出变量名}

Add”_”before number:输入变量名称中是否使用“_”进行间隔

PS:这个控制器一般配合配置元件→ 正则表达式提取器来一起使用,可对页面上的某些元素进行重复处理。

百度资料:https://www.cnblogs.com/imyalost/p/6183569.html


3、包含控制器(Include Controller)

作用:用于引用外部的Jmx文件;从而控制多个测试计划组合

设置方式:添加-逻辑控制器-Include Controller控制器,设置如下:



include Test Plan:包含测试计划的文件名,可以点击浏览,从文件夹保存的JMX文件夹目录下选择对应的JMX文件

使用方法:创建一个测试计划,下面可添加取样器/控制器等,然后保存测试计划,为了方便起见, 线程组也可以添加外部JMX文件中用于调试;

如果测试使用 Cookie或用户定义的变量,这些应放置在顶层(包括文件),否则无法正常工作;此元素不支持变量/函数在文件名字段中;但是,如果属于包含控制器定义的内容,则使用前缀路径名。

当使用包含控制器中包含相同的JMX文件,则要确保文件名不同,以避免无法读取;如果文件不能被发现,那么控制器会尝试打开文件名相对于JMX启动目录。



4,转换控制器(Switch Controller)

作用:通过给该控制器中的value赋值,来指定运行哪个取样器(也可以理解为开关控制器)

设置方式:添加-逻辑控制器-Switch Controller控制器,设置如下:

Switch value:控制器具体赋值的value值字段

有两种赋值方式:

①.第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

②.第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

Value为空时,默认执行第1个子节点元素



5,事务控制器(Transaction Controller)

作用:生成一个额外的采样器来测量其下测试元素的总体时间;值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的

设置方式:添加-逻辑控制器-Switch Controller控制器,设置如下:

 

Generate parent sample:勾选后,所有的结果将在父结点中展示(选中这个参数结果展示如下图红框,否则显示为下图蓝框)

Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间




















621°/6212 人阅读/0 条评论 发表评论

登录 后发表评论