Jmeter性能测试方法
By 杨会会 2011-11-15目前进行性能测试的工具有很多,LoadRunner,就是常用的性能测试工作,它功能强大,有强大的分析工具,但是安装起来却费事又费力。而jmeter是一个轻量级的代理LR 的性能测试工具。
区别
1.Jmeter与LR
Apache Jmeter是一个100%的纯java桌面应用,用于压力测试和性能测试。Jmeter最早是为了测试Tomcat的前身JServ的执行效率而诞生的,主要是针对web的压力和性能测试,但后来扩展到其他测试领域。从下面的图中我们可以看到:Jmeter可以用于测试FTP、HTTP、RPC、JUNIT、JMS、LDAP、WebService(Soap) Request以及Mail和JDBC(数据库压力测试)。
同时, JMeter可以帮助你对你的应用程序进行回归测试. 通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值. 为了更高的适应性, JMeter允许你使用常
规表达式来创建这些assertions.
3.性能测试的流程
性能测试的流程都差不多,搭建环境,设计场景,到适合的工具,录制编写脚本,进行测试,最后对结果进行分析。下面就针对整个流程进行讲述。
3.1.搭性能测试环境。
性能测试的环境要在合适的机器上搭建,首先机器不能配置太差,比如虚拟机之类的就最好不要是用了。其次机器不要运行的程序太多,空机器就最好了。如果是为了测试线上机器的使用,最好在线下配置与线上的环境有相近的CPU核数,内存大小等。
3.2.确定测试场景
根据项目的特定,跟PM与RD,最好叫上O P确定需要测试的场景。需要多少人并发,并发多长时间。以及可以接受的数据,比如50人并发,登录按钮反应时间在3s内可接受等,这些数据是我们进行性能测试的参考。根据这些数据,可以确定压力的极限,并推测机器的负载。
3.3.录制脚本
搭建好环境,确定场景之后,就是录制脚本的阶段了。这里选择jmeter作为性能测试工具。下文会详细介绍如何使用jmeter进行性能测试。
3.4.编辑脚本
录制好的脚本中,经常会有一些我们测试不需要的数据和流程,这就需要对这些进行删除,比如图片,css或者js文件的反应等。如果需要用户coo k ie的,在线程组中增加coo k ie管理器。增加当时的用户coo k ie。
3.5.性能测试
编辑好脚本之后,根据确定的场景,就可以进行性能测试了。
性能测试除了要得到工具给我们的分析结果(平均反应时间,吞吐量,错误率等)之外,我们还需要监控一些机器的性能。常见的需要监控的机器性能指标有:CPU_IDEL,MEM_USED,磁盘读写I O,网络传包速率。如果项目还使用了数据库,还可以监控主从数据库的磁盘读写I O,网络传包速度等。这些数据对我们下面进行的结果分析有很大的用处。
3.6.结果分析
进行性能测试的结果分析并不是一件简单的事情。首先要根据已有的标准,查看平均反映时间,吞吐率等是否符合标准。如果不符合标准,就要查看问题出在哪里,这就需要上面我们提到的指标来综合分析了。 比如CPU_IDEL,MEM_USED的变化情况反映了压力期间cpu和内存的使用情况,而磁盘I O则反映了项目是否进行了频繁的数据读写操作。网络
传包率而是查看压力期间网络传包的变化。再综合数据库机器的变化,判断问题的瓶颈所在。如果自己分析不了,最好和rd,op一起进行分析。
4.Jmeter进行web性能测试方法
了解了性能测试的方法,再选择一个合适的工具,就可以开展性能测试了。
4.1.Jmeter安装和启动
4.1.1Jmeter安装
Jmeter:ja k g/jmeter/。从下载下来之后,直接解压即可。
4.1.2Jmeter启动:
Jmeter启动有两种方式,GUI类型和命令行类型。
1)GUI类型,只要双击%JMETER_H O ME%/bin下的jmeter.bat即可。
2)命令行类型:这种方式是jmeter经常使用的启动方式。由于使用GUI类型容易发生日
志过大导致java内存溢出的错误,通过命令行启动,可以等到运行完毕之后,再查看日志,就避免了滚动的庞大日志记录。
命令行启动jmeter,需要调用jmeter命令,且给出jmx所在位置和日志所在位置。
Jmeter的命令行参数如下所示:
-n This speci f ies JMeter is to run in non-g ui mode
-t [name o f JM X f ile that contains the Test Plan].
-l [name o f JTL f ile to lo g sample results to].
-r Run all remote servers speci f ied in JMeter.properties (or remote servers speci f ied on command line by overridin g properties)
The script also lets you speci f y the optional f irewall/proxy server in f ormation:
-H [proxy server hostname or ip address]
-P [proxy server port]
例如常用的命令行启动如下:jmeter -n -t E:\项目\support\机器服用压力测试\2011-10-25\do-lo g in.jmx-l E:\项目\support\机器服用压力测试\2011-10-25\lo g\jmeter2.lo g
4.2.Jmeter脚本录制
4.2.1BadBody录制
网络上很多文章推荐使用badbody进行录制,但是badbody录制的脚本转到Jmeter之后,会出现不能兼容的情况,发生很多错误。对于一般页面的录制,笔者还是希望通过jmeter自带的录制工具进行录制。
如果出现jmeter不能录制的情况,可以参考badbody录制,badbody录制网络上资料很多,这里不作详细介绍。
4.2.2Jmeter脚本录制
1、新建一个测试计划,并在线程组中添加逻辑控制器-录制管理器。
2、在工作台中添加非测试单元-http代理服务器。
3、端口:即代理服务器的设置端口,一般设为8080.
目标控制器:测试计划->线程组
发送ajax请求的步骤分组:每个组放入一个新的控制器。
4、取样器之间还可以设置一定的延迟,也可以不设置。设置延迟的方法:
在HTTP代理服务器中添加定时器-高斯随机定时器(用于告知Jmeter来在其生成的HTTP请求中自动的增加一个定时器)。定时器将会使相应的的取样器被延迟。 延时的规则是,在上一个访问请求被响应并延时了指定的时间后,下一个被定时器影响的取样访问请求才会被发送出去。
如果在代理服务器元件里使用了高斯随机定时器,就应该在其中的固定延迟偏移(Constant Delay Off set)设置项里添上${T}(用于自动引用纪录的延迟时间)。
5、代理服务器设置:打开浏览器,打开Internet选项,将局域网(LAN)设置中的代理
服务器设为localhost,端口为在代理服务器中的端口:
6、启动代理服务器,进行录制。
点击jmeter中代理服务器的启动即可。然后再代理浏览器中操作,jmeter会录制下操作的过程。
4.3.脚本的编辑
录制下来的包括很多文件,比如js,css,jp g等都包含在内。这就需要我们手动对录制的脚本进行编辑,删除这些不用的文件。针对特定的ajax请求或者do请求进行测试。如下即为笔者对脚本编辑后的结果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论