jmeter和loadrunner一样包含了测试脚本开发、测试执行、以及测试结果统计三个部分。只是jmeter没有脚本开发工具,因此测试java请求的脚本选择在eclipse中进行。

首先介绍如何用eclipse编写接口性能测试脚本。

针对"Java请求"类型的测试,需要基于JMeter测试框架编写用例。

1、新建一个普通的Java工程或者maven工程;

2、将 $JMeter安装目录/lib/ 目录引入工程;在java工程名上点鼠标右键选择build Path里面的Configure Build Path进入下面的jar包添加窗口。

利用jmeter测试java请求_性能测试

点击Add External JARs..选择jmeter安装目录下的/lib/ext目录下的包加进来。

利用jmeter测试java请求_性能测试_02

3、新建Java Class,如下的" testworkdayservicejmeter ",并继承"AbstractJavaSamplerClient";

package test.pssservice;



import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;



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 testworkdayservicejmeter  extends AbstractJavaSamplerClient{



   

    private static long start = 0;

    private static long end = 0;

    public testpssWorkDayService pssAPItest;

       //设置可用参数及的默认值;

    public Arguments getDefaultParameters() {

     Arguments params = new Arguments();

     params.addArgument("workday", "");

    

     return params;

    }



    public void setupTest(JavaSamplerContext arg0) {

    try{

       pssAPItest=new testpssWorkDayService();

        }catch (Exception e1) {

           e1.printStackTrace();

        }

       }

   

       public SampleResult runTest(JavaSamplerContext arg0) {

           SampleResult sr = new SampleResult();

           try

           {

          

           sr.sampleStart();// jmeter 开始统计响应时间标记

           String tmpde=arg0.getParameter("workday");

           DateFormat dft=new SimpleDateFormat("yyyy-MM-dd");

           Date tmpdate=dft.parse(tmpde); 

           boolean tmpresult=pssAPItest.isworkday(tmpdate);//调用接口方法

          

          

           if (tmpresult){

             sr.setSuccessful(true);

           }

           else{

              sr.setSuccessful(false);

           }

          

           sr.sampleEnd();

          

           }catch (Exception e1) {

              e1.printStackTrace();

              sr.setSuccessful(false);

              sr.sampleEnd();

           }

          

       return sr;

       }

       public void teardownTest(JavaSamplerContext arg0) {

           pssAPItest=null;

       }





}

4、导出成Jar并置于 $JMeter安装目录/lib/ext/ 下,若有依赖Jar也置于 $JMeter安装目录/lib/ 下;

5、启动或重启JMeter。

其次讲一下如何在jmeter中执行接口性能测试。

将上一步导出的jar包放在$JMeter安装目录/lib/ext/ 下,然后把需要的参数化文件也拷贝到压力机上的磁盘目录上面(参数化文件可以与jar目录相同也可以不同)。

1.运行jmeter.bat打开jmeter主界面;

2.在测试计划里面将包加进来;

利用jmeter测试java请求_java_03

在测试计划下添加线程组元件,然后在线程组下面添加java请求元件、CSV Data Set Config元件和聚合报告元件。如果不需要参数化的话,CSV Data Set Config元件可以不需要。

聚合报告元件用于显示测试的结果。

3.在java请求中的测试类选出来

利用jmeter测试java请求_java_04

此处测试的类是test.pssservice.testworkdayservicejmeter。

4.设置参数化文件信息

利用jmeter测试java请求_参数化_05

filename处填写参数化文件的绝对路径和参数文件名称;

File encoding是参数化文件的编码,一般为utf-8;

Variable Names参数文件中对应的参数名称,如果有多个用“,”隔开;

Delimiter表示同一个参数文件中有多个参数的,此处列出他们的分隔符;

5.测试结果通过聚合报告列出来

利用jmeter测试java请求_开发语言_06

如果有多个接口的话,需要添加多个线程组,每个线程组一个java请求,然后将聚合报告添加到测试计划下。

然后是测试结果的统计

聚合报告中的throughput相当于loadrunner当中的tps,average相当于loadrunner中的平均响应时间,samples相当于总的通过事务数。error表示失败率。

利用jmeter测试java请求_参数化_07

最后讲讲利用jmeter进行分布式测试

在进行性能测试时,需要模拟多用户并发访问,但是由于单台负载机模拟用户数量有限,我们期望使用多台负载机进行负载模拟,利用JMeter进行性能测试时,可以在多台负载机上部署JMeter,如我们有23台性能测试机,其中一台为主控机(192.168.6.117),另外一台为负载机192.168.6.235),具体配置方法如下:

1、 在主控台(192.168.6.117)的JMeter机器上,打开JMeter目录bin文件夹下的jmeter.properties文件,修改remote_hosts=192.168.6.117:1099,192.168.6.235:1099保存后,重启192.168.6.117。

2、 分别运行负载机192.168.6.117,192.168.6.235上的jmeter-server.bat

3、 运行主控台192.168.6.117 JMeter的jmeter.bat,打开GUI界面,打开“运行”菜单下的“远程控制”,可以看到新添加的负载机192.168.6.117,192.168.6.235,如下图所示:

利用jmeter测试java请求_参数化_08

4、 下面就可以开始利用远程负载机进行性能测了。