您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Jmeter性能测试工具使用总结
Jmeter使用总结1.下载ApacheJMeter是Apache组织开发的基于Java的压力测试工具。下载链接:安装Jmeter需要Java环境支持,首先配置系统JAVA环境变量。Windows:解压apache-jmeter-ver.zip文件,运行bin目录下jmeter.bat文件启动。Linux:解压apache-jmeter-ver.zip文件,运行bin目录下jmeter.sh文件启动。3.Jmeter主要组件简单介绍a.测试计划:Jmeter测试起点,是其他组件的容器。b.线程组:设置测试并发线程数量,迭代次数或者运行时长。c.配置元件:主要是配置信息,主要使用请求头信息、变量等。d.Samler:指定发送的请求,所有的测试任务都在该组件完成。e.监听器:负责测试结果显示,支持把测试结果写入到文件。常用监听器:察看结果树,显示请求和响应的细节,一般在测试脚本是否正确时使用;聚合报告:性能测试结果统计,显示总请求数,平均响应时间,错误率,TPS,数据传输速度等。4.使用Jmeter创建测试计划实例(以公有云为例)a.运行bin目录下jmeter.bat文件启动Jmeter,界面如下b.添加线程组并改名为Upload4KBObject。右键测试计划-添加-Threads-线程组。c.给线程组添加Http信息头,并添加所需字段。d.给线程组添加Sampler,Http请求。e.给线程组添加监听器,察看结果树。f.运行该测试计划并察看结果树结果。5.参数化实现。性能测试需要高并发迭代,这样实现上传文件名(或者bucket名)参数化就是必须的了。这里以4中Http请求中的路径文件名为例。a.首先添加配置元件-用户定义的变量添加变量名字及值。(值在这里就是参数化的内容,以${}).b.修改HTTP请求路径中的文件名字为${fileName}.c.添加配置元件-CVSDataSetConfig配置参数的取值。d.添加监听器-聚合报告。e.设置线程组线程数为3,循环次数为2,执行线程组,查看聚合报告。6.Linux系统下使用。由于Jmeter有图形界面,因此需要使用远程图形界面连接,如果服务器配置有VNCserver,直接使用VNC客户端连接即可。如果服务器VNCserver没有启动或者不可用(移动云主机VNCserver端口没有开放),可以使用其他远程图形连接工具,这里介绍一款开源的软件,XMING和putty使用Linux在windows系统下的图形界面。a.在windows安装XMING。下载地址,默认安装即可。b.在Linux(以Centos为例)服务器安装图形界面组件。yum-ygroupinstallDesktopyum-ygroupinstallXWindowSystemc.编辑ssh配置文件,允许ssh的图形界面转发。vi/etc/ssh/sshd_configX11Forwrdingyes;取消这一行的注释——如果没有这一行则手动添加。d.设置puttySSH选项,配置好主机名后选择Connection-SSH-X11,如下图设置:e.登录后cd至jmeterbin目录,以后台模式执行./jmeter.sh&,启动jmeter图形界面。7.Jmeter分布式运行。由于单台机器并发请求数有限,因此需要使用分布式测试扩大并发数量,具体设置步骤如下:a.在所有运行Jmeter的机器上安装Jmeter,选择一台作为Controller主机,其他机器作为Agent主机,当然Controller主机本身也可以是Agent。b.编辑Controller主机Jmeterbin目录下jmeter.properties文件,修改remote_hosts=192.168.0.5:1099,192.168.0.6:1099。假设192.168.0.5,192.168.0.6为Agent主机地址,1099为Controller主机默认服务端口。c.Agent主机执行bin目录下jmeter-server.bat(Linux则为jmeter-server,同时需要编辑该文件RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.0.5,指定Jmeter使用的IP地址)d.Controller主机执行bin目录下jmeter.bat(linux则为jmeter.sh),此时在远程启动中即可看到Agent主机了。e.Controller主机设置的线程数和循环数是指每台Agent主机都是这个配置,假设Controller主机配置10线程,循环10次,有两台Agent主机,则总线程数为10*2=20,总的迭代次数10*10*2=200。同时需要注意的是测试数据和参数文件需要放置在Agent主机。8.Jmeter自定义测试脚本。由于某些请求,例如带认证字段的请求,Jmeter无法实现认证字段的动态生成,无法直接使用HTTP请求完成,此时需要自定义测试脚本来实现请求。这里以七牛的上传对象请求为例,七牛云存储上传对象请求和删除对象请求Authoration字段为必选字段。a.使用eclipse创建一个新的Java项目,名字为QNUp4KBObject,配置buildpath,添加青牛sdkjar包及依赖包,添加jmeterlib/ext目录下的所有jar包。b.新建类QNUpload4KB.java,并且该类继承AbstractJavaSamplerClient,继承抽象方法runTest(),该方法是Jmeter请求执行函数体,测试任务实体即在该函数中实现。具体代码如下:publicclassQNUpload4KextendsAbstractJavaSamplerClient{privateSampleResultresults;//jmeter测试结果privateStringfileName;publicArgumentsgetDefaultParameters(){Argumentsparams=newArguments();/**定义一个参数,显示到Jmeter的参数列表中,第一个参数为参数默认的显示名称,第二个参数为默认值*/params.addArgument(fileName,);returnparams;}publicvoidsetupTest(JavaSamplerContextarg0){/*线程开始前操作*/}publicSampleResultrunTest(JavaSamplerContextarg0){results=newSampleResult();//实例化jmeter结果对象results.sampleStart();//jmeter开始统计响应时间标记fileName=arg0.getParameter(fileName,4kB);//获取参数值,第二个参数为默认值try{Upload4kbuo=newUpload4kb();//文件上传类Stringtoken=uo.genToken();//获取认证字段uo.putFile(token,fileName);//文件上传操作results.setSuccessful(true);//没有异常则设置测试结果为true}catch(Throwablee){results.setSuccessful(false);}finally{results.sampleEnd();//jmeter结束统计响应时间标记}returnresults;}publicvoidteardownTest(JavaSamplerContextarg0){/*线程结束后操作*/}}c.新建文件上传类,实现文件上传操作,给QNUpload4K类调用。publicclassUpload4kb{StringbucketName=onest-20141028;StringlocalFile=D://testdata//test-4KB.txt;publicstaticMacgetMac(){/*七牛自定义的一个数据结构*/Config.ACCESS_KEY=sXF6aG4ABgcnoyL-uCcpDDf1uStCTOhBhRNjxoPP;Config.SECRET_KEY=iDlLOt7SpR9ueJ2QOBA_CU71rN_c22-G7aLDvkD7;Macmac=newMac(Config.ACCESS_KEY,Config.SECRET_KEY);returnmac;}publicStringgenToken()throwsException{/*返回认证信息*///请确保该bucket已经存在PutPolicyputPolicy=newPutPolicy(this.bucketName);Stringuptoken=putPolicy.token(getMac());returnuptoken;}publicvoidputFile(Stringuptoken,StringfileName){/*上传本地文件对象实现*/PutExtraextra=newPutExtra();PutRetret=IoApi.putFile(uptoken,fileName,localFile,extra);}publicvoiddeleteFile(StringfileName){/*删除对象实现*/RSClientclient=newRSClient(getMac());client.delete(bucketName,fileName);}}d.测试没有问题后,将该项目导出为可执行jar包,放到jmeterlib/ext目录下,重新启动Jmeter。e.添加线程组,然后添加Sampler-Java请求。f.在类名称中选择QNUpload4K,并修改参数值为${fileName}g.添加CVSDataConfig和监听器与之上一样。执行结果如下所示。9.常见错误及解决办法。a.启动Jmeter出现内存溢出问题。解决:windows下编辑jmeter.bat文件,根据服务器实际情况修改HEAP等内存大小。Linux下修改jmeter文件。b.分布式测试Controller主机连接Agent出错,connectionrefusedtohostXX.XX.XX.XXnestedexception。解决办法:开发Controller主机1099端口,关闭防火墙。c.Controller主机出现内存溢出问题,可以尝试把测试结果保存在文件中而不是显示在聚合报告中。
本文标题:Jmeter性能测试工具使用总结
链接地址:https://www.777doc.com/doc-2103903 .html