Jmeter性能测试工具使用总结.docx
- 文档编号:4715045
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:12
- 大小:740.36KB
Jmeter性能测试工具使用总结.docx
《Jmeter性能测试工具使用总结.docx》由会员分享,可在线阅读,更多相关《Jmeter性能测试工具使用总结.docx(12页珍藏版)》请在冰豆网上搜索。
Jmeter性能测试工具使用总结
Jmeter使用总结
1.下载
ApacheJMeter是Apache组织开发的基于Java的压力测试工具。
下载链接:
http:
//jmeter.apache.org/download_jmeter.cgi
2.安装
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-ygroupinstallDesktop
yum-ygroupinstall"XWindowSystem"
c.编辑ssh配置文件,允许ssh的图形界面转发。
vi/etc/ssh/sshd_config
X11Forwrdingyes;取消这一行的注释——如果没有这一行则手动添加。
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主机出现内存溢出问题,可以尝试把测试结果保存在文件中而不是显示在聚合报告中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Jmeter 性能 测试 工具 使用 总结