Jmeter压测http接口和java代码放在Jmeter执行

Jmeter无缝支持java语言,使其在市场上有很高的占有率,一些公司还专门对JMenter进行二次开发,使其成为公司级压测平台。

本次介绍JMenter的一些入门级使用,方便大家继续深入探索。

1、启动Jmeter

2、压测简单http接口

 添加线程组

 线程数:代表本次压测要使用多少个线程

ramp-up period(in seconds):代表"ramp-up period"(逐渐增加负载时间)是指在测试开始时,JMeter将逐渐增加并达到所需的并发用户数或线程数的时间段。它表示在多长时间内启动所有的并发用户或线程。

假设你希望模拟100个并发用户在5秒内访问你的应用程序。在这种情况下,你可以将ramp-up period设置为5秒。这意味着JMeter将在5秒内逐渐启动100个并发用户,每秒启动20个用户。

逐渐增加负载时间的设置对于模拟真实的用户行为和逐渐增加负载的场景非常有用。它可以避免突然的并发访问对应用程序造成的压力冲击。同时,它还可以帮助你观察应用程序在逐渐增加负载时的性能表现。

循环次数:分永远和期望的次数,永远代表线程会一直循环执行,不会主动退出,设置次数则每个线程执行相应的时间后主动退出

 添加HTTP请求

 服务器名称或IP:代表请求域名或IP地址

端口号:代表请求端口,http请求默认是80,https默认是443

implementation选非java

协议为http或https

Content encoding一般是UTF-8

路径为请求资源路径

如果请求是表单形式即key value形式则勾选上use multipart/form-data for post在Parameters中添加请求key value 

如果是请求体在body中,就在Body Data中填写请求体

添加Cookie

如果请求需要带Cookie则添加如下取样器

 添加请求头

如果请求需要必要头部信息,则加此取样器

 添加断言

 3、执行

添加结果树和聚合报告

执行

可以通过右上角的叹号查看代码执行遇到的问题

4、执行java接口 

编写java代码

在pom中添加如下依赖

   <!-- 添加 JMeter 依赖 -->
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>5.4.1</version> <!-- 使用你希望的 JMeter 版本 -->
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_http</artifactId>
            <version>5.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>5.4.1</version>
        </dependency>

继承AbstractJavaSamplerClient类重写runTest方法

package jmeter;

import com.jd.coffeeframework.common.adapter.export.dto.ExportRequest;
import com.jd.coffeeframework.common.adapter.export.dto.ExportResponse;
import com.jd.jr.cbp.bmall.api.AccessFacade;
import com.jd.jr.cbp.bmall.api.CouponFacade;
import com.jd.jr.cbp.bmall.api.TradeFacade;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import utils.JsfUtils;

public class TestJmeter extends AbstractJavaSamplerClient {

    private String jsfConfigPath = "/jsf-consumer.xml";
    private AccessFacade accessFacade;
    private CouponFacade couponFacade;
    private TradeFacade tradeFacade;

    @Override
    public void setupTest(JavaSamplerContext var1) {
        ClassPathXmlApplicationContext context = JsfUtils.getAllServices(jsfConfigPath);
        accessFacade = (AccessFacade)context.getBean("accessFacade");
        couponFacade = (CouponFacade)context.getBean("couponFacade");
        tradeFacade = (TradeFacade)context.getBean("tradeFacade");
    }

    @Override
    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        ExportRequest<String> stringExportRequest = new ExportRequest<>();
        stringExportRequest.setReqNo("989786569870");
        stringExportRequest.setRequestTime("121333232");
        stringExportRequest.setData("4545454");
        ExportResponse<Boolean> booleanExportResponse =             
        accessFacade.queryFinancingOpenedStatus(stringExportRequest);
        return null;
    }

    @Override
    public void teardownTest(JavaSamplerContext var1) {
        super.teardownTest(var1);
    }

}

 将代码打成jar包,放到jmeter安装目录的lib\ext\目录下,重新打开jmeter,在java请求取样器中可以选择到继承了AbstractJavaSamplerClient的类,执行时会执行runTest方法。

将代码执行依赖的其他jar包放到lib目录下,重新打开jmeter,执行即可。

可以看到继承AbstractJavaSamplerClient的类。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用 JMeter 进行压测时,可以使用 Java 代码片段来实现复杂的测试逻辑。下面是一个示例的 Java 代码片段,用于在 JMeter 中进行压测: ```java import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; import org.apache.jmeter.samplers.SampleResult; public class MySampler implements JavaSamplerClient { // 初始化方法,可在此处进行一些初始化操作 @Override public void setupTest(JavaSamplerContext context) { // 初始化操作 } // 设置线程数 @Override public Arguments getDefaultParameters() { Arguments arguments = new Arguments(); arguments.addArgument("ThreadCount", "10"); return arguments; } // 执行压测逻辑的方法 @Override public SampleResult runTest(JavaSamplerContext context) { SampleResult result = new SampleResult(); boolean success = true; result.sampleStart(); // 记录测试开始时间 try { // 执行压测逻辑,可以调用其他类或方法 // ... } catch (Exception e) { success = false; result.setResponseMessage("Exception: " + e); result.setSuccessful(false); } finally { result.sampleEnd(); // 记录测试结束时间 // 设置测试结果 if (success) { result.setResponseMessage("Test successful"); result.setSuccessful(true); } } return result; } // 结束方法,可在此处进行一些清理操作 @Override public void teardownTest(JavaSamplerContext context) { // 清理操作 } } ``` 在 JMeter 中,可以使用 BeanShell Sampler 或 JSR223 Sampler 来调用上述 Java 代码片段。需要将代码片段编译为 JAR 文件,并将其放置在 JMeter 的 lib/ext 目录下。然后,在 JMeter 中创建一个 BeanShell Sampler 或 JSR223 Sampler,调用 MySampler 类中的方法。 以上仅是一个示例,具体的压测逻辑和参数设置可根据实际需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值