jmeter自定义java_jmeter根据业务接口开发自定义java request测试-Go语言中文社区

写在前面

学习了jmeter测试之后,学会了简单的接口请求测试,但是在现实场景中,很多情况下需要根据业务场景来进行接口测试,这是需要编码来完成的。这篇博文简单叙述了如何编写自定义的java 接口请求,从而达到根据业务需求来测试接口。

创建一个maven工程(这里创建过程就不叙述了)

这里直接给出maven依赖

UTF-8

UTF-8

org.apache.jmeter

ApacheJMeter_java

3.2

provided

com.alibaba

fastjson

1.2.58

jmeter-test

maven-assembly-plugin

jar-with-dependencies

com.demo.Test

make-assembly

package

single

创建测试类package com.demo;

import java.util.Random;

import org.apache.jmeter.config.Arguments;

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

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

import org.apache.jmeter.samplers.SampleResult;

import com.alibaba.fastjson.JSONObject;

public class Test implements JavaSamplerClient {

private static final String[] apps = {"109000", "109001", "109002", "109003", "109004", "109005", "109006",

"109007", "109008", "109009",};

private static final String[] mobiles = {"19956596670", "19956596671", "19956596672", "19956596673", "19956596674",

"19956596675", "19956596676", "19956596677", "19956596678", "19956596679",};

// URLNAME 就是在图形化界面当中显示的变量名称

private static final String ACCOUNT = "account";

private static final String PSWD = "pswd";

private static final String MOBILE = "mobile";

private static final String MSG = "msg";

private static final String NEEDSTATUS = "needstatus";

// 用来存储响应的数据,目的是将响应结果放到察看结果树当中

private String resultData;

//这个就是用来初始化一些固定参数的,如果不需要可以删除

public Arguments getDefaultParameters() {

System.out.println("getDefaultParameters run");

Arguments arguments = new Arguments();

arguments.addArgument(PSWD, "123456");

arguments.addArgument(MSG, "【云树科技】测试短信");

arguments.addArgument(NEEDSTATUS, "true");

return arguments;

}

/**

* 这个方法就是一个初始化方法,我们所有的初始化的动作都可以在这里写

*

* @param javaSamplerContext

*/

public void setupTest(JavaSamplerContext javaSamplerContext) {

}

/**

* 这个方法就是实现你具体功能逻辑的方法

*

* @param javaSamplerContext

* @return

*/

public SampleResult runTest(JavaSamplerContext javaSamplerContext) {

SampleResult result = new SampleResult();

System.out.println("runTest run");

String pswd = javaSamplerContext.getParameter(PSWD);

String msg = javaSamplerContext.getParameter(MSG);

String needStatus = javaSamplerContext.getParameter(NEEDSTATUS);

String url = "http://192.168.20.121/test";

JSONObject json = new JSONObject();

json.put(ACCOUNT, apps[new Random().nextInt(10)]);

json.put(PSWD, pswd);

json.put(MOBILE, mobiles[new Random().nextInt(10)]);

json.put(MSG, msg);

json.put(NEEDSTATUS, needStatus);

// resultData = "这就是响应结果";

resultData = HttpUtil.sendJsonPost(url, json);

System.out.println(resultData);

result.setSampleLabel("自定义java请求访问");

result.setSuccessful(true);// 告诉查看结果树访问是否成功

result.setResponseData(resultData, null);

result.setDataType(SampleResult.TEXT);

return result;

}

/**

* 这个方法就是来做一些收尾的工作的。

*

* @param javaSamplerContext

*/

public void teardownTest(JavaSamplerContext javaSamplerContext) {

System.out.println("teardownTest run");

}

public static void main(String[] args) {

Second request = new Second();

Arguments arguments = new Arguments();

arguments.addArgument(PSWD, "123456");

arguments.addArgument(MSG, "【云树科技】测试短信");

arguments.addArgument(NEEDSTATUS, "true");

JavaSamplerContext javaSamplerContext = new JavaSamplerContext(arguments);

request.runTest(javaSamplerContext);

}

}

注意:

1.测试类中一定要用main方法,且一定要运行一次main方法,保证可以顺利调通接口,收到返回值,不然即使达成jar包后也不能运行

2.runTest()方法为业务逻辑实现的地方,所有业务逻辑都可以在这里面做处理。

getDefaultParameters()是初始化一些固定的请求参数,如果参数是变动的,可以不用在这里面初始化,可以在runTest()里面进行参数初始化,具体请看我 json.put(ACCOUNT, apps[new Random().nextInt(10)]);这一行代码,我的ACCOUNT就是变量。

打包测试

利用maven命令mvn clean package打包,打包时会生成两个包,注意,一定要选择包名中有jar-with-dependencies的jar包,然后放入jmeter -->lib --> ext 目录下

运行jmeter

在jmeter -->bin 目录下,直接运行jmeter.bat,如下图

7ef7df533065b80c7fc82ca9a11f443d.png

添加测试计划(如果界面是英文,直接修改bin目录下jmeter.properties中第37行,修改为language=zh_CN即可)

1.右击测试任务,如下图

25c9edcc276090cedb6c4674f335772d.png

2.第一步后,在测试计划下会有个setUp线程(可以自定义命名)组目录,右击,添加jave请求。

2884ba258c06b33964780e2c76c5a11d.png

3.第二步后,在setUp线程下会有个java请求,选择类名称,找到你刚才编写的测试类

2d356f4ce45c276207da2b83134140d6.png

4.根据自己需求,添加结果树,聚合结果等,这里演示添加汇总报告,继续右击setUp线程,添加汇总报告

edb3f3ba39a4140ff6ba41feffbbd564.png

添加成功后如下图

1833859cf8baadf26aa0486989691382.png

5.配置测试计划。左键单击setUp线程组,会看到如下图片:

e80f971973d175833052be9daa2359c7.png

主要修改以下参数:

线程数:一次性启动多少线程,根据自己测试标准来填写

Ramp-UP时间:表示多少秒内启动完成这些线程,比如我设置的是1,则表示1秒内要启动线程数配置的所有线程

循环次数:表示上面线程数一共循环执行多少次,比如我线程数设置的是50,循环次数是10,则最后请求次数应该为500次

下面的调度器配置,可以自行去研究下,这里不做详细说明。

持续时间:代表测试一共要持续多少时间,上面循环次数勾上永久时,需要填写这个参数

启动延迟:启动后多长时间才开始测试,有点定时测试的意思

至此,jmeter测试演示完毕。注意,运行前要保存配置,一般保存在bin目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值