jmeter是 apache 出品的网站压力测试软件,功能十分强大,运行时需要java支持,java的安装和配置这里不再赘述。
这里以2.13版本为例,下载jmeter并解压至任意目录,运行bin文件夹里的jmeter.bat。注意jmeter在测试时会把生成的文件比如htm等直接放在bin目录里,所以如果你的jemter文件夹越来越大就到bin目录里看看吧。
由于jmeter功能强大,以模块化方法支持各种测试方案,排列组合无法一一展开,这里仅以最常用最基本的测试为例说明,即模拟多线程同时登录和查询。
以下内容黑色部分为报告正文,红色部分为软件设置说明没有包括在报告中。
某网站压力测试报告
测试环境:
软件:32位Window 7专业版+Java1.7
硬件:奔腾双核E5200@2.5GHz+2G内存
测试软件:Apache Jmeter2.13
服务器环境:
软件:32位centos5.5+Java1.6+Mysql5.0+Tomcat7.0
硬件:奔腾双核E5400@2.7GHz+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人次登录请求足够满足使用要求。