zoukankan      html  css  js  c++  java
  • 并发测试

    • JunitPerfer 这个测试工具不支持 @before @after 配置 也有点繁琐 弃用,参考测试步骤: http://www.blogjava.net/emu/articles/4358.html

    • ContiPerf  这个测试工具 支持注解,配置简单 还有生成测试结果页面 看起来直观,就用这个工具来测试我的项目吧,参考测试步骤:http://testing.etao.com/node/626

      下面是我自己的步骤:

    1. 引入jar包

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      <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/

    2. 建Test_suite类

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      import 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





  • 相关阅读:
    反射 动态导入 元类
    面向对象的继承
    面向对象基础总结
    面向对象基础
    包 logging hashlib copy模块
    os random sys json 模块
    【1012 | Day 43】前端之CSS(下)
    【1011 | Day 42】灵魂拷问:数据放在服务端和客户端的利与弊?
    【1011 | Day 42】socket实现ftp文件的上传和下载
    【1011 | Day 42】前端之CSS(上)
  • 原文地址:https://www.cnblogs.com/juforg/p/3257563.html
Copyright © 2011-2022 走看看