Jmeter性能测试工具使用总结.docx

上传人:b****6 文档编号:4715045 上传时间:2022-12-07 格式:DOCX 页数:12 大小:740.36KB
下载 相关 举报
Jmeter性能测试工具使用总结.docx_第1页
第1页 / 共12页
Jmeter性能测试工具使用总结.docx_第2页
第2页 / 共12页
Jmeter性能测试工具使用总结.docx_第3页
第3页 / 共12页
Jmeter性能测试工具使用总结.docx_第4页
第4页 / 共12页
Jmeter性能测试工具使用总结.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Jmeter性能测试工具使用总结.docx

《Jmeter性能测试工具使用总结.docx》由会员分享,可在线阅读,更多相关《Jmeter性能测试工具使用总结.docx(12页珍藏版)》请在冰豆网上搜索。

Jmeter性能测试工具使用总结.docx

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主机出现内存溢出问题,可以尝试把测试结果保存在文件中而不是显示在聚合报告中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1