问自己今天是否比明天进步了 !

我用Jmeter的感悟!

上一篇 / 下一篇  2011-08-01 21:11:30

   以前用过jmeter做过简单的测试,这次又重新捡起来居然忘了一大半,想想自己还是没有总结,哀哉了一番,呵呵 但是工作还要继续做的!  
  看了一下使用手册,大概就能用起来了 ! 这次测试用到了相关的知识自己认为还是个皮毛,不过也要把皮毛总结一下,以免以后连皮毛都没有了 ! 
   1.jmeter的原理是线程组来组成测试,所以你要添加任何的组件必须要有一个线程组,  
   2.然后在线程组里面添加你要设置的请求(http请求)设置ip ,端口, 编码,还有路径 ,参数  
 比如你的url是 http://www.songtaste.com/music/catsong/cat13/2?action=spaceblogs&op=add&openwindow=1
     那么path=/music/catsong/cat13/2  
    参数是action=spaceblogs&op=add&openwindow=1   
3.然后就是添加监听器了,最有用的是:聚合报告, 以结果树显示(因为能看到返回的值),以图表显示(能看到线程运行的线路图) 
4.参数化,我用的是csv参数 ,在数据库里面导出一个csv数据,填好路径,然后设置好变量 ,这个变量要再参数里面的值引用 ,如果 ?{request}

5.然后就是设置你的线程数 ,这个地方有很多的讲究, 线程数就不用说了,就是你要模拟的并发用户数, ramp up time  ,这个是在这个时间里面启动你要设置的线程数,比如你的线程数是20 ,rampup=1  那么就是1s里面要启动20个用户 ,然后就是 在每隔1/20s启动一个用户 ,下面的循环次数也是很有讲究,开始的时候我只是设置了为1,但是后来才发现, 在取样数增加的情况下, 就在前面的1/3数出错,所以如果循环一次,得到结果就不是很客观,所以大家一定要注意,对于压力测试,本人理解一定要循环次数要多运行,我运行的是20次  !  
6.在线程组的下面可以设置启动时间的,这样你就可以在jmeter里面设置不同的线程组,然后设置不同的启动时间,然后在线程组的外面加上监听器 , 这样就可以在下班的时候点击一下启动 ,第二天早晨你就可以拿到报告了,最后别忘了提醒你一下,别忘了点击启动,别向我一样傻傻的设完了时间,就在那傻等着 呵呵 ! 

7.还有就是做分布式的负载测试, 就是在你要做server的机器上 ,在jmeter的目录下,把propert下面host原来的172.0.0.1修改成你要作为负载机的ip就可以了,多台用逗号隔开,然后把负载机上的jmeter.server 打开 ,然后在server机上就可以看到远程机,设置好各个选项,启动就可以了 ! 

总结经验,在测试前,一定要和开发谈好各个细节,比如测试的参数,测试的数据库,这个测试的时候,开始的时候偷懒没有做参数化  , 还有测试开始的时候要多试试,比如如果新的数据写入的时候如果是新的数据,那么througout就很变小,如果还是老的参数,那么throughput就不会变化,所以对于数据库的测试,
1)要注意参数一定要重新写入的,不能是老的数据 ! 
2)就是原来数据库里面有多少条数据,这个要影响数据库的写入速度 ! 所以这个很重要  
3)还有就是你加压的方式 ,比如我是在做 200 *20 , 然后就做 400*20 ,然后就是 600*20  这样到600就有没有响应的数据 , 然后如果你直接运行 800*20 就么有出错的,这个我想了很长时间,个人认为,这个要看你的客户真实的压力模式,所以我用不断加压的形式来运行 !  

4)还有这次在测试多次后,发现一个奇怪现象,就是在线程不断增加的情况下, throughout不断的下降,但是错误率并没有增加,后来分析有两个原因,就是写入数据库的数据一定要新的 ! 还有和数据库里面的数据的条数有关系。

这个就是我用的jmeter的一点体会 ,不过还没有用到逻辑控制器,正则表达式,还有用命令行启动以后再仔细研究一下 !  


TAG:

方玲草 引用 删除 jlsxz   /   2011-08-02 10:21:43
学习了
方玲草 引用 删除 jlsxz   /   2011-08-02 10:21:15
5
 

评分:0

我来说两句

Open Toolbar