举例说明JMETER的用法-某网站压力测试

jmeter是apache出品的网站压力测试软件,功能十分强大,运行时需要java支持,java的安装和配置这里不再赘述。

这里以2.13版本为例,下载jmeter并解压至任意目录,运行bin文件夹里的jmeter.bat。注意jmeter在测试时会把生成的文件比如htm等直接放在bin目录里,所以如果你的jemter文件夹越来越大就到bin目录里看看吧。

由于jmeter功能强大,以模块化方法支持各种测试方案,排列组合无法一一展开,这里仅以最常用最基本的测试为例说明,即模拟多线程同时登录和查询。

以下内容黑色部分为报告正文,红色部分为软件设置说明没有包括在报告中。

 

某网站压力测试报告

测试环境:

软件:32位Window 7专业版+Java1.7

硬件:奔腾双核[email protected]+2G内存

测试软件:Apache Jmeter2.13

服务器环境:

软件:32位centos5.5+Java1.6+Mysql5.0+Tomcat7.0

硬件:奔腾双核[email protected]+2G内存

测试日期:2015-7-22

测试方法:在100秒内发起500个并发连接(平均每秒5个),每个连接均执行1次登录及10次查询操作。

软件设置:

这里先一次性将所有的测试模块添加完毕,最后进行设置。

在jmeter的左侧菜单树右键单击测试计划,添加-threads(users)-线程组。(jmeter的汉化就是这么任性,喜欢的地方汉化一下,不喜欢的就拉倒),这样左边的测试计划下就多出一个线程组了。

右键单击线程组,添加-samlpler-http请求。

右键单击http请求,添加-断言-响应断言。

右键单击线程组,添加-配置元件-http cookies管理器。

右键单击线程组,添加-逻辑控制器-循环控制器。

右键单击循环控制器,添加-sampler-http请求。

右键单击循环控制器里的http请求,添加-断言-响应断言。

右键单击线程组,添加-监听器-图形结果。

右键单击线程组,添加-监听器-查看结果树。(这一项是为了方便查看具体每个线程的响应数据,没有在报告里体现)

右键单击线程组,添加-监听器-聚合报告。



 


组件添加完毕后进行设置。

1.在线程组里将线程数设为500,将ramp up period(in second)设为100, 这样就是在100秒内平均发起500个连接数。

2.在线程组下面的http请求里设置服务器的地址,端口,路径,并在parameters选项卡里添加2个同请求一起发送的参数即用户名和密码,名称就是登陆页面表格里的input名称,值就是用户名和密码了。http请求的方法按实际情况选择get或post(应该没有人会用get吧这里)。注意有的网站不允许同一个用户名同时多次登陆,需求修改网站配置或程序。

3.在这个http请求下面的响应断言里设置登录后的正确响应文本,添加一个登陆后才有的关键词即可,比如用户名和密码都正确会提示欢迎二字,那么这里添加一个响应文本为欢迎即可,这样在自动测试的时候jmeter就会自动判断是不是登陆成功了。

4.将循环控制器里的循环次数设为10,意思就是登陆成功后再执行10次查询。

5.在循环控制器下的http请求里设置登录成功后要执行的查询操作,填写ip,端口,路径,选择http请求的方法,等等,和第2步类似。

6.在这个http请求下的响应断言里设置查询成功后的正确响应文本,和第3步类似。

这样就都设置完毕,可以点击运行-启动,或者直接点击绿色箭头了,等待若干时间,点击图形结果或聚合报告查看测试结果。

测试结果:

样本数量:5500,包括500次登陆请求和5000次数据请求;

平均连接时间:21毫秒;

95%的样本连接时间低于33毫秒;

错误率:0%;

服务器吞吐量:每秒54.4次

数据流量:每秒3005.3KB。

 

服务器端CPU及内存占用情况:

峰值:

平均值:

测试完成后:

 

其他测试:在尝试更多并发数时出现多种报错,包括本机内存溢出、服务器响应超时等。

测试说明:测试结果表明服务器承压能力出色,服务器资源占用在正常水平内,网站程序设计合理,测试时连接时间短,错误率极低,每秒5人次登录请求足够满足使用要求。