做压力测试,JMETER无疑是很好的选择,开源、易用、免费以及支持的协议比较多,最近要对WEBSERVICE做压力测试,我们也是选择了JMETER。不过我们碰到了一个问题,那就是我们要做WSS测试,而JMETER官方并没有支持WSS测试,需要自己写插件。不过这其中有几个问题,一是比较费事,需要先熟悉他的插件编写规范,二来UI也不是我的强项,后面想到了两个变通的办法:
1、使用JMETER调JAVA测试,自己则在JAVA中去实现调用WSS的逻辑。这个比较简单,JAVA只需要继承AbstractJavaSamplerClient,并实现runTest方法就可以了,然后我们就可以在实现的JAVA方法中去实现WSS Header的实现,然后再通过HttpClient发送并获取结果就可以了。
注:生成WSS Header,可以参看我的一篇文章:http://blog.csdn.net/fenglibing/article/details/7644872
把实现的JAVA测试工程导出成JAR包,放到目录${JMETER_HOME}\lib\ext\下面,把当前工程依赖的JAR包放到目录${JMETER_HOME}\lib下面,重新启动JMETER,创建Sample/Java Request后就可以看到了。
2、修改JMETER的源码
我们知道,WSS请求和普通的WS请求,只是少了security header,我们只要能够在普通的WS请求发出去之前,把security header补上就好了。
我使用的JMETER版本是2.6,准备工作就是去吧JMETER的BINARY和SOURCE都下载回来了,可以去这里下载:http://mirror.bjtu.edu.cn/apache/jmeter/。
然后把源码和BINARY都解压缩,将源码导入到ECLIPSE工程中,把BINARY的LIB目录下面的JAR都拷贝到工程的LIB目录下。一切OK过后,现在我们就是修改它的源码,在WS请求的基础之上,增加一个WSS配置文件的选择框,然后我们再修改请求发送时判断是否有WSS的配置文件,如果有我们就根据配置文件把security header补充上去,否则就执行普通的WS请求,不加security header请求头。以下是需要修改的代码以及步骤。
1)、找到core工程下面的resource包:org.apache.jmeter.resources,这里面存放的就是国际化的配置文件,在这下面的每个文件都增加一行:
get_wss_config_file=Webservice Security Config Properties File
这个是WSS文件框文字说明。
2)、打开JAVA文件:org.apache.jmeter.protocol.http.sampler.WebServiceSampler,增加如下代码:
A:增加存放获取到的WSS配置文件:
private static final String wssConfigFile = "WebserviceSampler.wssConfigFile";
public String getWssConfigFile() {
return getPropertyAsString(wssConfigFile);
}
public void setWssConfigFile(String wssConfigFileValue) {
setProperty(wssConfigFile, wssConfigFileValue);
}
B:增加判断是否存在WSS文件,并确定是否补充security header,在方法openDocument(String file)返回之前,既return doc之前增加这样的判断,如增加下面这样一行方法:
addWSSecurity(doc);
不过这个方法需要你自己去实现了,如何生成,看我的这篇文章了:http://blog.csdn.net/fenglibing/article/details/7644872
这里的实现肯定会依赖其他的JAR包,这些依赖的JAR包都要放到目录{JMETER_HOME}\lib下面。
3)、打开JAVA文件:org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui,需要补充四行代码,
A、增加类变量:private final FilePanel wssConfigFile = new FilePanel(JMeterUtils.getResString("get_wss_config_file"), ".properties");
B、在方法modifyTestElement(TestElement s)中,增加一行:sampler.setWssConfigFile(wssConfigFile.getFilename());
C、在方法clearGui()中,增加一行:wssConfigFile.setFilename("");
D、在方法createMessagePanel()的这一行southPane.add(randomXmlPane);下面增加一行:southPane.add(wssConfigFile);
4)、重新导出JAR包
A、导出src/protocol/http工程,覆盖${JMETER_HOME}\lib\ext\ApacheJMeter_http.jar
B、导出src/core工程,覆盖${JMETER_HOME}\lib\ext\ApacheJMeter_core.jar
这个时候,可以重新启动JMETER了。
比较上面的两种方案,第一种要简单一点,不需要修改JMETER的源代码,不过要自己去实现WSS请求的发送处理;第二种要修改JMETER的源码,不过不需要自己去实现发送这么一个逻辑,只需要在发送之前根据条件判断是否增加security header即可。两种方案都有自己的优势与不足,各位看官自己选择了。
本文出自:冯立彬的博客
分享到:
相关推荐
JMETER 测试webservice 接口文档,内附JMETER3.0 安装包
Java多线程开发WebService,需要对Tomcat服务器进行线程控制配置,并采用JMeter进行WebService测试
使用jmeter对wss请求进行压力测试,解决websocket security传输脚本的编写
jmeter3.0支持webservice接口测试,含有SOAP/XML-RPC Request采集器
JMeter3.2, 用来测试websocket服务器,资源包含apache-jmeter-3.2.zip和测试websocket所依赖的jar包。
jmeter4.0进行微信小程序测试(jmeter性能测试教程) jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书
使用JMeter测试Web应用使用JMeter测试Web应用使用JMeter测试Web应用
使用JMeter 对Web服务器压力测试
jmeter中WebService插件(解决中文乱码)
该jar包为websocket协议的插件,直接放在jmeter的D:\software\apache-jmeter-4.0\lib\ext目录下,重启jmeter即可使用,可以进行websocket压力测试
使用JMeter进行性能测试
jmeter-压力测试报告-超细,Jmeter性能测试工具使用总结
2:安装apache-jmeter-3.1 下载地址:https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.1.zip 3:服务端运行ServerAgent-2.2.1 4:Jmeter里\lib\ext,附件两jar包 5:启动Jmeter,修改jmx的配置,...
使用jmeter进行接口测试的一个简单例子——web系统登录接口测试。初学jmeter的童鞋可以看看
NULL 博文链接:https://xinglijun1973.iteye.com/blog/2372831
使用JMeter对Mysql数据库进行一个简单的测试
准备好这些jar包后,将它们拷贝到Jmeter目录的\lib\ext\目录下,启动jmeter。使用jmeter工具测试websocket接口,需要用到的相关jar包
用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对...
JMeter在WebServices性能测试中的应用JMeter在WebServices性能测试中的应用JMeter在WebServices性能测试中的应用JMeter在WebServices性能测试中的应用JMeter在WebServices性能测试中的应用JMeter在WebServices性能...
使用Jmeter测试Oracle,如何配置Jmeter测试计划,进行Oracle连接数测试