使用java自定义jmeter的压力测试用例

本文介绍了如何使用Java自定义JMeter压力测试用例,以应对图形化GUI需求和分布式压测场景。通过创建Java请求并在类中实现JMeter提供的接口,可以实现自己的测试逻辑。文章还提到了如何重写初始化参数,并提供了一个代码示例链接。

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

    之前已经分享过如何用java进行压力测试,然而,那种直接用代码压测的缺乏图形化GUI的直观。同时,只能够单机进行压测,有些情况下,比如webservice的压测需要大量的序列化反序列化xml,这些很消耗CPU之类的资源的压力测试,单机根本不足。

    基于上述的原因,我选择了jmeter来进来一些压力测试用例的实施,像普通的http压力测试的对jmeter来说都小菜一碟,同时分布式的压力测试对jmeter来说更是对用户透明的。jmeter的资料在网上已经很足够,就不怎么重复了,这次想要重点讲的是如何定义自己的压力测试的用例。

    类似于之前的压力测试模板,jmeter也提供了模板给我们,它就是在线程组下新建sample-》java请求,我们在java请求的选择中会有几个默认的test可以让我们选,这几个都是demo,我们今天要做的就是模仿下这个demo来实现自己的test,来让jmeter加载我们的test。

在这个红线框出的就是我们自己定义的test。

     要实现这样一个test,只需要我们写个类实现jmeter提供的

AbstractJavaSamplerClient 模板类
,然后实现里面的
public SampleResult runTest(JavaSamplerContext javaSamplerContext)
,然后将该类打包成jar包,并且扔进去${jmeter_home}/lib/ext/下,jmeter就会自己在java请求面板中加载。

  public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
        SampleResult results = new SampleResult();//这个一定要定义,jmeter调用根据这个来计算调用率
        try {
            results.sampleStart();//开始调用
            results.setSampleLabel("lsz");//设置聚合报告中的名字
            Thread.sleep(100);
            results.setSuccessful(true);
            results.setResponseCodeOK();
            results.setBodySize(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }finally {
            results.sampleEnd();//一定要end,不然jmeter不统计这次结果~
        }
        return results;
    }

同样的,我们可以自己定义初始化的参数,只需要重写

public Arguments getDefaultParameters()
返回参数的列表就可以了。

    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("SleepTime", String.valueOf(1000L));
        params.addArgument("SleepMask", "0x" + Long.toHexString(1023L).toUpperCase(Locale.ENGLISH));
        return params;
    }



代码:https://github.com/linsongze/jmeter_javatest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值