博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ContiPerf接口性能测试
阅读量:6712 次
发布时间:2019-06-25

本文共 3431 字,大约阅读时间需要 11 分钟。

  hot3.png

ContiPerf

ContiPerf是一个轻量级的测试工具,基于JUnit 4 开发,可用于接口级的性能测试

可以指定在线程数量和执行次数,通过限制最大时间和平均执行时间来进行效率测试

具体使用方法

添加依赖

org.databene
contiperf
2.3.4
test

在junit中使用

/**     * 激活性能测试     * 否则@PerfTest 无法生效     */    @Rule    public ContiPerfRule rule = new ContiPerfRule();    @Test    @PerfTest(invocations = 100000,threads = 1000)    public void selectDailyReadingUserAvatarByDailyIdTest(){        long id = (long) (Math.random()*600);        dailyService.selectDailyReadingUserAvatarByDailyId(id);    }

@PerfTest相关参数

@Documented@Target({ METHOD, TYPE })@Retention(RUNTIME)public @interface PerfTest {	/**   * 常用的就是这个参数 执行次数  与线程无关	 * The total number of invocations to perform - use this alternatively to {@link #duration()}.	 * The default value is one. @see #duration()	 */	int invocations() default  1;	/**   * 间隔时间  可以暂时不用  因为性能测试主要是测试并发	 * The number of milliseconds to run and repeat the test with the full number of configured threads -	 * use this alternatively to {@link #invocations()}. When using a {@link #rampUp()}, the ramp-up times	 * add to the duration.	 * @see #duration()	 */	int duration() default -1;	/**  * 线程数 这个比较好理解  * The number of threads which concurrently invoke the test. The default value is 1.  */	int threads() default  1;	/**	 * The number of milliseconds to wait before each thread is added to the currently active threads.	 * On {@link #duration()}-based tests, the total ramp-up time of rampUp * (threads - 1) is added to the	 * configured duration.	 */	int rampUp() default  0;	/** The number of milliseconds to wait before the actual measurement and requirements monitoring is activated.	 *  Use this to exclude ramp-up times from measurement or wait some minutes before dynamic optimizations are	 *  applied (like code optimization or cache population). */	int warmUp() default  0;	/** Set this to true, if execution should stop with a failure message as soon as a configured {@link Required#max()}	 * value is violated. Set it to false, if you are interested in performing a full measurement to get percentiles,	 * throughput and more. The default value is false. */	boolean cancelOnViolation() default false;	/** The class of a {@link WaitTimer} implementation by which a wait time can be incurred between test invocations */	Class
timer() default None.class; /** The parameters to initialize the {@link WaitTimer}. * The meaning of the values is individual for the WaitTimer implementation. */ double[] timerParams() default { }; /** One ore more {@link Clock} classes to use for time measurement. * The first one specified is the one relevant for requirements verification. */ Class
[] clocks() default { }; // TODO v2.x int timeout() default -1;}

在上面我们一般只要配置invocations和threads参数即可

其他具体的感兴趣可以直接看源码,注释比较清楚

执行

和正常的junit使用一样,直接执行即可

只不过在执行完会有相应的结果在命令行中输入

samples: 100000max:     23764average: 2153.67736median:  1478

其他的输出结果和junit的结果一样

图形化结果查看

在junit执行完毕,会在target/contiperf-report中有相关的执行结果,可以使用浏览器打开查看

输入图片说明

补充junit的使用方式

配置使用

  1. spring项目
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:META-INF/application.xml"})
  1. spring boot项目
@RunWith(SpringRunner.class)@SpringBootTest

配置文件加载顺序

在Spring中只要记住一个原则,最近原则就好

外部配置替换内部配置

test中的配置优先加载,如果test中没有的配置向外查找加载

转载于:https://my.oschina.net/kipeng/blog/1810841

你可能感兴趣的文章
spring oauth从请求中获取token
查看>>
6.18docker(一)Compose 模板文件
查看>>
每天学点GDB 9
查看>>
为什么要用 /dev/null 2>&1 这样的写法
查看>>
AngularJs创建省,市,区的3级列表
查看>>
wp7 独立存储
查看>>
项目UML设计(团队)
查看>>
Divideing Jewels
查看>>
洛谷P4169 天使玩偶 (算竞进阶习题)
查看>>
11周
查看>>
Order By操作
查看>>
东北证券——“智能报表系统”的建设经验
查看>>
十分钟理解Gradle
查看>>
Mysql复习大全(转)
查看>>
回到上次目录、历史命令查找快捷方式及执行时间显示设置、查看系统版本
查看>>
略论软件模块的加载策略
查看>>
siege 输出结果 理解
查看>>
C语言学习趣事_20_Assert_Setjmp
查看>>
Cogs 1672. [SPOJ375 QTREE]难存的情缘 LCT,树链剖分,填坑计划
查看>>
同一个工程下使用多个.C文件的设计(模块化设计)
查看>>