jmeter接口测试

本文详细介绍了如何使用JMeter进行接口测试,包括安装JDK,下载并解压JMeter,理解其目录结构,编写接口测试脚本,以及如何处理可能出现的问题。同时,文章还展示了如何设置测试计划,配置线程组,使用Java采样器,并添加监听器来查看运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用jmeter进行接口测试

1、安装好jdk

我安装的是jdk1.6

2、下载jmeter,解压即可

下载地址:http://jmeter.apache.org/download_jmeter.cgi

apache-jmeter-2.9.tgzmd5pgp

jmeter目录结构:

C:\apache-jmeter-2.9\bin        bin目录一般存放jmeter的运行脚本

jmeter.bat     jmeter启动脚本

jmeter.log     jmeter日志文件

jmeter.properties  jmeter属性文件,配置日志的级别、启动参数等相关信息


C:\apache-jmeter-2.9\lib          lib目录存放jmeter依赖的jar包

C:\apache-jmeter-2.9\lib \ext   ext目录存放用户扩展包,如我们写好的接口脚本,打成jar包后就放在此目录

C:\apache-jmeter-2.9\docs     jmeter文档目录,包含api


3、编写接口测试脚本

针对需要进行接口压力测试的类编写脚本

在编写脚本前导入jmeter依赖的jar包:

ApacheJMeter_core.jar、ApacheJMeter_java.jar


用实例来详细讲解一下过程:

需要进行接口压力测试的类:Test .java

源码:

package mxm;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class Test {


/**
* 该方法从list中查找指定字符串 然后返回
* @param list
* @param id
* @return
* @throws IOException
*/
public String getList(List<String> list ,String id) throws IOException{
if(list == null) return null;

for(int i = 0 ; i < list.size(); i++){
if(id.equals(list.get(i))){
return list.get(i).toString();
}
}
return null;

}
public static void main(String []args) throws IOException{
System.out.print("bbbbb");
Test test = new Test();
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
test.getList(list, "2");

}
}

编写jmeter接口测试脚本类:JmeterTest.java

该类需要继承jmeter的抽象类:AbstractJavaSamplerClient。一般会重写该类的3个方法:

setupTest()//进行初始化的工作

runTest() //进行压力测试

teardownTest()//结束后的释放工作


源码:

package mxm;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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 JmeterTest extends AbstractJavaSamplerClient  {
private static long start = 0;
    private static long end = 0;

    /**
     * 初始化工作
     */
public void setupTest(JavaSamplerContext arg0) {
start = System.currentTimeMillis();
}

/**
* 获取参数
*/
public Arguments getDefaultParameters(){
Arguments args = new Arguments();
//添加参数 
args.addArgument("id", "66");
args.addArgument("list", "11:22:33:44:55:66:77");
return args;
}

@Override
public SampleResult runTest(JavaSamplerContext arg0) {
//定义一个取样器对象 通过调用该对象的方法开始压力测试
SampleResult sp = new SampleResult();


// 获取jmeter传入参数
String id = arg0.getParameter("id");
String str = arg0.getParameter("list");
List<String> list = new ArrayList<String>();

//分割list字符串
if(null != str){
String []s = str.split(":");

for(int i = 0; i < s.length; i++){
list.add(s[i]);
}

}
//开始测试test.getList()方法的性能
sp.sampleStart();

//测试接口性能
Test test = new Test();
String ss = null;
try {
ss = test.getList(list, id);

} catch (IOException e) {
//如果出现异常则 设置结果为 false
sp.setSuccessful(false);
sp.setResponseMessage(e.getMessage());
e.printStackTrace();
}
System.out.println("result: " + ss);
sp.sampleEnd();

//设置测试结果
if (ss.equals("66")) {
sp.setSuccessful(true);
sp.setResponseMessage("66 ok");
} else {
sp.setSuccessful(false);
sp.setResponseMessage("false");
}
//返回取样器
return sp;

}

/**
* teardown方法 该方法在测试结束后调用 用来释放变量等善后工作
*/
public void teardownTest(JavaSamplerContext arg0){
end = System.currentTimeMillis();
//可以在调试的时候自己打印时间
System.err.println("start time: " + start);
System.err.println("end time: " + end);
System.err.println("cost time:" + (end - start) / 1000);
super.teardownTest(arg0);
}

/**
* main 方法 用来调试 调试成功后export成jar包
* @param args
*/
public static void main(String []args){
System.out.println("bbbbb");
//new 一个jmetertest对象
JmeterTest r = new JmeterTest();

//取得默认的参数 该参数即为调用接口需要传入的参数
Arguments a = r.getDefaultParameters();
//定义一个取样器
JavaSamplerContext j = new JavaSamplerContext(a);
//压力测试初始化工作
r.setupTest(j);
//开始压力测试
r.runTest(j);
//结束 释放变量
r.teardownTest(j);
}


}

调试通过后,将该工程export成jar包aa.jar,并将aa.jar包放入jmeter的lib/ext目录下,接下来就可以在jmeter中添加测试计划,对该接口进行压力测试了。

在这个过程中可能会遇到下面的问题:

导出jar包报错:

JAR export finished with warnings.See details for additional information

解决:提示导出完成,但是有警告。这可能是编写的脚本中有没有使用的变量或者没有使用import类,却掉即可(eclipse中会呈现黄色标记出来)。

调试JmeterTest出错:

Could not find the main class:mxm.JmeterTest.Program will exit

解决:jmeter依赖的jar包没有导入。在jmeter安装目录的lib下面,将所有的jar包导入工程。

这里只依赖几个包,但是我当时没有找到,所以全都导入了



4、编写测试计划

在jmeter目录bin目录下,双击jmeter.bat  运行,即可打开jmeter

首先添加一个测试计划:

然后在测试计划中添加一个线程组,设置线程数,线程启动时间,循环次数

在线程组下面添加一个java采样器,选择需要测试的类,这里会自动将你的JmeterTest中的参数读取出来。

如果需要批量设置参数,可以将参数保存在cvs文件中,在参数列表中使用{}的形式,

为java采样器添加一个检测器,用来检测运行的结果。

5、查看运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值