过去长期用loadrunner做性能测试,但是渐渐觉得有些麻烦了:
1.只能运行在windows环境下,而生产环境几乎清一色的linux。为了在同一网段做性能或压力测试,还需要单独部署一套windows服务器,比较浪费。
2.loadrunner和浏览器版本绑定太严格了,比如loadrunner 11,最高就支持到ie9,有时候系统打补丁自动把浏览器版本升上去了,就无法录制脚本了。
3.版权问题也不容忽视,crack带来的各种风险也是存在的。
于是尝试了一下JMeter,发现还是相当好用的。在多数web性能测试中,功能也足够了。总结一下最常用的操作,帮助初学者快速上手。
安装:
Jmeter的安装实在是太省心了,就是解压缩即可。Windows版本通常是zip包,linux版本通常是tar包,只要系统上有JDK,直接解开就可以启动了。(\bin\jmeter.bat、\bin\jmeter.sh),启动后是这个界面:
录制脚本:
和loadrunner的主动启动被录制应用不同,Jmeter是启动一个代理服务器,由浏览器设置去使用这个代理服务器,以完成web请求的监控和录制。所以需要在工作台右键、添加——非测试元件——http代理服务器。
重点是为代理服务器设置一个和现有应用不冲突的端口。然后在浏览器里设置使用代理服务器,端口就是上述设定好的端口。点击启动按钮,代理服务器就开始工作了。此时通过浏览器访问web站点,所发出的请求就会被记录下来。
但是如果现在就开始录制的话,会在上面的列表中列出一大堆,显得很杂乱。所以先在测试计划中添加一个线程组。
添加线程组不只为了看着方便,还有几个作用:
线程组相当于loadrunner中的一个独立脚本,多个脚本可以组成一个测试场景。
模拟多用户时,也是以线程组为单位进行数量设定和调度设定的。
如上图中,对这个线程组采用模拟10个并发用户循环5次执行性能测试。
执行结果要能看到反馈才行,所以在测试计划中添加监听器。常用的监听器有SummaryReport、聚合报告(这两个非常接近,用一个即可)、察看结果树等。也有一些图形化的监听器用于各自需要的场合。
这样,一个基本的测试流程(录制、测试、报告)就完成了。再介绍一下参数化,这也是在性能测试中最常用的,比如各种查询。所谓参数化就是希望模拟用户操作的时候采用不同的参数数值。如模拟用户检索就希望每个虚拟用户发出不同的检索请求,这样才更能模拟实际情况。
此时需要先准备一个检索词列表到一个csv文件中。然后添加一个配置元件——CSVData Set Config,然后指定这个文件路径,并给每列数据指定一个名称。
命名之后,就可以在需要的地方,用变量名替换原有的固定字符串了。
当模拟多用户时,系统会用csv文件里的内容替换这个变量。
有些时候系统需要session信息来验证某些状态,如果没有发出的话会导致一些错误,这个时候添加——配置元件——HTTPCookie管理器就可以了。
常见步骤就是这些,通过调节参数设置,可以更精细地完成多种测试任务。这就需要在实践中逐步积累经验了。
原文地址:http://blog.csdn.net/zjc/article/details/46414065