Jmeter Java Sampler最简使用指南
1.Jmeter 介绍
Jmeter是Java开发者做性能测试的非常好用的工具,本文记录下第一次使用Jmeter时,maven和相关配置示例。
2.maven 依赖
引用Jmeter的maven依赖,注意scope一定要是provided,以保证打包时,jmeter的包不会被打入。
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>5.0</version>
<scope>provided</scope>
</dependency>
maven build中的配置,把整个项目,打包至一个jar包,即所有的dependency都放在里面。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
3.性能测试类
public class HelloSampler extends AbstractJavaSamplerClient implements Serializable {
@Override public void setupTest(JavaSamplerContext context) {
super.setupTest(context);
}
@Override public void teardownTest(JavaSamplerContext context) {
super.teardownTest(context);
}
@Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult sampleResult = new SampleResult();
sampleResult.sampleStart();
try {
//TODO runtestsampleResult.setSuccessful(true);
}
catch (Exception e) {
e.printStackTrace();
sampleResult.setSuccessful(false);
}
sampleResult.sampleEnd();returnsampleResult;
}}
1.继承自AbstractJavaSamplerClient,并重写runTest方法
2.SampleResult.sampleStart(), sampleEnd()用于统计调用时间
3.SampleResult.setSuccessful(...)标示该次调用是否出错
4.编写测试配置文件
1.将项目工程使用maven打包
比如打包后名称为jmeter-test-1.0.0-jar-with-dependencies.jar,将该jar包,拷贝至jmeter目录的apache-jmeter-5.0/lib/ext
2.启动Jmeter
选择添加-> 线程 -> 线程组
3.添加Java请求
线程组中选择添加-> 取样器-> Java请求
4.添加Java测试类
Jmeter会自动扫描到已经添加的Java类,直接选择即可
5.添加汇总报告
只有添加汇总报告后,运行结束后才会显示汇总信息 按图选择添加汇总报告即可
6.命令行运行
./jmeter.sh -n -t hello-jmeter.jmx 便可生成如下的汇总报告:
Waitingforpossible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 15476in00:00:11 = 1900.3/s Avg: 72 Min: 9 Max: 792 Err: 0 (0.00%) Active: 128 Started: 128 Finished: 0
summary + 63500in00:00:30 = 1904.2/s Avg: 60 Min: 8 Max: 398 Err: 0 (0.00%) Active: 128 Started: 128 Finished: 0
summary = 78976in00:00:41 = 1924.1/s Avg: 62 Min: 8 Max: 792 Err: 0 (0.00%)
1900.3/s 表示截止到该次的QPS
Avg表示接口平均响应时间
Min表示接口最小响应时间
Max表示接口最大响应时间
Err表示接口返回错误的个数