Jmeter介绍

  • 测试计划(Test Plan

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

注意事项:

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

函数测试模式会记录来每个请求到服务器的取样结果,如果在监听器中定义了数据写入文件,会将这些输入写入到该文件中。同时,该模式会严重影响性能。

  • 线程组【add->

1、线程组( Threads (Users)):

理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。

注意事项:线程间变量相互独立。一个测试计划内可以包含多个线程组。

可定义内容:

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

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

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

        1.1线程组(Thread Group):

            理解:常规意义上的线程组,即虚拟用户组。

        1.2 SetUp Thread Group:

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

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

        1.3 TearDown Thread Group:

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

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

      2、配置元件(Config Element)

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

           常用控件:

2.1   CSV Data Set Config

         理解:读取txt,csv格式的测试数据

         使用说明:

  1. 新建一个txt文件

http://images2015.cnblogs.com/blog/986623/201607/986623-20160704111832124-272108322.png

  1. 设置CVS 配置参数

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

CSV Data Set Config各个参数的简要说明:

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

File Encoding: 文件编码格式设置

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

Delimiter(use "\t" for tab):指定参数分隔符号

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

Recycle on EOF: 是否循环取值

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

Sharing Mode: 设置是否线程共享

使用场景:可用于多个jmx模块情况下读取服务器配置,或存储id,账号等测试数据

http://images2015.cnblogs.com/blog/986623/201607/986623-20160704111833421-469664835.png

2.2  HTTP Header Manager (HTTP信息头管理器)  :

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

实例截图:

http://images2015.cnblogs.com/blog/986623/201607/986623-20160704111844030-491066673.png

2.3  HTTP Cookie Manager(HTTP Cookie 管理器):

特性:

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

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

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

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

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

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

实例截图:

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

使用注意事项:

    1. 路径必须填写,否则会导致nocookie
    2. 路径和域组成完整的访问地址,谁访问谁就用对应的cookie
    3. Cookie不是跨域的
    4. 不同的逻辑控制器中要分别放cookie管理器,或放在该cookie逻辑控制器同级,否则会不生效

2.4  HTTP Cache Manager(HTTP Cache 管理器)

Clear cache each iteration?(每次迭代清空缓存):如果选择该项,则该属性管理器下的所有Sampler每次执行时都会清除缓存;

Use Cache-Control/Expires header when processing GET requests:在处理GET请求时使用缓存/过期信息头;

Max Number of elements in cache(缓存中的最大元素数):默认数值为5000,当然可以根据需要自行修改;

PS:如果Test Plan中某个Sampler请求的元素是被缓存的元素,则Test Plan在运行过程中会直接从Cache中读取元素,这样得到的返回值就会是空。

在这种情况下,如果为该Sampler设置了断言检查响应体中的指定内容是否存在,该断言就会失败!

为test plan增加该属性管理器后,test plan运行过程中会使用Last-Modified、ETag和Expired等决定是否从Cache中获取对应元素。

Cache:一般指的是浏览器的缓存

Last-Modified:文件在服务端最后被修改的时间

ETag:在HTTP协议规格说明中定义为:被请求变量的实体标记

Expired:给出的日期/时间之后;一般结合Last-Modified一起使用,用于控制请求文件的有效时间

PS:上面提到的几个字段,都是HTTP协议里面的报文首部的字段,感兴趣的请自行查阅相关内容,或可参考这篇博客:浏览器缓存详解

2.5  HTTP Request Defaults:请求默认值

HTTP请求默认值,这个属性管理器用于设置其作用范围内的所有HTTP Request默认值,包括:

服务器请求或IP:请求发送的目标服务器名称或地址;

端口:目标服务器的端口号,默认80;

协议:箱目标服务器发送请求所采用的协议,HTTP或HTTPS,默认HTTP;

Content encoding :内容的编码方式,默认值为iso8859;

路径:目标URL路径(不包括服务器地址和端口);

同请求一起发送参数 : 对于带参数的URL ,jmeter提供了一个简单的对参数化的方法:用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对;

从HTML文件获取所有有内含的资源:该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的

所有资源(图片、flash等),默认不选中;如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,

这样,只有能匹配指定正则表达式的URL指向资源会被下载。

注意事项:

①、一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加;

②、两个default中都定义的"Server Name or IP",显示在发送请求时只能使用一个;

参考博客:http://www.cnblogs.com/puresoul/p/4853276.html

                  http://blog.chinaunix.net/uid-29578485-id-5604160.html

 

2.6  HTTP Authorzation Manager(HTTP授权管理器):

https://images2015.cnblogs.com/blog/983980/201706/983980-20170623111634554-1881451286.png

该属性管理器用于设置自动对一些需要验证的页面进行验证和登录;

基础URL:需要使用认证页面的基础URL,如上图,当取样器访问它时,jmeter会使用定义的username和password进行认证和登录;

用户名:用于认证和登录的用户名;

密码:用于认证和登录的口令;

域:身份认证页面的域名;

Realm:Realm字串;

Mechanism:机制;jmeter的http授权管理器目前提供2种认证机制:BASIC_DIGEST和KERBEROS:

BASIC_DIGEST:HTTP协议并没有定义相关的安全认证方面的标准,而BASIC_DIGEST是一套基于http服务端的认证机制,保护相关资源避免被非法用户访问,

如果你要访问被保护的资源,则必需要提供合法的用户名和密码。它和HTTPS没有任何关系(前者为用户认证机制,后者为信息通道加密)。

KERBEROS:一个基于共享秘钥对称加密的安全网络认证系统,其避免了密码在网上传输,将密码作为对称加密的秘钥,通过能否解密来验证用户身份;

2.7   Counter

启动(Starting value)

给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器

注:英文版下是Start,Jmeter的中文语言将Start翻译成了“启动”,有些歧义

递增(Increment):

每次迭代后,给计数器增加的值

最大值(Maximum) :

计数器的最大值,如果超过最大值,重新设置为初始值(Start),默认的最大值为Long.MAX_VALUE,2^63-1

Number format :

可选格式,比如000,格式化为001,002。默认格式为Long.toString(),但是默认格式下,似乎还是可以当作数字使用

引用名称(Reference Name) :

用于控制在其它元素中引用该值,形式:$(reference_name}

与每用户独立的跟踪计数器(Track Counter Independently for each User):

换言之,这个是全局的计数器,还是说每个用户拥有自己的计数器。如果不勾选,即全局的,比如用户#1 获取值为1,用户#2获取值为2,如果是独立的,即不勾选,每个用户有自己的值,比如用户#1 获取值为1,用户#2获取值还是为1

Reset counter on each Thread Group Iteration :

可选,仅勾选与每用户独立的跟踪计数器时可用,如果勾选了,每次线程组迭代,都会重置计数器的值。当线程组是在一个循环控制器内时比较有用

2.8  DNS Cache Manager(DNS缓存管理器)

2.9  FTP Request Defaults(FTP请求默认值)

该属性管理器用于设置其作用范围内的所有HTTP的默认值,可被设置的内容包括HTTP请求的host、端口、协议等。

一个Test Plan中可以有多个HTTP Request Defaults,处于多个HTTP Request Defaults作用域内的Sampler使用HTTP Request Defaults中设置值的叠加值。

事例:

http://images2015.cnblogs.com/blog/442008/201603/442008-20160316110115193-546197691.png

HTTP Request Defaults1:Server Name or IP: www.baidu.com,一个参数:aaa=111

HTTP Request Defaults2:Server Name or IP: www.qq.com,两个参数:bbb=22,aaa=333

运行结果:

总结:

1、一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加,如上图,虽然两个Defaults 组件都定义了参数aaa,但发出的请求还是会叠加起来。

2、两个default中都定义的"Server Name or IP",显示在发送请求时只能使用一个,这里使用的是第一个default定义的值www.baidu.com

2.10  JDBC Connection Configuration

理解:数据库连接控件,不会进行的具体的数据库操作。

实例截图:

http://images2015.cnblogs.com/blog/986623/201607/986623-20160704111844733-1621454341.png

注意事项:

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

2.11  Java Request Defaults

该组件可以为我们的http请求设置默认的值。假如,我们创建一个测试计划有很多个请求且都是发送到相同的server,这时我们只需添加一个Http request defaults组件并设置“Server Name or IP”,然后添加多个http请求且不设置"server name or ip",这些http请求会默认使用Http request defaults组件设置的值。

参数列表:

Attribute

Description

Required

Name

组件名

No

Server

域名或IP

No

Port

端口

No

Connect Timeout

连接超时时间

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值