java性能测试代码_jmeter之java代码性能测试

本文介绍了如何使用JMeter进行Java代码的性能测试。首先,需要搭建环境,包括新建Java工程并导入必要的JMeter jar包。接着,讲解了JavaSamplerClient的使用,包括需要复写的方法以及它们的作用。在代码实现部分,展示了一个简单的HTTP请求样例,用于访问指定URL并测量响应速度。最后,说明了如何在JMeter中运行Java代码,以及如何观察和调试结果。
摘要由CSDN通过智能技术生成

一、环境准备

1、新建一个java工程

2、导入jar包:ApacheJMeter_core.jar     ApacheJMeter_java.jar

这两个jar是使用jmeter最基础的jar,能够让你的代码在jmeter中运行起来,如果在写代码的过程中需要其他的jar,自行导入。

二、写代码前该知道的

1、如果想要让你的代码在jmeter中运行起来,在创建类的时候需要去继承AbstractJavaSamplerClient抽象类或者是实现JavaSamplerClient接口

AbstractJavaSamplerClient抽象类是JavaSamplerClient接口的子类,当你不需要复写所有的需要复写的方法时,那么你只需要去继承AbstractJavaSamplerClient抽象类即可。

如果你选择了实现JavaSamplerClient接口,那么你需要复写的方法有:

public SampleResult runTest(JavaSamplerContext context) {}

public void setupTest(JavaSamplerContext context) {}

public void teardownTest(JavaSamplerContext context) {}

public Arguments getDefaultParameters() {}

这4个方法就必须要复写,但是如果选择继承AbstractJavaSamplerClient这个抽象类,那么只需要复写你需要的方法即可。

2、方法说明:

public Arguments getDefaultParameters() {}

这个方法由Jmeter在进行添加javaRequest时第一个运行,它决定了你要在GUI中默认显示出哪些属性。

public void setupTest(JavaSamplerContext context) {}

这个方法相当于loadrunner中的init,我们可以用它来进行一些初始化的动作。

public SampleResult runTest(JavaSamplerContext context) {}

这个方法相当于loadrunner中的action,我们的核心测试代码就在这里了。

public void teardownTest(JavaSamplerContext context) {}

这个方法相当于loadrunner中的end,收尾的工作可以由它来做。

3、除了以上2点,我们一般还需要去实现Serializable,序列化标记接口,这样可以让我们的类去实现序列化。

三、代码书写

package com.lingfeng.jmeter.practice;

import java.io.IOException;

import java.io.InputStream;

import java.io.Serializable;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import org.apache.jmeter.config.Arguments;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import org.apache.jmeter.samplers.SampleResult;

public class MyJavaRequest extends AbstractJavaSamplerClient implements Serializable {

private static final long serialVersionUID = 1L;

private String sUrl;//存储用户输出的url

private static final String URL_NAME="URL" ;//设置GUI页面显示的变量名称

//设置GUI页面默认显示的变量值,默认值就是访问百度

private static final String URLVALUE_DEFAULT="http://www.baidu.com";

//resultData变量用来存储响应的数据,目的是显示到查看结果树中。

private String resultData;

StringBuilder sbResultData = new StringBuilder();

/*

* 这个方法用来控制显示在GUI页面的属性,由用户来进行设置。

* 此方法不用调用,是一个与生命周期相关的方法,类加载则运行。

* (non-Javadoc)

* @see org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient#getDefaultParameters()

*/

@Override

public Arguments getDefaultParameters() {

Arguments arguments = new Arguments();

arguments.addArgument(URL_NAME, String.valueOf(URLVALUE_DEFAULT));

return arguments;

}

@Override

public void setupTest(JavaSamplerContext context) {

sUrl = context.getParameter(URL_NAME, URLVALUE_DEFAULT);

if(sUrl.length()==0){

sUrl="http://www.baidu.com";//假如用户没有设置url,那么就让他访问百度,哈哈。

}

}

@Override

public SampleResult runTest(JavaSamplerContext context) {

/*

* SampleResult这个类是用来将测试结果输出到查看结果树中的。

* 并且也是用来控制事务的开始和结束的。

*/

SampleResult results = new SampleResult();

results.setSampleLabel("测试"+sUrl+"网站访问速度了啊!!");

try{

URL url = new URL(sUrl);

URLConnection conn = url.openConnection();

InputStream in = conn.getInputStream();

byte[] buffer = new byte[1024];

int len;

//事务开始标记

results.sampleStart();

while((len=in.read(buffer))!=-1){

resultData = new String(buffer,"UTF-8");//将每次读到的页面返回信息存储到resultData中

sbResultData.append(resultData);//每读到一次,添加到sb中。

}

in.close();

}catch (MalformedURLException e) {

results.setSuccessful(false);

e.printStackTrace();

}catch (IOException e) {

results.setSuccessful(false);

e.printStackTrace();

}catch(Exception e){//如果发生异常,则捕捉,并且发送事务失败的消息。

results.setSuccessful(false);

e.printStackTrace();

}finally{

//标记事务结束

results.sampleEnd();

}

results.setSuccessful(true);

resultData = sbResultData.toString();//将所有读到的数据转换为字符串

results.setResponseData(resultData,null);//将数据打印到查看结果树当中

results.setDataType(SampleResult.TEXT);

return results;

}

}

四、jmeter运行java代码

1、将代码打包成jar

2、把打包成的jar放在\apache-jmeter-2.12\lib\ext路径下

3、打开jmeter GUI,添加线程组,再添加一个java请求,如下图:

cff326a012b9fbfe51312250318dd7c7.png

4、添加查看结果树,运行后结果如下:

zNMtC+QQU6yAAAAAElFTkSuQmCC

五、补充事项

当我们的代码在运行时发生异常,就会被打印在doc窗口中

w+gZrGIKe93PQAAAABJRU5ErkJggg==

我这里没有发生异常,所以没有数据,当发生异常时就会打印在这里。注意观察,有助于调试代码

六、最后的话

其实由以上的代码可以看出,这一段测试代码其实没有太大的测试意义,就是模拟了一个HTTP请求访问一个网站。

但是当我们需要进行一段代码的性能测试的时候,这样来进行书写,并且在runTest方法中进行调用后,那么就可以测试出这段代码的性能如何。

经常总结,互相学习!!

原文:http://www.cnblogs.com/lingfengblogs/p/4269587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值