`

使用jmeter测试web应用遇到的几个问题及解决

阅读更多

本周配合负责测试的同事对项目进行并发测试,选用开源的jmeter,之前同事下了loadrunner试用,
效果并不理想,对测试机本身的资源占用,导致压力无法"压"到服务上。相比之下,jmeter轻巧多了。
环境:
windows7 64位简体中文专业版
jdk1.6.0
服务 tomcat6.0

  • 下载   到官网(http://jakarta.apache.org/jmeter/)下载并解压jmeter到本地
  • 乱码 运行/bin/jmeter.bat 启动jmeter,出现中文乱码
    中文乱码
    打开同目录下的 jmeter.properties,去掉“#language=en”的注释,再次启动,语言改为英文了。
    改为英文界面
  • 录制 录制脚本
    • 在"Test Plan"中增加"Thread Group"
      增加thread group

    • 在"WorkBench"中增加“Http proxy Server”
      增加http proxy server

    • 完成后如下图,我的代理端口设置为8090:
       

    • 在浏览器中设置代理为localhost, 端口为上述8090。
    • 用浏览器访问web应用,这时所有http都经过jmeter转发,因此所有的http请求被jmeter录制并加入到Thread Group中。(注意如果Web应用在本机的话,不要直接用localhost访问,否则浏览器可能忽略代理设置,直接向web应用请求,我是好半天才醒 悟过来,google下,犯此错误的网友不少)
    • 录制结果

 

 

 

  • Session 要使jmeter能够保持住session,必须使其能够维持cookie中的jessionId,因此增加“http cookie manager”.
  •  
    • 维持session
  • 用户   并发线程以不同的用户名登录。  找到你的登录脚本,修改用户名为变量,例如:
    我的用户登录脚本为一个jsonRPC调用,用户名在http参数中
    录制脚本为 params:["L", {"map": {"user": "USER_TEST_u001}"
    将其修改为:params:["L", {"map": {"user": "USER_TEST_u2${__threadNum}"
    其中${__threadNum}为jmeter提供的函数,每个线程具有的独立id
    当然我的后台是允许所有前缀为“USER_TEST_”的测试用户登录的。
  • 循环 循环回放脚本
    • 录制的脚本回放用以模拟用户点击请求,如果想长时间压力测试,可以设置为循环回放脚本。
    • 循环回放
  •  
    • 设置适当的请求间隔。
    • 默认设置下,jmeter是前一个请求返回立即发送下一个请求,远远超出实际的用户点击,一般应当根据需要在两个请求之间设置时间间隔,我使用了“Constant Timer ”
    • 请求间隔
  • 并发LOOP
    • 我的测试用例包含两部分:1.用户的点击交互,录制为一系列jsonrpc请求; 2.Comet交互, 我设想分别建立两个thread Group,并发运行。
    • 结果却遗憾的发现:如果一个Thread Group包含了loop forever,jmeter将阻塞在这个loop,下一个thread Group将永不会启动。
    • 我的解决办法是将两个thread Group分拆到两个独立的test plan中,同时运行两个jmeter,不知道有没有更简洁的办法。
    BTW:javaeye在线编辑的编号功能实在不好用。
  • 大小: 26.9 KB
  • 大小: 29.7 KB
  • 大小: 56.6 KB
  • 大小: 49.5 KB
  • 大小: 49.7 KB
  • 大小: 82.8 KB
  • 大小: 80.1 KB
  • 大小: 81.5 KB
  • 大小: 58.2 KB
  • 大小: 58.9 KB
2
0
分享到:
评论
2 楼 chen4w 2013-01-05  
yanhui.qi 写道
在不?帅哥? 为什么我设置完之后录制不了脚本? 求知道啊。。。 ~~~

注意如果Web应用在本机的话,不要直接用localhost访问,否则浏览器可能忽略代理设置,直接向web应用请求
1 楼 yanhui.qi 2012-12-19  
在不?帅哥? 为什么我设置完之后录制不了脚本? 求知道啊。。。 ~~~

相关推荐

Global site tag (gtag.js) - Google Analytics