最近测试共事在做压测过程中发现同样配置的两台服务器,部署同样的程序压测后果却差了很多(将近100tps),测试共事用的是loadrunner进行的压测,为了不占用测试资源,本地可能模拟出压测后果,须要在jmeter中自定义测试用例。上面介绍一下如何进行自定义。

引入jmeter的jar包

新建一个maven我的项目,联合你装置的jmeter版本,引入对应的版本jar包,次要是ApacheJMeter_core和ApacheJMeter_java,我这里用的是5.4.1

<dependency>    <groupId>org.apache.jmeter</groupId>    <artifactId>ApacheJMeter_core</artifactId>    <version>5.4.1</version></dependency><dependency>    <groupId>org.apache.jmeter</groupId>    <artifactId>ApacheJMeter_java</artifactId>    <version>5.4.1</version></dependency>

创立本人的用例

创立你本人的测试类,须要继承AbstractJavaSamplerClient,并实现他的几个接口,对应的办法执行机会,我在上面代码中正文了

public class MyTester extends AbstractJavaSamplerClient {    //执行测试代码,次要的逻辑    public SampleResult runTest(JavaSamplerContext javaSamplerContext) {        return null;    }    //执行之前的初始化逻辑    @Override    public void setupTest(JavaSamplerContext var1){    }    //完结办法    @Override    public void teardownTest(JavaSamplerContext var1){    }    //java request界面的参数    @Override    public Arguments getDefaultParameters(){        return null;    }}

这样看可能不是很分明,举个例子:

    @Override    public Arguments getDefaultParameters() {        Arguments params = new Arguments();        params.addArgument("host", "");        return params;    }

下面代码我实现了getDefaultParameters办法,并设置了一个host参数,那么在jmeter上显示的后果如下:

其余几个办法的含意,我感觉正文曾经足够分明了。

打包

实现本人的代码之后,就要进行打包了。如果你的我的项目不是springboot,则间接打包。如果你的我的项目是springboot我的项目,则须要去掉相干springboot的引入,把它改为一般包,比方我这里就把相干的包正文掉:

而后在maven插件里,把springboot的打包形式也正文掉:

而后打包就能够了。

应用

根本工作都曾经实现了,接下来开始看看怎么用。
找到jmeter的装置目录\lib\ext,把上一步生成的包丢进去,比方我目录是D:\安装包\apache-jmeter-5.4.1\lib\ext,则丢完之后:

如果你的我的项目中有依赖其余第三方jar的,则把依赖的第三方jar包也丢进去。
启动jmeter并创立对应的java request:

能够看到,咱们本人写的测试类曾经能够选到了。当然如果你须要显示tps报告的,则须要在申请之前和响应之后的逻辑上增加统计逻辑

SampleResult sr = new SampleResult();sr.sampleStart(); //开始统计String result = TcpUtil.send(host, content);sr.sampleEnd(); //完结统计

View Result Tree里的后果,也能够通过你对理论报文的解析来管制胜利还是失败

if (isSucess(result)) {    sr.setSuccessful(true);}else {    sr.setSuccessful(false);}

总结

整体上来说还是比较简单的,只有晓得jmeter提供的几个操作都是什么含意的。次要的坑还是在打包,你不能打个springboot包放进去,这样jmeter不认,最好是缩小第三方包的依赖,但这样也减少了咱们写代码的难度,如果写的不好,也会影响整体tps。