利用Jmeter发送Java请求的实战记录

前言

第一次遇到了需要用Jmeter发送Java请求的情况,也是网上查过很多资料才成功。做一个记录,做一个分享。

Jmeter去发送Java请求,就是需要你有测试类的jar包放到Jmeter的lib/ext目录下,新建Java请求才可以。这个我们用到的测试类,开发给到以后我们需要自己去做一下调整,使用Eclipse工具来写。

实现过程

1.首先创建好工程,用到两个Jmeter包-ApacheJMeter_java.jar、ApacheJMeter_core.jar,直接从Jmeter复制项目里,并且右键Buid Path就可以了。

2.测试类需要继承AbstractJavaSamplerClient,点击报错进行导包和添加实现方法。runTest方法就是核心方法,所实现的代码逻辑在这里。

3.写一个简单的demo,两个数相加为sum结果。初始化一个SampleResult,然后sr.sampleStart()作为Jmeter开始统计响应时间标识,相加过程为正式的逻辑代码,把返回结果放入sr并设置字符集,sr.setSuccessful()设置成功与否,最后加上sr.sampleEnd()结束统计响应的标识,返回sr即可。

4.导出jar包,放到Jmeter-lib/ext目录,添加一个Java请求,选择我们test下的TestSum就可以了,测试结果如下:

5.简单的测试写完之后,我们再进行改造代码,传入的int参数不能是固定的,需要我们在Jmeter中传入不同的参数进行测试,首先把刚才定义好的参数(8和6)去掉,在getDefaultParameters方法中去初始化一个参数集,把入参放进params;setupTest方法做一些Jmeter测试前的初始化工作,可以在这里获取我们输入的参数。重新打包测试,我们就可以自定义两个入参的值了。

6.到这里应该都大概知道怎么做了,附上本次代码,可以作为一个模板,直接在上边进行修改即可。

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

	private String number1;
	private String number2;

	@Override
	public Arguments getDefaultParameters() {
		Arguments params = new Arguments();//初始化一个参数集
		params.addArgument("num1", "");//把入参放入params
		params.addArgument("num2", "");
		return params;
	}

	@Override
	public void setupTest(JavaSamplerContext arg0) {
		number1 = arg0.getParameter("num1");//获取入参,赋值给变量
		number2 = arg0.getParameter("num2");
	}

	@Override
	public SampleResult runTest(JavaSamplerContext arg0) {
		//int number1 = 8;// 定义一个int参数8
		//int number2 = 6;// 定义一个int参数6
		SampleResult sr = new SampleResult();// 初始化一个SampleResult
		sr.setSamplerData("请求参数num1:" + number1 + "\n请求参数num2:" + number2);// 参数放进sr
		try {
			sr.sampleStart(); // jmeter 开始统计响应时间标识
			int sum = Integer.parseInt(number1)+Integer.parseInt(number2);// 定义sum等于两个参数相加,正式的逻辑代码
			sr.setResponseData("两个数相加的结果是:" + sum, "utf-8");// 结果放入sr,并设置字符集
			sr.setDataType(SampleResult.TEXT);
			sr.setSuccessful(true); // 设置响应执行成功
		} catch (Throwable e) {
			sr.setSuccessful(false);// 有异常,执行失败
			e.printStackTrace();
		} finally {
			sr.sampleEnd(); // jmeter 结束统计响应时间标识
		}
		return sr;
	}

}

真实的项目往往是复杂的,查看结果树自定义返回什么内容,如有定义好的返回结果resultData,sr.setResponseData(resultData, "字符集")即可。

总结

到此这篇关于利用Jmeter发送Java请求的文章就介绍到这了,更多相关Jmeter发送Java请求内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JMeter 实现Java请求步骤及原理详解

    1.jar包 添加jar包依赖,注意和Jmeter的版本相同: ApacheJMeter_core.jar,ApacheJMeter_java.jar 2.写Java请求 先继承 AbstractJavaSamplerClient,或者实现 JavaSamplerClient, 各方法和参数: getDefaultParameters(),用来自定义参数的. runTest(),请求主体. Arguments类: 参数管理: addAuguments() 用来添加参数. JavaSamplerC

  • 利用Jmeter发送Java请求的实战记录

    前言 第一次遇到了需要用Jmeter发送Java请求的情况,也是网上查过很多资料才成功.做一个记录,做一个分享. Jmeter去发送Java请求,就是需要你有测试类的jar包放到Jmeter的lib/ext目录下,新建Java请求才可以.这个我们用到的测试类,开发给到以后我们需要自己去做一下调整,使用Eclipse工具来写. 实现过程 1.首先创建好工程,用到两个Jmeter包-ApacheJMeter_java.jar.ApacheJMeter_core.jar,直接从Jmeter复制项目里,

  • php 利用socket发送HTTP请求(GET,POST)

    今天给大家带来的是如何利用socket发送GET,POST请求.我借用燕十八老师封装好的一个Http类给进行说明. 在日常编程中相信很多人和我一样大部分时间是利用浏览器向服务器提出GET,POST请求,那么可否利用其它方式提出GET,POST请求呢?答案必然是肯定的.了解过HTTP协议的人知道,浏览器提交请求的实质是向服务器发送一个请求信息,这个请求信息有请求行,请求头,请求体(非必须)构成.服务器根据请求信息返回一个响应信息.连接断开. HTTP请求的格式如下所示: <request-line

  • PHP利用curl发送HTTP请求的实例代码

    cURL 函数概述 PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯. libcurl目前支持http.https.ftp.gopher.telnet.dict.file和ldap协议.libcurl同时也支持HTTPS认证.HTTP POST.HTTP PUT. FTP 上传(这个也能通过PHP的FTP扩展完成).HTTP 基于表单的上传.代理.cookies和用户名+密码的认证. PHP中使用cURL实现Get和Post请

  • Laravel中GraphQL接口请求频率实战记录

    前言 起源:通常在产品的运行过程,我们可能会做数据埋点,以此来知道用户触发的行为,访问了多少页面,做了哪些操作,来方便产品根据用户喜好的做不同的调整和推荐,同样在服务端开发层面,也要做好"数据埋点",去记录接口的响应时长.接口调用频率,参数频率等,方便我们从后端角度去分析和优化问题,如果遇到异常行为或者大量攻击来源,我们可以具体针对到某个接口去进行优化. 项目环境: framework:laravel 5.8+ cache : redis >= 2.6.0 目前项目中几乎都使用的

  • JAVA利用HttpClient进行POST请求(HTTPS)实例

    最近,需要对客户的接口做一个包装,然后供自己公司别的系统调用,客户接口是用HTTP URL实现的,我想用HttpClient包进行请求,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. 1.写一个SSLClient类,继承至HttpClient package com.pcmall.service.sale.miaomore.impl; import java.security.cert.CertificateExcept

  • Java 如何使用Feign发送HTTP请求

    在往常的 HTTP 调用中,一直都是使用的官方提供的 RestTemplate 来进行远程调用,该调用方式将组装代码冗余到正常业务代码中,不够优雅,因此在接触到 Feign 后,考虑使其作为一个 HTTP 发送基础,来进行远程调用. 下面就让我们来看一下,其是如何使用的. 引入依赖 首先,我们需要将 Feign 的基础依赖引入项目,因为我们只使用 Feign 的 remote 功能,因此,只引入基础依赖. 此外在项目中,我们还自定义了了 JSON 转换和 log 设置,因此还需要引入这些的第三方

  • php 利用socket发送GET,POST请求的实例代码

    作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步.最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅.希望分享给大家.本文需要有一定http基础的开发者阅读. 今天给大家带来的是如何利用socket发送GET,POST请求.我借用燕十八老师封装好的一个Http类给进行说明. 在日常编程中相信很多人和我一样大部分时间是利用浏览器向服务器提出GET,POST请求,那么可否利用其它方式提出GET,POST请求呢?答案必然是肯定的.了解过HTT

  • 利用Python发送 10 万个 http 请求

    目录 1.队列+多线程 2.线程池 3.协程 + aiohttp 4.grequests[1] 前言: 假如有一个文件,里面有 10 万个 url,需要对每个 url 发送 http 请求,并打印请求结果的状态码,如何编写代码尽可能快的完成这些任务呢? Python 并发编程有很多方法,多线程的标准库 threading,concurrency,协程 asyncio,当然还有 grequests 这种异步库,每一个都可以实现上述需求,下面一一用代码实现一下,本文的代码可以直接运行,给你以后的并发

  • PHP使用file_get_contents发送http请求功能简单示例

    本文实例讲述了PHP使用file_get_contents发送http请求功能.分享给大家供大家参考,具体如下: 服务器端模拟 POST/GET 等请求,使用 CURL 很容易办到(例如前面一篇<php使用CURL模拟GET与POST向微信接口提交及获取数据的方法>),那么如果不使用 CURL 库,又该怎么办呢? $data = array( 'test'=>'bar', 'baz'=>'boom', 'site'=>'www.nimip.com', 'name'=>'

随机推荐