Jmeter压测http、Java接口总结

Jmeter压测http、Java接口总结

      Jmeter 通过线程组驱动多个线程。建立一个线程池,多线程运行取样器产生大量负载,达到压测的目的。

一、基本组件

1、信息头管理器

      用于定制Sampler发出的HTTP请求的请求头的内容。访问某些防盗链的页面时需要正确的Refer, 也可以用于设置Cookie信息等。

2、csv data set Config

      实现参数化数据,配置元件->CSV Data Set Config下。一般文件格式采用csv。设置的格式如下:

下面几项的含义:

Recycle on EOF : 设置为true,允许循环取值

Stop thread on EOF : 设置为false,文件中数据读取完,不会停止,结合Recycle on EOF (true)循环取值;

设置为true时,且Recycle on EOF (false), 读完csv文件中的数据后,停止运行。设置的线程数及执行次数等无效。

Sharing mode :  共享模式。 All threads: 所有线程,所有线程循环取值。

变量的引用方式:${id}


二、HTTP接口

https:https由于需要证书校验,需要添加证书。

1、将网站的证书(.cer)打成.store文件,输入秘钥库口令及信任该证书,会生成my.store,包含目前网站的证书和自己的密码:

 
 
keytool -import -alias "my.store" -file "xx.cer" -keystore my.store
2、SSL管理器中选择刚才生成的证书即可。


3、https接口

添加http请求,设置服务器名称,路径,及发送参数等,就可以尝试发送https请求。


三、Java请求

3.1 主要步骤:

1)创建Java工程

2)将Jmeter \lib\ext下的ApacheJMeter_core.jar和ApacheJMeter_java.jar2个jar文件添加到工程的Build Path中。


3)创建一个类并实现JavaSamplerClient接口,主要涉及下面几个方法:
public Arguments getDefaultParameters();              //设置参数及其默认值;
public void setupTest(JavaSamplerContext arg0);       //做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0); //开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0);    //测试结束时调用;

执行的顺序:

getDefaultParameters() --> setupTest(JavaSamplerContext arg0) --> runTest(JavaSamplerContext arg0) --> teardownTest(JavaSamplerContext arg0)

4)测试通过后,将工程导出为Runnable Jar File,放在 \lib\ext目录下;

5)以管理员身份启动,创建Java请求即可


注:常遇到的问题,JDK版本,启动内存的大小,以及引入jar包的冲突。

3.2 JavaSamplerClient实例
public class Test implements JavaSamplerClient
{
  private SampleResult results;

  public Arguments getDefaultParameters()
  {
    Arguments arguments = new Arguments();
    arguments.addArgument("id", "0");                      //定义参数
    arguments.addArgument("logStr", "0");
    return arguments;
  }

  public SampleResult runTest(JavaSamplerContext arg0)
  {
    this.results = new SampleResult();
    String uid = arg0.getParameter("id");
    String logStr = arg0.getParameter("logStr");
    try {
			results.sampleStart();                            //记录开始
			Service.getByUid(uid);                           //调用
			results.sampleEnd();
			results.setRequestHeaders("id:"+uid);
			results.setDataType(SampleResult.TEXT);
			results.setSuccessful(true);
    } catch (Exception e) {
      results.setSuccessful(false);
      e.printStackTrace();
    }
    return results;
  }

  public void setupTest(JavaSamplerContext arg0)
  {
    beforeClass();
  }

  public void teardownTest(JavaSamplerContext arg0)
  {
  }

  public void beforeClass()
  {
		//init 

  }

  public static void main(String[] args)
  {
  }
}
四、命令行方式

/home/work/apache-jmeter-3.0/bin目录下,运行如下命令:

sh jmeter.sh -n -t Test.jmx -l logfile1.jtl


猜你喜欢

转载自blog.csdn.net/angl129/article/details/80481413
今日推荐