jMeter入门常用组件详解

测试计划(Test Plan)

理解:包含一个测试的所有内容,包含所有的控件,属性,变量。所以一个jmx文件中只有有一个测试计划。测试计划中可以定义变量,引入jar包,编辑测试模式等。

注意事项:

可将一些不常变化的数据存入测试计划的变量,方便在测试计划内调用(例如服务器ip,端口,数据库ip等)。

 

线程组( Threads (Users))

理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。一个测试计划内可以包含多个线程组,线程组间变量相互独立。

可定义内容:

取样器错误后执行的操作:继续执行,启动下一个线程,停止线程,停止测试,立刻停止

线程属性:线程数量,线程启动间隔时间(0为立刻启动所有线程),单线程循环次数,线程执行顺序,是否使用调度器。

调度器配置:持续时间,启动延迟,启动时间,结束时间

SetUp Thread Group:

理解:测试初始化操作,即线程组开始之前执行的内容。

实际使用:可用于初始化测试环境,测试数据准备等。

TearDown Thread Group:

理解:测试执行后操作,即线程组执行完成后执行的内容。

实际使用:可用于清理测试环境,清空测试数据等。

 

逻辑控制器(Logic Controller)

理解:用来控制采样器的执行逻辑顺序、进行分组方便控制

常用控件:

循环控制器(Loop Controller):指定其子节点循环运行的次数,可以使用具体的数值,也可以使用变量,Forever选项表示一直循环下去

仅一次控制器(Once Only Controller):

作用:在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,登录场景经常会使用到这个控制器。

注意:将Once Only Controller作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行。    

事务控制器(Transaction Controller):

作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。Generate parent sample(选中这个参数结果展示如下图红框,否则显示为下图蓝框)   

吞吐量控制器(Throughput Controller):

作用:控制其下的子节点的执行次数与负载比例分配,也有两种方式:

Total Executions:设置运行次数

Percent Executions:设置运行比例(1~100之间)

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111827124-537082178.png

示例:

1、设置线程组循环5次:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111827639-1634150753.png

2Throughput Controller1的子结点执行3次:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111828733-695021128.png

3Throughput Controller2的子结点执行(40% * 线程组循环次数5= 2次:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111829546-1319784507.png

执行结果:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111830342-1894859911.png

配置元件(Config Element)

理解:为测试提供数据支持的控件

常用控件:

CSV Data Set Config

理解:读取txtcsv格式的测试数据

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111832811-2024388824.png

FileName:csv文件或txt文件路径,可用相对路径

File Encoding: 文件编码格式设置

Varible Names: 定义文本文件中的参数名,可设置多个参数,参数之间逗号分隔.定义后可在脚本中引用,引用方式${name}

Delimiteruse "\t" for tab:指定参数分隔符号

Allow Quoated data: 是否允许引用数据

Recycle on EOF: 是否循环取值

Stop Thread on EOF: Recycle on EOFfalse并且Stop Thread on EOFtrue,则读完csv文件中的记录后,停止运行

Sharing Mode: 设置是否线程共享

HTTP Cookie管理器

特性:

1,像浏览器一样的存储和发送Cookie。如果你请求一个站点,然后他的Response中包含CookieCookie Manage就会自动地保存这些Cookie并在所有后来发送到该站点的请求中使用这些Cookie的值。(在View Results TreeRequest界面可以看到被发送的Cookie Data 同时每个线程的Cookie Manager是相互独立的)

接受到的Cookie的值能被存储到JMeter 线程变量中(2.3.2版本后的JMeter不自动做这个事情)。要把Cookies保存到线程变量中,要定义属性"CookieManager.save.cookies=true"

线程变量名为COOKIE_ + Cookie名。属性CookieManager.name.prefix= 可以用来修改默认的COOKIE_的值。

2,手动添加CookieCookie Manager,需求注意的是这些Cookie的值被会所有线程共享

定义:属性"CookieManager.save.cookies=true"

jmeter.properties文件中增加CookieManager.save.cookies=true,然后在Debug Sampler中就能看到COOKIE_xxx这样的变量,或者也可以使用正则表达式来提取Cookie的值

实例截图:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111834296-738143564.png

使用注意事项:

路径必须填写,否则会导致nocookie路径和域组成完整的访问地址,谁访问谁就用对应的cookie

Cookie不是跨域的不同的逻辑控制器中要分别放cookie管理器,或放在该cookie逻辑控制器同级,否则会不生效

 

HTTP信息头管理器

理解:定义信息头,在其覆盖下的所有元件都会使用该信息头。例如定义在测试计划中的信息头,即该测试计划所有请求的信息头。

JDBC Connection Configuration

理解:数据库连接控件,不会进行的具体的数据库操作。只是建立起一个数据库连接,真正的操作要在JDBC Request里进行

注意事项:

需要和JDBC Request配合使用需要安装jdbc驱动,否则无法连接数据库

用户定义的变量

理解:用户自定义的变量,可用于存储接口路径等信息

注意事项:

注意变量的作用域,不同线程间变量不共享

定时器(Timer)

理解:sampler(采样器)之前执行;如果只想应用于部分sampler,需要将定时器加入子节点;简单理解类似于loadrunner中的思考时间,控制sampler的间隔时间。

常用控件:

Constant Throughput Timer 

理解:设置目标吞吐量,限制QPS的控件,因为JMeter默认一个线程里面所有请求完成后立即迭代,所以无法准确控制QPS

注意事项:

只有在线程组中的线程产生足够多的request 和请求响应时间较快的情况下才有意义。

固定定时器

理解:请求间隔时间

注意事项:

需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

Synchronizing Timer

理解LR中的集合点,也就是说,sampler到这里会暂停,达到指定线程数后并发

注意事项:

集合点需要设置在Sampler前,否则不会生效

前置处理器(Per Processors)

理解:sampler请求前执行的操作,可以是获取测试数据,修改参数等

常用控件:

Bean Shell PreProcessor

理解:Bean Shell编程设置,可以自定义java代码

后置处理器(Post Processors)

理解:请求执行后的处理,与前置处理器相反

常用控件:

正则表达式提取器

理解:当一个SamplerReponse中包含我们需要的参数的时候,我们可以通过该控件将参数提取出来

实例截图:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111858796-868734897.png

参数含义:

引用名称:将提取的参数转化为变量,该字段定义变量名称

正则表达式:匹配的正则,测试可用搜索引擎搜索在线正则验证测试结果

断言(Assertions)

理解:判断请求响应值的正确性的控件

常用控件:

响应断言:

理解:判断Reponse是否正确

实例截图:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111900592-1657422977.png

   

注意事项:

断言要放在请求内

监听器(Listener)

理解:查看统计压测执行结果的控件

常用控件:

图形结果

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111902202-51159296.png

样本数目:总共发送到服务器的请求数。

最新样本:代表时间的数字,是服务器响应最后一个请求的时间。

吞吐量:服务器每分钟处理的请求数。 

平均值:总运行时间除以发送到服务器的请求数。 

中间值:代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。 

偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

注意事项:图形结果本身会影响Jmeter的性能

查看结果树

应用:可用于调试,查看请求响应的数据,测试的结果,请求的内容。

聚合报告

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111906155-1994203947.png

参数含义:

Label:每个 JMeter  Sampler都有一个 Name 属性,这里显示的就是 Name 属性的值

#Samples:表示你这次测试中一共发出了多少个请求

Average:平均响应时间 = 所有请求耗时 / 总请求数

Median 50 用户的响应时间

90% Line90 用户的响应时间

Min:最小响应时间

Max:最大响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数

Throughput:吞吐量 = 总请求数 / 总耗时

KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

   

Jmeter函数

函数助手

打开位置:选项——函数助手

控件截图:

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111906967-1944752802.png

函数实例:

${__time(YMD)}:当前日期函数

${__time(YMDHMS)}:当前时间函数

${__MD5(${fkeystr_no_register})}MD5加密函数

更多可查看函数助手的帮助页面

函数调用

选择想要使用的函数输入想要使用函数的值点击生成

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111907749-1144196566.png

将所得字符串复制到要使用的位置

   

Jmeter属性与变量

一、Jmeter中的属性:

1JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性

2JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值,可以用于在线程间传递信息。

3JMeter属性可以在测试计划中通过函数 _P 进行引用,但是不能作为特定线程的变量值。

https://images2015.cnblogs.com/blog/986623/201607/986623-20160704111908764-466590438.png

4JMeter属性可以通过_setProperty 函数来定义JMeter属性

5JMeter属性是大小写敏感的

6WorkBench中的属性查看组件:WorkBench右键--->Add--->Non Test Elements--->Property Display

 

二、Jmeter中的变量:

1JMeter变量对于测试线程而言是局部变量。

2、在不同测试线程中,JMeter变量既可以是完全相同的,也可以是不同的。

3JMeter变量引用方法:${name} 

4JMeter变量是大小写敏感的

5、如果有某个线程更新了变量,那么仅仅是更新了变量在该线程中复制的值

6Jmeter中定义变量的地方:

a) 测试计划(Test plan),在右边的面板上添加User Defined Variables

b) 线程组,右键选择 配置元件( config element)-->User Defined Variables

c) 通过前置或后置处理器生成的变量

d)使用csv参数化的变量

注意:通过 a  b 两种方式定义的变量,在JMeter启动时对这个测试计划都是可见的。如果同一个变量在多个 b 中被定义,那么只有最后一个定义会生效。一旦某个线程启动后,那么整个变量集合的初始值就会被复制到该线程中。其他测试元件,例如 c 或者 d 可以被用来重新定义变量,这些重定义仅仅影响当前线程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter是一款功能强大的性能测试工具,它提供了多种性能测试组件来帮助用户进行性能测试。其中一些常用组件包括: 1. 线程组(Thread Group):用于模拟并发用户。可以设置线程数、启动时间、循环次数等参数。 2. HTTP请求(HTTP Request):用于发送HTTP请求并接收响应。可以设置请求的方法、URL、参数、头部信息等。 3. 监听器(Listener):用于收集和展示测试结果。常见的监听器有查看结果树(View Results Tree)、聚合报告(Aggregate Report)、图表画板(Graph Results)等。 4. 断言(Assertion):用于验证响应内容是否符合预期。可以根据响应的状态码、响应头、响应正文等进行断言。 5. 定时器(Timer):用于设置请求之间的时间间隔,模拟真实的用户行为。 6. 配置元件(Config Element):用于配置测试环境,例如设置Cookie、设置HTTP头部信息等。 7. 逻辑控制器(Logic Controller):用于控制测试计划的执行流程,例如循环控制器(Loop Controller)、条件控制器(If Controller)等。 除了以上列出的组件JMeter还支持更多的功能和组件,如交替控制器、事务控制器、邮件发送器等,用户可以根据实际测试需求选择和配置相应的组件。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [这绝对是csdn写的最全面最详细的jmeter常用10大组件以及组件的执行顺序和作用域,附带视频教程。](https://blog.csdn.net/IKUN669/article/details/130347035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值