Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2279733
  • 博文数量: 297
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2200
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-31 14:30
个人简介

自己慢慢积累。

文章分类

全部博文(297)

分类: 系统运维

2016-01-27 16:38:40

jmeter之配置元件

利用Jmeter的http请求的时候,例如登陆操作,我们做普通用户名和密码作参数化,循环读取文本里的用户名和密码,可以添加CSV Data Set Config这个原件来控制。

利用Jmeter的CSV Data Set Config,可以实现这个功能,具体如下:

1.新建一个文本文件,里面保存要登录的用户名,密码,文件内容如下:

baidu,123456

coolsin,liujuan

sb,123456

说明:这里用英文逗号为分隔符,也可以用其他为分隔符,在CSV Data Set Config中可以设置。如果此文本文件为CSV格式的,则用豆号分格

2.右键点击Jmeter中需要参数化的某个请求,选择添加——配置原件——CSV Data Set Config,会添加一个CSV Data Set Config,需要设置相关的一些内容,具体如下:

Filename:文件名,,指保存信息的文件目录,可以相对或者绝对路径(比如:D:\user.csv)

Variable Names:参数名称(如:有几个参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,分隔符在下面的“Delimitet”中定义,为了和文件中的“,”对于,这里也用“,”分割每个参数名,(比如:use,password)

说明:这里的username与password为自己定义的名称,请求中要用这个名称,例如${参数名称}

Delimitet:定义分隔符,这里定义某个分隔符,则在“Variable Names”用这里定义的分隔符分割参数。CSV默认为英文的豆号

Recycle on EOF:是否循环读入,因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入

设置CSV Data Set Config如下图所示:


 

当文本中参数运行完成后,再从第一个开始循环读取,如果选择为false,则停止运行

备注说明:这里我用通俗的语言大概讲一下Recycle on EOF与Stop thread on EOF结果的关联

Recycle on EOF :到了文件尾处,是否循环读取参数,选项:true和false

Stop thread on EOF:到了文件尾处,是否停止线程,选项:true和false

当Recycle on EOF 选择true时,Stop thread on EOF选择true和false无任何意义,通俗的讲,在前面控制了不停的循环读取,后面再来让stop或run没有任何意义

当Recycle on EOF 选择flase时,Stop thread on EOF选择true,线程4个,参数3个,那么只会请求3次

当Recycle on EOF 选择flase时,Stop thread on EOF选择flase,线程4个,参数3个,那么会请求4次,但第4次没有参数可取,不让循环,所以第4次请求错误


3.在需要使用变量的地方,比如在登录操作中,需要提交的表单字段包含用户名密码,我们就可以用${变量名}的形式进行替换,例如${user}和${password}

参数设置如图所示:

Allow quoted data? Should the CSV file allow values to be quoted? If enabled, then values can be enclosed in " - double-quote - allowing values to contain a delimeter.


pasting

4. 最后,添加后,可以通过“添加-监视器-查看结果树(请求部分)”,来检验参数化是否成功,运行线程组,如果失败,那么检查一下文本的路径,变量大小写等等,手册上说使用相对文本路径时,要以测试配置文件(默认是jmeter的bin目录)的目录为参考,但是我试过似乎不行,换成绝对路径就可以了


备注说明:

1、使用这个元件做参数时,尽量用CSV格式的表格来做,我试过其它格式的dat和txt,都读取不到

2、这个元件要在该请求下单独添加








parameters


Attribute Description Required
Name Descriptive name for this element that is shown in the tree. No
Clear cache each iteration If selected, then the cache is cleared at the start of the thread. Yes
Use Cache Control/Expires header when processing GET requests See description above. Yes
Max Number of elements in cache See description above.



ATTENTION:
		

现在对于JMeter来说,一个测试计划只能有一个cookie管理器。因为当多个magager存在时,JMeter目前还没有方法来指定使用那个manager。同时,一个cookie manager中的存储的cookie也不能被其他cookie manager所引用,所以同一个计划中不建议使用多个cookie manager

HTTP COOKIE Manager管理cookie有两种方法:
  1. 他可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。每个JMeter线程都有自己的“cookie存储区域”,
  所以当你测试一个使用cookie来管理session信息的web站点时,每个JMeter线程都有自己的session。
  注意:
以这种自动收集的方式收集到的cookie不会在cookie manager中进行展示,但是运行后,通过:查看结果树(监 听器)可以查看到cookie信息。
 早期的JMeter版本(2.3.2或更早)对与cookie的管理是支持跨域的,也就是说不同域名的网站都可以使用cookie manager中  的cookie,2.3.2版本之后,这个就不可以了,必须同源,才能共用cookie,如果你想让JMeter的cookie manager支持跨域,  修改JMeter.property :
CookieManager.check.cookies=false

  接受到的cookie会被自动存储在线程变量中,但是从Jmeter2.3.2版本后,默认不再存储,如果你想要manager自动存储收集到 的cookie,你需要修改JMeter.property :
CookieManager.save.cookies=true
    存储的时候,cookie的key会以“COOKIE_”为前缀命名(默认情况),如果你想自定义这个前缀,
修改JMeter.property :
CookieManager.name.prefix= 
    这个配置如果未启用(也就是维持默认),我们可以通过一下方式获取到cookie的值:${COOKIE_name},其       中name为cookie的名称

   2. 除了上面说的自动收集,我们还可以手动添加cookie,这里,笔者要给大家一个建议,尽量不要一个一个手动去填写,我们可  以结合firefox的插件firebug,直接将cookie导入,操作如下
  • 打开firebug,如图
JMeter——HTTP COOKIE Manager(cookie管理器) - 一切随缘 - 随缘
   点击红色框中的,下拉框中有个导出本站点的cookie,就可以将cookie信息保存为一个cookies.txt文件,接着打开jmeter 的cookie manager:
JMeter——HTTP COOKIE Manager(cookie管理器) - 一切随缘 - 随缘
  载入刚才导出的cookies.txt文件即可。
各个参数说明:
名称  描述  是否必填
  Name  自定义该cookie的描述,例如:tuan.qq.com的cookie  N
  Clear Cookies each Iteration  每次线程组运行前,都会清楚cookie,但是如果是手动添加的cookie,不会被清除  N
  Cookie Policy  选择cookie的管理策略,建议选择compatibility,兼容性强  
  User-Defined Cookies  用户自定义cookie
 
  Add Button  。。。略过  

HTTP信息头管理器  信息头部


Parameters

Attribute Description Required
Name Descriptive name for this element that is shown in the tree. No
Name (Header) Name of the request header. Two common request headers you may want to experiment with are "User-Agent" and "Referer". No (You should have at least one, however)
Value Request header value. No (You should have at least one, however)
Add Button Add an entry to the header table. N/A
Delete Button Delete the currently selected table entry. N/A
Load Button Load a previously saved header table and add the entries to the existing header table entries. N/A
Save As Button Save the current header table to a file.

HTTP授权管理器

例如 授权 访问 tomcat 这里主要是让JMeter能够通过Tomcat的认证,,在“名”和“密码”中加入对应的值


Attribute Description Required
Name Descriptive name for this element that is shown in the tree. No
Clear auth on each iteration ? Used by Kerberos authentication. If checked, authentication will be done on each iteration of Main Thread Group loop even if it has already been done in a previous one. This is usually useful if each main thread group iteration represents behaviour of one Virtual User. Yes
Base URL A partial or complete URL that matches one or more HTTP Request URLs. As an example, say you specify a Base URL of "" with a username of "jmeter" and a password of "jmeter". If you send an HTTP request to the URL "ant/myPage.html", the Authorization Manager sends the login information for the user named, "jmeter". Yes
Username The username to authorize. Yes
Password The password for the user. (N.B. this is stored unencrypted in the test plan) Yes
Domain The domain to use for NTLM. No
Realm The realm to use for NTLM. No
Mechanism Type of authentication to perform. JMeter can perform different types of authentications based on used Http Samplers:
Sampler Authentications
Java BASIC
HttpClient 3.1 BASIC, DIGEST
HttpClient 4 BASIC, DIGEST and Kerberos



http 默认请求

一个HTTP请求有着许多的配置参数,下面将详细介绍:

名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

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

端口号:目标服务器的端口号,默认值为80 。

协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

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

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

自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。

Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。

Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。

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

同请求一起发送文件:在请求中发送文件,通常,HTTP文件上传行为可以通过这种方式模拟。

从HTML文件获取所有有内含的资源:当该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载。


Java请求默认值

可以使用该请求执行java文件


用jmeter测试java程序

最近在用jmeter进行性能测试,防止被忘记,把步骤写下。

 

场景:测试java程序

 

1、右击测试计划-> 添加 -> Threads(Users) -> 线程组

 

2、设置线程属性,用于并发请求。

   

      介绍:

 

      线程数: 5

      Ramp-Up Period(in seconds) : 1

      循环次数: 2

 

      含义:1秒种起动5个线程,每个线程循环调用2次java请求     

 

3、线程组右击 -> 添加 -> Sampler -> Java请求

 

       之前建立测试类:

     

package com.my.test;  import java.util.Random;  import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult;  /**  * Hello world!  *  */ public class App  extends AbstractJavaSamplerClient{      	 	 	public static double computer(double a,double b){ 		return a * b / a * a; 	}  	@Override 	public SampleResult runTest(JavaSamplerContext arg0) { 		// TODO Auto-generated method stub 		SampleResult sr = new SampleResult(); 		sr.sampleStart(); 		 		Random random = new Random(); 		for(int i=0; i<10000; i++){ 			computer(random.nextDouble(),random.nextDouble()); 			 		} 		 		sr.setSuccessful(true); 		sr.sampleEnd(); 		return sr; 	}  	@Override 	public void setupTest(JavaSamplerContext context) { 		// TODO Auto-generated method stub 		super.setupTest(context); 	}  	@Override 	public void teardownTest(JavaSamplerContext context) { 		// TODO Auto-generated method stub 		super.teardownTest(context); 	} 	 	 }

 

   使用的jar包有:ApacheJMeter_java.jar ,ApacheJMeter_core.jar

   上述jar包在 %JMETER_HOME%/lib/ext/下

 

   将测试程序打成jar包,放在%JMETER_HOME%/lib/ext/下

 

   这里会自动识别出该类,选择。

 

4、线程组右击 -> 添加 -> 监听器 -> 用表格察看结果

 

     Ctrl + R,开始运行,

     Ctrl + E,清除历史结果




JDBC Connection Configuration

 

Database URL: jdbc:oracle:thin:@192.168.1.168:1521:ptoracl
JDBC Driver class: oracle.jdbc.driver.OracleDriver
Username: lianggzone
Password:lianggzone


  附注:
  Database URL 格式:jdbc:oracle:thin:@[IP地址]:[端口号]:[实例名]
  用户名、密码就是连接数据库的用户名和密码
阅读(4856) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~