不应该是家,窝更适合一点

发布新日志

  • Meter——HTTP COOKIE Manager(cookie管理器) 【zt】

    2016-06-01 17:11:48

    现在对于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 。。。略过 
  • Jmeter后置处理器之--正则表达式

    2012-10-31 13:07:47

        测试需要用到Jmeter自动生效一张单据,系统中用FlowTableID把各个环节串联起来,其中编辑保存的时候自动生成一个FlowTableID,后面审批,生效环节用到这个动态生成的ID,故用Jmeter的正则表达是自动匹配这个id:

    ~~~~·~~~~·~~~~·~~~~

    引用名称:FlowTableID
    正则表达式:<FlowTableID>(.+?)</FlowTableID>
    模板:$1$
    匹配数字:0

    ~~~~·~~~~·~~~~·~~~~
    在需要的地方用${FlowTableID}替代即可

  • JMeter技巧集锦

    2011-09-21 11:24:01

    收藏些介绍JMeter使用知识的文章

    1.JMeter技巧集锦

    http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-jmeter.html

    (网上该篇的中文译文)

    2.JMeter高级技巧

    http://www.informit.com/guides/content.aspx?g=java&seqNum=520

    3.使用 JMeter 完成常用的压力测试

    http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/index.html?ca=drs-
  • 描述性统计与性能结果分析

    2010-09-14 19:20:25

    LoadRunner中的90%响应时间是什么意思?这个值在进行性能分析时有什么作用?本文争取用最简洁的文字来解答这个问题,并引申出“描述性统计”方法在性能测试结果分析中的应用。

     

    为什么要有90%用户响应时间?因为在评估一次测试的结果时,仅仅有平均事务响应时间是不够的。为什么这么说?你可以试着想想,是否平均事务响应时间满足了性能需求就表示系统的性能已经满足了绝大多数用户的要求?

    假如有两组测试结果,响应时间分别是 {1351016} {56789},它们的平均值都是7,你认为哪次测试的结果更理想?

    假如有一次测试,总共有100个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信?

    为了解答上面的疑问,我们先来看一张表:

    在上面这个表中包含了几个不同的列,其含义如下:

    CmdID   测试时被请求的页面

    NUM      响应成功的请求数量

    MEAN    所有成功的请求的响应时间的平均值

    STD DEV      标准差(这个值的作用将在下一篇文章中重点介绍)

    MIN              响应时间的最小值

    50 th(60/70/80/90/95 th)          如果把响应时间从小到大顺序排序,那么50%的请求的响应时间在这个范围之内。后面的60/70/80/90/95 th 也是同样的含义

    MAX      响应时间的最大值

    我想看完了上面的这个表和各列的解释,不用多说大家也可以明白我的意思了。我把结论性的东西整理一下:

    1.      90%用户响应时间在 LoadRunner中是可以设置的,你可以改为80%或95%;

    2.      对于这个表,LoadRunner中是没有直接提供的,你可以把LR中的原始数据导出到Excel中,并使用Excel中的PERCENTILE 函数很简单的算出不同百分比用户请求的响应时间分布情况;

    3.      从上面的表中来看,对于Home Page来说,平均事务响应时间(MEAN)只同70%用户响应时间相一致。也就是说假如我们确定Home Page的响应时间应该在5秒内,那么从平均事务响应时间来看是满足的,但是实际上有10-20%的用户请求的响应时间是大于这个值的;对于Page 1也是一样,假如我们确定对于Page 1 的请求应该在3秒内得到响应,虽然平均事务响应时间是满足要求的,但是实际上有20-30%的用户请求的响应时间是超过了我们的要求的;

    4.      你可以在95 th之后继续添加96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用Excel的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且99%的用户请求的响应时间都是在性能需求所定义的范围之内的;

    5.      如果你想使用这种方法来评估系统的性能,一个推荐的做法是尽可能让你的测试场景运行的时间长一些,因为当你获得的测试数据越多,这个响应时间的分布曲线就越接近真实情况;

    6.      在确定性能需求时,你可以用平均事务响应时间来衡量系统的性能,也可以用90%或95%用户响应时间来作为度量标准,它们并不冲突。实际上,在定义某些系统的性能需求时,一定范围内的请求失败也是可以被接受的;

    7.      上面提到的这些内容其实是与工具无关的,只要你可以得到原始的响应时间记录,无论是使用LoadRunner还是JMeter或者OpenSTA,你都可以用这些方法和思路来评估你的系统的性能。

     

    事实上,在性能测试领域中还有更多的东西是目前的商业测试工具或者开源测试工具都没有专门讲述的——换句话说,性能测试仅仅有工具是不够的。我们还需要更多其他领域的知识,例如数学和统计学,来帮助我们更好的分析性能数据,找到隐藏在那些数据之下的真相。

  • Jmeter 问题汇总

    2010-09-01 09:30:01

        这篇文章记录一下平日用Jmeter碰到的问题和解决方法:

    1,中文乱码问题
    现象:使用badboy录制脚本后发现中文都变成乱码了,报错在数据库中的也是乱码
    解决:去掉请求发送值编码已打的“勾”

    2,401错误
    现象:脚本运行后发现除登录请求执行成功,其他请求都包401错误
    解决:添加http Cookie管理器
  • 使用jmeter对oracle进行sql压力测试

    2009-09-23 16:15:47


    1、确认电脑上下载了Jmeter,目前最新版为jmeter 2.3.4。

    2、COPY ORACLE的JDBC驱动JAR包文件(ojdbc14.jar)到JMeter的lib目录下。
    ojdbc14.jar文件一般位于ORACLE的安装目录下的jdbc\lib目录中

    3、进入bin目录运行jmeter.bat启动jmeter

    4、从测试计划里新增一个线程组

    5、新增 JDBC Connection Configuration,配置信息如下图所示,主要信息如下:
    Database URL:数据地址,格式为 jdbc:oracle:thin:@[IP地址]:[端口号]:[实例名],如下是本次的例子:
    jdbc:racle:thin:@10.10.90.4:1521:supora
    JDBC Driver class:数据库JDBC驱动类名,oracle.jdbc.OracleDriver
    Username:数据库连接用户
    Password:数据库连接密码

    6新增一个 JDBC Request,需要修改的参数包括:
    Variable Name:和上面的 JDBC Connection Configuration填写同样的内容。这里表示 JDBC Connection Configuration建立一个名为Oracle 的连接池,之后其它的JDBC Request都共用这个连接池
    Query:select * from table_name 。 这里建议打开你的数据查询工具,输入一条SQL查询语句,保证可以执行看到结果的,然后copy 过来

    7、新增一个View Results Tree

    8、点击 Run,查看结果。可以在Response data tab 看到响应的返回结果。
    这里需要注意的是jmeter在2.3.4后对驱动类的地址都进行了修改,如果像前面版本一样配置oracle.jdbc.driveer.OracleDriver将会导致找不到该类。对其他数据库(如mysql等)的测试方法也与此雷同。
  • Jemter 远程连接多台pc测试

    2009-06-18 09:29:06

        利用JMeter进行负载测试的时候,使用单台机器模拟测试超过1000个行程的并发就有些力不从心,在执行的过程中,JMeter自身会自动关闭,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的 Agent 来分担 JMeter自身的压力,并借此来获取更大的并发用户数,但是需要进行相关的一些修改,具体如下:

      1、在所有期望运行 JMeter 作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent。然后运行所有 Agent 机器上的JMeter-server.bat文件——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 Agent;

      2、在Controller 机器的 JMeter 安装目录下找到 bin 目录,再找到 JMeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;

      3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行 JMeter Agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的 1099 为 JMeter 的 Controller 和 Agent 之间进行通讯的默认 RMI 端口号;

      4、保存文件,并重新启动 Controller 机器上的 JMeter.bat,并进入 Run -> Remote Start 菜单项,在这里可以看到远程启动菜单下面有192.168.0.1 ,192.168.0.1两个IP地址

      5、如果要让某个电脑执行,可以点击改电脑的IP地址就可以,如果两个都要执行,可以点击Run 菜单下的“远程运行全部”菜单

      6、有时候用作代理的机器太少,仍不能满足需要,则需要将作为Controller的电脑也当作Agent,则同样需要修改 JMeter.properties文件,将Controller的IP地址写入。同时,这个时候,需要打先打开Controller 电脑中JMeter下bin目录下的jmeter-server.bat,然后再打开JMeter.bat,此时,进入Run -> Remote Start菜单,可以看到Controller也作为远程机器进行运行。

     

       在连接时报:connection refused to host:10.10.90.69 nested exception is...错误,后来发现是启动JMeter-server.bat时就报错了,分析原因是jmeter安装文件放到桌面上有中文字符引起的:解决办法把jmeter挪到其他没有中文字符的地方就ok了。

      另开始没发现启动JMeter-server.bat报错前以为是host:(C:\WINDOWS\system32\drivers\etc\hosts)没有配置的原因,同时配了10.10.90.70  liujun2.但后来发现去掉这个配置也没问题,那么原因就是中文问题了

  • Jmeter Linux资源监控器【转载】

    2009-06-02 10:56:46


        最近完成了jmeter linux资源监控器的开发,方法并不怎么高明,但相信可以帮助很多用jmeter来做性能测试的同仁解决jmeter缺少linux资源监控的问题附件中是编译好的包以及linux上所用的脚本。基本的原理是利用shell脚本生成资源xml,让jmeter利用http请求获取该xml,解析展现数据。
    欢迎各位同仁测试使用,有问题也可以与我交流。
        监控器实现的是linux系统上的资源监控,要求:服务器上至少有一个web server(因需要通过http请求获取资源xml),用于生成服务器资源xml的脚本中使用了sysstat包中的指令,所以需要安装sysstat包。
    使用方法:
    下载:
    LinuxResourcesMonitor.rar
    (2008-08-01 20:56:32, Size: 756 kB, Downloads: 0)


        首先解开压缩包,取出status脚本,登录到被监控的服务器上,将status脚本放上去。该脚本执行时会在所在路径生成status.xml文件,可以直接将status脚本放在web server的目录下,也可以用软链接来链到status.xml文件。下面介绍在基于apacheweb server上的配置方法:
        apache的配置文件httpd.conf中找到DocumentRoot,一般默认是apache目录下的htdocs,将status脚本放到该目录下;
    更改执行权限:
      chmod 744 status
      启动该脚本:
    .  /status start
    启动起来之后就会在当前目录下产生status.xml文件
    不需要监控时,停止该脚本:
    ./status stop




    然后到运行jmeter的机器上,解开压缩包里的ext.rar包,将解压得到的两个jar包:ApacheJMeter_core.jarApacheJMeter_monitors.jar,复制到jmeterlib/ext目录下,覆盖原来的jar包。
    之后就可以到jmeter上来监控了:打开jmeter,建立一个线程组,添加一个http请求,ip就是要监控的服务器地址,端口号就是apache侦听的http端口,协议是“http”,路径是“/status.xml”,勾选“用作监视器”;


    http request.JPG

    再为该http请求添加一个“固定定时器”组件和一个“监视器结果”组件,“固定定时器”的延时要设置为大于1秒的时间,即数据的采样时间。



    timer.JPG

    在线程组中循环次数设置勾选“永远”;



    thread group.JPG

    Run一下,就可以在监视器结果上看到刚刚添加的监控服务器了,目前已经监控了6个参数:cpu%user,cpu%iowait,load,mem%(used/total),swap in,swap out。


    monitor.JPG


    如果被监控的linux上没有安装sysstat包,是无法正常生成监控数据的,这里附上sysstat包的安装方法:
    首先到http://perso.wanadoo.fr/sebastien.godard/下载最新的版本,最好是源码包,比如sysstat-5.1.1.tar.gz

    1.解包:

    tar zxvf sysstat-5.1.1.tar.gz


    2.安装:

    cd sysstat-5.1.1

    make config
    这步可以省略,有些发行版中会出错;如果不用这个命令,可以直接安装到其默认的/usr/local/lib目录中

    make
    编译

    make install
    安装

    这样就安装好了。

  • Jmeter性能测试工具插件应用

    2009-05-31 17:16:31

     

    近日用Jmeter的插件做公司服务器的更换的性能测试,感觉还是蛮有用的,拿出来跟大家一块分享。

    什么是Jmeter,Jmeter能做什么?

    Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。

    能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。 

    完全的可移植性和100% 纯Java。 

    完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。 

    完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。 

    精心的GUI设计允许快速操作和更精确的计时。 

    缓存和离线分析/回放测试结果。 

    高可扩展性: 
      l 可链接的取样器允许无限制的测试能力。 
      l 各种负载统计表和可链接的计时器可供选择。 
        数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。 
      l 具有提供动态输入到测试的功能(包括JavaScript)。 
      l 支持脚本变成的取样器

    先简单介绍一下该插件的功能,可以统计每个请求的 Averager Time 、Min Time、Max Time;还可以不用启动Jmeter工具,在后台运行脚本,生成测试所需的数据,而且可以按你的想法,实现多个脚本,多组搭配,循环执行的功能,而且不需要担心服务器执行时间常,影响测试结果,因为你可以在执行中设置sleeping 时间,等完全释放内存,再运行等优点。

    软件配置:

    JDK5.0或更高版本

    Apache Ant1.7.0

    Jmeter2.x

    下面是具体的步骤:

    安装JDK

        这个不用说了吧

    2 下载安装Apache ant

    2.1 下载安装

      下载最新版本的apache  ant,解压放到自己硬盘的某个位置就可以了,本文使用的版本是:apache-ant-1.7.0,放到D盘下面。

      下载 ant-jmeter.jar 并且将ant-jmeter.jar 放ant 的库中(C:\apache-ant-1.7.0\lib)http://www.programmerplanet.org/media/ant-jmeter/ant-jmeter.jar

    2.2 设置环境变量

       变量名:ANT_HOME   变量值:D:/apache-ant-1.7.0 

       变量名: Path          变量值:在配置好的path后加“;%ANT_HOME%\bin”

    3  结果输出配置文件

        测试使用jmeter的ant任务进行测试,ant build文件如下:

    一个build.xml文件和一个build.properties文件build.xml为ant主要build文件,build.properties为ant build的变量设置。

    build.xml文件如下:

      <?xml version="1.0" encoding="UTF-8" ?> 

      <project name="Jmeter-test" default="testAll" basedir=".">

       <property file="./build.properties" /> 

       <property name="target" value="${basedir}/target" /> 

       <target name="testAll" depends="results-report-test1" /> 

       <target name="results-report-test1">

       <!--  summary   --> 

        <xslt in="${basedir}/plan\result_05\采购_10X50.jtl" out="LJ_result/LJ1.html" 

         style="${jmeter.home}/extras/jmeter-results-report_21.xsl" /> 

        </target>

         </project>

        节点xslt为XSL转换命令,将测试结果文件通过XSL转换输出HTML格式文本。

    对上面的代码做一个简单的说明

         1, depends="a,b,c,...."(a=results-report-test1),depends为ant内部命令,该任务的完成必须依赖depends里面的任务,当里面的任务作为前提执行完毕后,再执行本任务。

         2, <target name="a">

            ......     

         </target>

         <target name="b">

            .........    

         </target>

          ....n个target

    Target为ant目标任务,是ant的内部命令。

         3,in="${basedir}/plan\result_05\采购_10X50.jtl"  .jtl文件存放的路径

       out="LJ_result/LJ1.html"     .html文件输出的路径,保存的路径可以按照自己硬盘设置

         4,build.properties文件:jmeter的存放路径:如,jmeter.home=D\:\\jmeter

    4   测试任务配置文件

    另一个build.xml文件和另一个build.properties

       <?xml version="1.0" encoding="UTF-8" ?> 

       <project name="Jmeter-test" default="testAll" basedir=".">

        <property file="./build.properties" /> 

        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 

         <target name="testAll" depends="test10×50" /> 

       <target name="test10×50">

         <jmeter jmeterhome="${jmeter.home}" testplan="${basedir}/采购_10×50.jmx" 

          resultlog="${basedir}/result_05/采购_10X50.jtl" /> 

         </target>

         </project>

        Jmeter任务为jmeter测试任务,jmeterhome为jmeter存放路径,testplan为jmeter测试用例存放文件,resultlog为jmeter测试结果输出文件路径,若文件已经存在,以追加的方式将结果写入jtl文件中。

    使用ant命名运行测试用例,不用打开jmeter GUI界面,可以减少UI界面对测试结果的影响。

    简单说明一下:

         1,testplan="${basedir}/采购_10×50.jmx"   jmeter脚本存放的路径

         2,resultlog="${basedir}/result_05/采购_10X50.jtl" />    jtl文件存放的路径

         3生成jtl文件

        手动生成--运行jmeter脚本生成:线程组--添加监视器--Simple Data Writer,在jmeter右边“所有数据写入一个文件”设置jtl文件的存放路径。

        自动生成--执行上面的build.xml文件自动生成

    运行

        打开cmd 切换到D盘,因为我所有文件都在D盘,运行个build.xml文件,就再进入那个文件夹,如“cd 2009-05”生成请求结果的build.xml 再ant,等执行成功了,查看.html的输出路径 另一个build.xml文件同理

    切换到build.xml所在目录,键入ant命令即可运行,如果目标文件名称为非build.xml,可以通过指定文件进行运行,如ant –f build2.xml,  build2.xml为目标文件名称。

Open Toolbar