1. 简介
ContiPerf是一个轻量级的测试工具,基于JUnit4开发,可用于接口级的性能测试,可以设置线程数和执行次数,通过限制最大时间和平均执行时间来进行效率测试。
2. 使用方法
添加依赖
1
2
3
4
5
6<dependency>
<groupId>org.databene</groupId>
<artifactId>contiperf</artifactId>
<version>2.3.4</version>
<scope>test</scope>
</dependency>创建Domain
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"g_data_sources", comment = "数据源信息表") .hibernate.annotations.Table(appliesTo =
public class DataSources extends BasePO {
private String name;
private String url;
private String username;
private String pwd;
//-----------------省略getter/setter方法 ---------------
}创建查询代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class DataSourcesDaoImpl {
private EntityManager entityManager;
public DataSources findById(Integer id) {
List<DataSources> result = entityManager.createQuery("from DataSources e where e.id = " + id).getResultList();
if (result != null && !result.isEmpty()) {
return result.get(0);
}
return null;
}
}创建测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MybatisGeneratorApplicationTest {
private DataSourcesDaoImpl dataSourcesDao;
public ContiPerfRule rule = new ContiPerfRule(); //重点
//10个线程 执行100次
//重点
//指定每次执行的最长时间/平均时间/总时间
// @Required(max = 1200, average = 250, totalTime = 60000)
public void test() {
int id = (int) (Math.random() * 60);
dataSourcesDao.findById(id);
}
}JUnit执行完毕,会在
target/contiperf-report
中有相关的执行结果
可以使用浏览器打开查看结果
- Measured invocations: 请求次数
- Thread Count: 线程数
- Execution time:总执行时间
- Throughput: 吞吐量,每秒效率 TPS
- Min. latency: 最短响应时间
- Average latency: 平均响应时间
- Median: TP50响应时间
- 90%: TP90响应时间,指在一个时间段内(如5分钟),统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,取第90%的那个值作为TP90 值;配置此监控指标对应的报警阀值后,需要保证在这个时间段内该方法所有调用的消耗时间至少有90%的值要小于此阀值,否则系统将会报警
- Max latency: 最长响应时间
报告图片显示不出来,是源码中使用了google图表,需要在线!!并且源码中写死了cht=lxy
,可以参考ContiPerf html报告
3. @PerfTest参数说明
1 |
|
4. @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 |