并发测试
-
JunitPerfer 这个测试工具不支持 @before @after 配置 也有点繁琐 弃用,参考测试步骤: http://www.blogjava.net/emu/articles/4358.html
-
ContiPerf 这个测试工具 支持注解,配置简单 还有生成测试结果页面 看起来直观,就用这个工具来测试我的项目吧,参考测试步骤:http://testing.etao.com/node/626
下面是我自己的步骤:
-
引入jar包
123456789101112<
dependency
>
<
groupId
>junit</
groupId
>
<
artifactId
>junit</
artifactId
>
<
version
>4.10</
version
>
<
scope
>test</
scope
>
</
dependency
>
<
dependency
>
<
groupId
>org.databene</
groupId
>
<
artifactId
>contiperf</
artifactId
>
<
version
>2.2.0</
version
>
<
scope
>test</
scope
>
</
dependency
>
maven构建的项目最方便了,希望你的项目也是maven构建的,如果不是或者想用最新的版本:http://sourceforge.net/projects/contiperf/files/
-
建Test_suite类
1234567891011121314151617181920212223import
org.databene.*;
import
org.junit.*;
@RunWith
(ContiPerfSuiteRunner.
class
)
@Suite
.SuiteClasses({UtilTest.
class
})
@PerfTest
(invocations =
5
, threads =
1
, rampUp =
1000
)
public
class
PerformanceTest{
@Rule
public
ContiPerfRule i =
new
ContiPerfRule();
// Invocations:方法的执行次数,例:@PerfTest(invocations = 300)重复执行300次;
// Threads:同时执行的线程数,例:@PerfTest(invocations = 30, threads = 2)两个线程并发执行,每个线程执行15次,总共执行30次;
// Duration:在指定时间范围内一直执行测试,例:@PerfTest(duration = 300)在300毫秒内反复执行。
// 三个属性可以组合使用,其中Threads必须和其他两个属性组合才能生效。当Invocations和Duration都有指定时,以执行次数多的为准。
// 例,@PerfTest(invocations = 300, threads = 2, duration = 100),如果执行方法300次的时候执行时间还没到100ms,
// 则继续执行到满足执行时间等于100ms,如果执行到50次的时候已经100ms了,则会继续执行之100次。
// 如果你不想让测试连续不间断的跑完,可以通过注释设置等待时间,
// 例,@PerfTest(invocations = 1000, threads = 10, timer = RandomTimer.class, timerParams = { 30, 80 }) ,每执行完一次会等待30~80ms然后才会执行下一次调用。
// 在开多线程进行并发压测的时候,如果一下子达到最大进程数有些系统可能会受不了,ContiPerf还提供了“预热”功能,
// 例,@PerfTest(threads = 10, duration = 60000, rampUp = 1000) ,启动时会先起一个线程,然后每个1000ms起一线程,到9000ms时10个线程同时执行,那么这个测试实际执行了69s,
// 如果只想衡量全力压测的结果,那么可以在注释中加入warmUp,即@PerfTest(threads = 10, duration = 60000, rampUp = 1000, warmUp = 9000) ,
// 那么统计结果的时候会去掉预热的9s。
}
注释都在里面了 我就不多说啦,其中 @Suite.Suiteclasses({utilTest.class}) 就是你原有的junit测试类,基本不需要做任何改动,当然如果你定义了成员变量,建议你最好放线程里,因为我们做的是并发嘛
至于具体方式请参考http://www.blogjava.net/emu/articles/4358.html
作者:九州浪子
出处:http://www.cnblogs.com/juforg/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。