通常用jmeter做http请求(或者其他类型)测试时,有时需要对请求的数据(或者响应的数据)进行特定的处理再进行请求,如加密、解密,需自己用java编写一些工具类;或者需要对Java接口服务进行性能测试时,需要用到jmeter进行Java接口调用。以下简单介绍下jmeter通过Java请求和Bean shell方式来实现Java接口调用的具体使用方法。
一、jmeter中BeanShell Sampler调用java接口有3种方式
1.引用外部java文件
1)编写一个java 源文件,名为:testFun.java,代码如下:
2)Bean Shell使用代码如下:
在bean shel中通过source("代码路径")方法引入java,然后调用方法和java一样,new一个class,再调用里面的towerCase方法
2. 引用外部class文件
1)直接把上例中的java文件编译成class文件,javac java文件。
2)BeanShell使用代码如下:
用addClassPath("class文件所在路径")方法引入 class文件,在用import导入包及类,就可以像java一样调用了;
3. 引用外部Jar包
如果文件比较多时我们可以把它们打成一个jar包然后在jemter中调用,如下:
1)jmeter中引入jar
把jar包放到jmeter目录\apache-jmeter-2.13\lib\ext下,然后在jmeter中Test Plan的右侧面板最下方直接添加需要引用的jar包,如下图:
2)在用import导入包及类,直接调用方法:
二、jmeter的Java请求具体使用
1.创建一个Java项目:uapTest
2. 将Jmeter安装目录ext下的ApacheJMeter_core.jar和ApacheJMeter_java.jar两个jar包复制到测试项目的lib目录下,这两个包是编写java请求测试代码必须的。并将引用的jar包都添加到项目的Build Path中。
3. 创建一个GetAuthByAppIdUserId.java类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient并重写,主要有以下几个方法:
publicArguments getDefaultParameters();设置可用参数及的默认值;
public voidsetupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
publicSampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContextarg0):测试结束时调用;
其中,画红框部分是测试代码主体,sampleStart和sampleEnd方法调用时会分别生成一个时间戳,两个时间戳之差就是一次java请求的响应时间,单位是ms。
注意:如果需要对多个方法进行测试,则需要建多个测试类,多个测试类可以放在同一个包下面,也可以放在单独的包中。
4.将项目打成jar包,为uapTest.jar,注意使用Export为Runnable Jar File,会导出相关依赖包,并有包依赖关系文件;
5.将导出jar包以及依赖相关依赖jar放入JMETER_HOME\lib\ext目录;
6.打开jmeter创建线程组、添加Sampler--Java请求、查看结果树,进行测试;