常见的性能测试是这样的:
有人开发了百度知道,然后,想知道单机的最大并发处理量是多少。这就需要性能测试了。然后,我们常见的性能测试方法是:
1.apache的ab;
2.JMeter;
3.loadrunner;
4.自己开发的工具。
先大致的评价下上面的几个方法:1.apache的ab。这东西,用起来很简单,就一个命令。缺点就是,可定制差,使用不是很方便。2.JMeter真的很强大,我们的性能测试自动化,就是使用JMeter实现的;3.loadrunner,这东西要收费的,功能很强大,但是自动化方面,不清楚。直接入正题,看看怎么实现性能测试自动化。
性能测试是很耗费时间、人力的事情,每次测试都需要有人来值守。在这里,提供一个JMeter和JMeter plugins,一起配合使用达到的性能测试自动化。
一、什么是JMeter?
JMeter是开源的性能测试工具,能够完成很多的测试任务。详细的可以参考:http://jmeter.apache.org。
1.1安装
先安装JMeter plugins,按照这里的步骤来安装。https://code.google.com/p/jmeter-plugins/wiki/PluginInstall
1.2 编写case
在windows下打开jmeter.bat,就可以看到编辑页面了。如下图:
第二步:右键测试计划,新建线程,配置线程数及循环次数。这里我们配置100*100 =10000次请求。
第三步:在线程上右键,选择add->sampler->Http Request Sampler。然后,配置好服务器地址,端口地址,get或者post的参数。如图:
第四步:在线程组上右键,选择add->Assertions->Response Assertion. 配置断言的参数,这样就可以让Jmeter为我们判断哪些请求是错误的。
第五步:在测试计划上右键,选择add->Timer->Constant Throughput Timer,配置每分钟的流量。这样就可以有一个稳定的压力。这里要注意,在测试计划上右键,而不是在线程组,这样这个timer才会生效。我们要400的压力,就需要400*60 = 24000.然后,下面的计算选择:all active threads.
最后,可以点击运行,查看是否我们需要的压力值,查看地址是否正确。 如果OK,就可以点击保存了,保存为performance.jmx。到这里,我们就完成case的编写了。对于复杂的case,可以添加cookie manager等来支持。
二、在linux上执行
我们可以直接执行,然后查看压力等情况。但是,个人的PC机难免会有很多的限制,压力可能起不上去,而且不方便我们持续集成,这里可以在linux上跑。
将jmeter的tar.gz包放到机器上,然后配置好java,这里需要java5以上,公司机器的默认java是不符合要求的。
可以使用如下命令:
sh ./jmeter.sh -n –t performance.jmx -l log.jlt
上面的命令,-n是不适用ui界面,也就是在linux下跑,-t是选择指定的测试计划;-l是将生成的结果保存为log.jlt,这也是我们后面提供给hudson的结果文件。
就可以看到Jmeter已经开始运行了。
三、hudson插件安装
然后,在job的配置里面,就可以规定我们认为OK的压力值。
四、hudson执行结果
至此,完整的压力测试就OK了。
上面的测试,最多只算是压力测试自动化,而不能成为性能测试自动化。真正的性能测试自动化,应该包含对CPU, IO, Mem等服务器资源的详尽分析。另外,还需要给出其最大的瓶颈是什么,能够承受的极限压力是什么。还需要自动的调节压力,并且在某些情况下,还需要分布式的压力测试。
所以,后期还会继续研究,如何完成:
1.服务端CPU、IO、Mem资源监控;
2.自动压力调节;
3.分布式压测
如此,便可以让性能测试完全自动化,并且有一个详尽的报表,能够将人力从手工的性能测试解放出来,提高性能测试的准确度及缩短性能测试的时间,并且可以不用三更半夜的压环境了~