WEB开发网
开发学院软件开发Java 追求代码质量: 用 JUnitPerf 进行性能测试 阅读

追求代码质量: 用 JUnitPerf 进行性能测试

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 也可以选择传入一个 boolean 标志作为第三个参数(false),这将导致测试快速失败 —— 意味着如果超过最大时间,追求代码质量: 用 JUnitPerf 进行性能测试(3),JUnitPerf 将立即 迫使测试失败,否则,可以更真实地模拟用户负载,如果没有 Tim

也可以选择传入一个 boolean 标志作为第三个参数(false),这将导致测试快速失败 —— 意味着如果超过最大时间,JUnitPerf 将立即 迫使测试失败。否则,测试样例将完整运行,然后失败。区别很微妙:在一个失败的样例中,不带可选标志运行测试可以帮您了解运行总时间。传入 false 值却意味着得不到运行总时间。

例如,在清单 2 中,我在运行 testCreate() 时设定了一个两秒钟的上限。如果执行总时间超过了这个时间,测试样例将失败。由于我并未传入可选的 boolean 参数,该测试将完整运行,而不管运行会持续多久。


清单 2. 为生成 TimedTest 而实现的 suite 方法
public static Test suite() { 
 long maxElapsedTime = 2000; //2 seconds 
 Test timedTest = new TimedTest( 
  new WidgetDAOImplTest("testCreate"), maxElapsedTime); 
 return timedTest;    
} 

此测试通常在 JUnit 框架中运行 —— 现有的 Ant 任务、Eclipse 运行器等等,会像运行任何其他 JUnit 测试一样运行这个测试。惟一的不同是,该测试将发生在计时器的上下文中。

过度的负载测试

与在测试场景中验证一个方法(或系列方法)的时间限制正好相反,JUnitPerf 也方便了负载测试。正如在 TimedTest 中一样,JUnitPerf 的 LoadTest 也像装饰器一样运行,它通过将 JUnit Test 和额外的线程信息绑定起来,从而模拟负载。

使用 LoadTest,可以指定要模拟的用户(线程)数量,甚至为这些线程的启动提供计时机制。JUnitPerf 提供两类 Timer:ConstantTimer 和 RandomTimer。通过为 LoadTest 提供这两类计时器,可以更真实地模拟用户负载。如果没有 Timer,所有线程都会同时启动。

上一页  1 2 3 4 5  下一页

Tags:追求 代码 质量

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接