SpringBoot并发压测工具ContiPerf

ContiPerf 是一个轻量级的测试工具,基于JUnit 4 开发,可用于性能测试等。可以指定在线程数量和执行次数,通过限制最大时间和平均执行时间来进行性能测试。

 

1、pom文件依赖

 


  org.springframework.boot
  spring-boot-test


  org.springframework
  spring-test
  5.1.3.RELEASE
  compile


  junit
  junit


  org.databene
  contiperf
  2.3.4
  compile

 

 2、测试类(尽量通过测试类提示,引入依赖包,避免过时。)

 

package miniprogram.test;

import org.databene.contiperf.PerfTest;
import org.databene.contiperf.junit.ContiPerfRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringsApplicationTests {
//  @Autowired
//  public TUserService userService;

  @Test
  public void contextLoads() {
  }
  
  /**
   * 引入 ContiPerf 进行性能测试
   * 激活性能测试,否则@PerfTest 无法生效
   */
  @Rule
  public ContiPerfRule contiPerfRule = new ContiPerfRule();

  /**
   * 10个线程 执行100次
   * invocations:调用次数,执行次数与线程无关
   * threads:线程
   */
  @Test
  @PerfTest(invocations = 100,threads = 10)
  public void test() {


  }

}

注:

1)PerfTest参数

@PerfTest(invocations = 300):执行300次,和线程数量无关,默认值为1,表示执行1次;

@PerfTest(threads=30):并发执行30个线程,默认值为1个线程;

@PerfTest(duration = 20000):重复地执行测试至少执行20s。

 

2)Required参数

@Required(throughput = 20):要求每秒至少执行20个测试;

@Required(average = 50):要求平均执行时间不超过50ms;

@Required(median = 45):要求所有执行的50%不超过45ms;

@Required(max = 2000):要求没有测试超过2s;

@Required(totalTime = 5000):要求总的执行时间不超过5s;

@Required(percentile90 = 3000):要求90%的测试不超过3s;

@Required(percentile95 = 5000):要求95%的测试不超过5s;

@Required(percentile99 = 10000):要求99%的测试不超过10s;

@Required(percentiles = "66:200,96:500"):要求66%的测试不超过200ms,96%的测试不超过500ms。

 

3)@PerfTest @Required 可以加在类上面,表示所有方法的默认配置

 

4. 在测完之后,在本地的target下生成contiperf-report目录,里面有个index.html文件,即为测试结果。

 

 

5.打开index.html查看测试结果

SpringBoot并发压测工具ContiPerf_第1张图片

指标说明:

指标

说明

Execution time

执行总时间

Total invocations

总请求数

Throughput

每秒效率 TPS

Min. latency

最短响应时间

Average latency

平均响应时间

Median

TP50响应时间

90%

TP90响应时间

Max latency

最长响应时间

 

问题:

java.lang.NoSuchMethodError: org.springframework.util.Assert.state(ZLjava/util/function/Supplier;)V

 

解决:报这个错,一般是因为有jar包冲突了,删掉一个就好了。

查看pom文件,虽然这里发现有重复的junit包,删除了也没有解决问题。

SpringBoot并发压测工具ContiPerf_第2张图片

后来,比对版本号,把版本改高就这个问题就解决了:

 

SpringBoot并发压测工具ContiPerf_第3张图片

 

SpringBoot并发压测工具ContiPerf_第4张图片

你可能感兴趣的:(SpringBoot并发压测工具ContiPerf)