zoukankan      html  css  js  c++  java
  • Http Cookie Manager、session

     1.

    JMeter Http Cookie Manager的作用: 
    (1)自动管理 
    (2)象浏览器一样的存储和发送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_的值。 
    (3)手动添加Cookie到Cookie Manager,需求注意的是这些Cookie的值被会所有线程共享 

    2、手动管理Cookie:手动添加Cookie到Cookie Manager,这些Cookie的值被会所有线程共享。 

    比较简单的做法是使用firefox的firebug导出cookies 

    然后,在把文件导入到jmeter

    特别注意:

    Jmeter官网上有这样一段话:

     

     意思是说:

      如果在一个测试计划内有多个Cookie Manager ,Jmeter目前无法指定哪个被使用。所以,一个测试计划内最好只有一个cookie manager。并且,一个manager里的 cookie 并不能被其它manager所引用。所以在使用多个Cookie Managers 时要谨慎。  

      同理,上面这个规则同样适用于config element下面的其它manager:

    一个测试计划最好只有一个Manager组件,因为Jmeter无法处理多个Manager的情况。但在一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加。

    运行结果:

    总结:

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

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

     http://www.cnblogs.com/puresoul/p/4853276.html

    JMeter Http Cookie Manager

    一、JMeter Http Cookie Manager的作用: 
    1,自动管理 
    2,象浏览器一样的存储和发送Cookie。
    如果你请求一个站点,然后他的Response中包含Cookie,Cookie Manager就会自动地保存这些Cookie并在所有后来发送到该站点的请求中使用这些Cookie的值。(在View Results Tree的Request界面可以看到被发送的Cookie Data, 同时每个线程的Cookie Manager是相互独立的)接受到的Cookie的值能被存储到JMeter 线程变量中(2.3.2版本后的JMeter不自动做这个事情)。要把Cookies保存到线程变量中,要在jmeter.properties文件中增加定义属性"CookieManager.save.cookies=true"。 线程变量名为COOKIE_ + Cookie名。在Debug Sampler中就能看到COOKIE_xxx这样的变量(或者也可以使用正则表达式来提取Cookie的值)。属性CookieManager.name.prefix= 可以用来修改默认的COOKIE_的值。 
    3,手动添加Cookie到Cookie Manager,需求注意的是这些Cookie的值被会所有线程共享 

    二、JMeter Http Cookie Manager的属性: 
    1,Clear Cookies each Iteration   
    If selected, all server-defined cookies are cleared each time the main Thread Group loop is executed. In JMeter versions after 2.3, any cookies defined in the GUI are not cleared. Yes ,
    2,Cookie Policy
    The cookie policy that will be used to manage the cookies. "compatibility" is the default, and should work in most cases. Seehttp://hc.apache.org/httpclient-3.x/cookies.html and http://hc.apache.org/httpclient- ... e/CookiePolicy.html [Note: "ignoreCookies" is equivalent to omitting the CookieManager.] Yes 
    3,User-Defined Cookies
    This gives you the opportunity to use hardcoded cookies that will be used by all threads during the test execution. 
    The "domain" is the hostname of the server (without http://); the port is currently ignored. No (discouraged, unless you know what you're doing)
    Html代码  [url=]file:///C:/%5CUsers%5CDANCY~1.DEN%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_image002.gif[/url]
    1.  以下Cookies标准,HttpClient3.1可以支持。  
    2.  RFC2109  
    3.  RFC2109是W3C组织第一次推出的官方Cookies标准。理论上,所有使用版本1Cookies的服务端都应该使用此标准。HttpClient已经将此标准设定为默认。  
    4.  遗憾的是,许多服务端不正确的实现了标准或者仍然使用Netscape标准。所有有时感到此标准太多于严格。  
    5.  RFC2109是HttpClient使用的默认Cookies协议。  
    6.   
    7.  RFC2965  
    8.  RFC2965定义了版本2并且尝试去弥补在版本1中Cookie的RFC2109标准的缺点。RFC2965是,并规定RFC2965最终取代RFC2109.  
    9.  发送RFC2965标准Cookies的服务端,将会使用Set-Cookie2 header添加到Set-Cookie Header信心中,RFC2965 Cookies是区分端口的。  
    10.      
    11.    Netscape标准  
    12.    Netscape是最原始的Cookies规范,同时也是RFC2109的基础。尽管如此,还是在很多重要的方面与RFC2109不同,可能需要特定服务器才可以兼容。  
    13.      
    14.    Browser Compatibility  
    15.    这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按照标准来实现的。如果你遇到了解析Cookies的问题,你就可能要用到这一个规范。  
    16.    有太多的web站点是用CGI脚本去实现的,而导致只有将所有的Cookies都放入Request header才可以正常的工作。这种情况下最好设置http.protocol.single-cookie-header参数为true。  
    17.      
    18.    Ignore Cookies  
    19.    此规格忽略所有Cookie 。被用来防止HttpClient接受和发送的Cookie。  
     
     
    我们并没有在程序中使用cookie(使用的是session),那么http cookie管理器怎么会起作用呢?这是因为在servlet/jsp规范中对于session的状态跟踪有2种方式:
    1 使用cookie,保留和传递sessionid。它不要求程序对于url有什么特殊的处理,但是要求浏览器允许cookie。在这个例子中,就是这种情形。 
    2 使用url重写,每次显式的在浏览器和服务器之间传递sessionid。它要求程序对url进行编码,对浏览器没有要求。 

    对于第二种情形,可以使用JMeter前置管理器中的http url重写修饰符来完成。对于Tomcat,Session参数是jsessionid,路径扩展使用";"。
    使用url编码时需要注意,必须将浏览器的cookie功能关闭。因为url编码函数,如encodeURL,会判断是否需要将sessionid编码到url中。当浏览器允许cookie时,就不会进行编码。
     
    四、对于jmeter的session管理- -
                                           
    以下是对sesion的配置的总结(因为session对应只是一个session id):
    1、要在tomcat的/conf/Catalina/localhost下的对应的xml文件加上"cookies="true",这样就可以用cookies来保存session id;
    2、在jmeter加一个HTTP Cookie Manager,这样就可以提交session id了;
    3、每个Http Request中,不要选中redirect automatically,否则以后的seesion id 会不一致;
    Question:对于session中的值在jsp中作为参数传回到servlet,在jmeter中如何处理。
     
    五、补充JMeter资源基础:

    JMeter允许你开发测试方案,用以测试可访问的HTTP,FTP和JDBC数据库服务.JMeter可使用cookie和URL重写来处理Servlet验证,因此,在测试JSP应用程序时表现良好.

    http://www.webjx.com/htmldata/2005-09-01/1125532774.html
    1 JMeter作用领域
    JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。

    http://www.kaoshi.ws/a/49136/100000000


    使 JMeter 启动时显示中文页面(JMeter-2.0.3) 
    在 <JMeter_HOME>/bin 目录下的 jmeter.properties 中设置 language=cn 

    说明: JMeter 可以在 UI 上使用菜单切换语言文字, 但是我一直没法猜到中文是"cn", 猜了很多"zh_CN", "zh-CN", "zh" 都不得要领, 只有去看源代码才发现原来是"cn"
  • 相关阅读:
    LeetCode(258):Add Digits
    LeetCode(7):Reverse Integer
    LeetCode(14):Longest Common Prefix
    LeetCode(58):Length of Last Word
    LeetCode(165): Compare Version Numbers
    LeetCode(20):Valid Parentheses
    LeetCode(125):Valid Palindrome
    Scala中Curring实战详解之Scala学习笔记-16
    Scala中SAM转换实战详解之Scala学习笔记-15
    Scala学习笔记-14
  • 原文地址:https://www.cnblogs.com/shengs/p/5012886.html
Copyright © 2011-2022 走看看