问题描述:今天遇到一个问题是需要对java程序进行压力测试,之前的压力测试一般都是针对web应用程序,一时之间没有思路,经过查询原来还是通过JEmeter进行测试,以下是步骤清单。
解决步骤:
1.首先在项目中引入jmeter需要的jar包,这里需要注意的是版本要与你本地的JMeter本本保持一致。
<!-- jmeter压力测试相关,JMeter与本地版本保持一致即可 -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>5.2.1</version>
</dependency>
2.构建一个测试类,该类必须继承自 AbstractJavaSamplerClient
public class P1SignTest extends AbstractJavaSamplerClient {
/**
* 把测试的一些默认数据在程序运行前显示到JMeter客户端,
* 如果设置类下面的参数则可以再JMeter中赋值。
* @return
*/
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("certId", "");
params.addArgument("original", "");
return params;
}
/**
* 测试执行的循环体,根据线程数和循环次数的不同可执行多次,
* 在这里面调用你的业务代码即可
* @param context
* @return
*/
@Override
public SampleResult runTest(JavaSamplerContext context) {
SampleResult sampleResult = new SampleResult();
// 从JMeter中获取参数
String certId = context.getParameter("certId");
String original = context.getParameter("original");
// 计时开始
sampleResult.sampleStart();
//测试方法
try {
// 业务代码在这里面调用,你需要对那个方法进行压力测试就在这里面调用即可。
//将结果写入结果树:在jmeter的监听器-查看结果树时即可查看返回结果
sampleResult.setResponseData("执行结果是:" + result, null);
sampleResult.setDataType(SampleResult.TEXT);
sampleResult.setSuccessful(true);
} catch (Exception e) {
sampleResult.setSuccessful(false);
e.printStackTrace();
}
return sampleResult;
}
/**
* 测试的时候用,打包的时候注释掉即可
*
**/
public static void main(String[] args) {
Arguments params = new Arguments();
params.addArgument("certId", "60c895631462c37c35e951bb");
params.addArgument("original", "签名数据");
JavaSamplerContext context = new JavaSamplerContext(params);
// 业务类
P1SignTest p1SignTest = new P1SignTest();
p1SignTest.setupTest(context);
p1SignTest.runTest(context);
p1SignTest.teardownTest(context);*/
}
}
3. 将程序打包,并将jar包导出到JMeter的安装目录中,具体目录为:%JMETER_HOME%/lib/ext中,让后启动JMeter。
在线程组中==》添加==》取样器==》java请求
在这里选择启动类以及填写参数值,红色为需要测试的启动类,蓝色为需要填写的参数。
最后点击启动即可在察看结果树中看到响应结果了。