使用JMeter做web应用的压力测试

 

引用说明:原文来自于http://www.cnblogs.com/super119/archive/2011/01/13/1935017.html,为了方便本人阅读,文本格式略有调整。

 

 

 

 

和HttpUnit不同,JMeter是做压力测试的,而且JMeter不仅可以对web应用做测试,也可以对FTP服务器、LDAP服务器等进行测试。本文讲述如何使用JMeter来给web应用做测试 

首先是新建一个TestPlan和一个ThreadGroup,然后在里面加上各种各样的组件,也就是说,搞明白了JMeter的这些组件,测试就能做了,所以首先给出我本次测试EasyCluster的TestPlan文件: 

更直观一些,这里有张截图: 

首先我们新建一个ThreadGroup,Number of Threads表示模拟多少个用户来进行测试;Ramp-up Period表示多长时间把所有的Thread启完,也就是说,隔Ramp-up Period/Number of Threads就启动一个Thread;Loop Count表示一个Thread发出多少次测试请求,对于我们的web应用来说,就是发出多少次Http Request。 

然后添加一个 Http Request Defaults,有了这个,就不需要每次都在Http Request里面填server ip和port了,方便一些;然后添加一个Cookie Manager,对于某些使用cookie来实现session的应用来说,这是必须的;然后我们添加一个
Once Only Controller ,这是一种逻辑控制器,表示在该控制器下的Http Request,每个Thread只做一次,不会循环loop,所以,我们把主页和登录Action放在了这个下面;最后新建一个 Interleave Controller(交替控制器) ,这也是一种逻辑控制器,表示在该控制器下的Http Request,Thread会依次执行,而不是乱序执行。还有一种情况就是,如果Thread反复执行同一个Http Request的话,web server会有cache,所以这种测试不理想,使用这种交替控制器,每次给web server的请求就不一样,所以效果会好一些,特别对于“搜索信息”这种功能来说很实用;最后加一个表格查看工具,这属于listener组件,在这个组件中可以定义输出文件的路径和名称,没有这个组件,JMeter是没有输出的,呵呵。在这个组件里可以以表格的方式看测试request和是否 success。 

最后还要配置一个最重要的部件,就是URL rewriting modifier,因为tomcat的session实现不是通过cookie的,而是通过session id的,就是说,用户登录有了session之后,tomcat就会维护一个session id,然后每次request的时候,要求每个http request的URL都要带上这个session id,就OK了!所以,我们新建一个HTTP URL Re-writing Modifier,然后在他的属性里面需要填写一个“Session Argument name”,因为tomcat中,使用URL Re-writing mode,URL是这样的:http://192.168.0.2:8080/easycluster/Login.ec;jsessionid=B1A75F512FB84EF0D52091D2ADE91491 

,所以,这里我们需要在这一项中填写“jsessionid”,JMeter就会到URL里面按照这个参数去把上面那个session id抓下来,然后每次request都带上这个东东;需要注意,这里还要将“Path Extension(use ";" as separator)”勾上,因为如上,tomcat的URL Re-writing中session id是以分号的方式加在URL上的,所以需要勾上这个选项,有些web server这个session和普通的URL parameter一样,是以?和&这种方式加上去的,这种情况下这个checkbox就不用勾了! 

一切就绪了,选择run就开始测试了!此外,如果在Test Plan中选中“Function Test Mode”这个checkbox的话,JMeter就会记录每次请求获得的HTML代码,这会非常影响性能,但对于第一次测试,要测试我们的配置是否正确了,这也是有用的。

 


使用JMeter做web应用的压力测试_第1张图片

 

你可能感兴趣的:(JMeter)