快速业务通道

追求代码质量 - 用JUnitPerf进行性能测试 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
即 迫使测试失败 。否则,测试样例将完整运行,然后失败。区别很微妙:在一个失败的样例中, 不带可选标志运行测试可以帮您了解运行总时间。传入 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,所有线程都会同时启动。

清单 3 是用 ConstantTimer 实现的含 10 个模拟用户的负载测试:

清单 3. 为生成负载测试而实现的 suite 方法

public static Test  suite() {  int users = 10;  Timer timer = new  ConstantTimer(100);  return new LoadTest(  new  WidgetDAOImplTest("testCreate"),   users, timer); }

请注意,testCreate() 方法运行 10 次,每个线程间隔 100 毫 秒启动。未设定时间限制 —— 这些方法完整运行,如果其中任何的 方法执行失败,JUnit 会相应地报告失败。

追求代码质量 - 用JUnitPerf进行性能测试(3)

时间:2010-12-10 IBM Andrew Glover

用样式进行装饰

装饰 器并不局限于单个的装饰物。例如,在 Java™ I/O 中,可以为 FileInputStream 装饰上一个带 BufferedReader 的 InputStreamReader(只要 记住:BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("infilename"), "UTF8")))。

装饰可以有多个层次,JUnitPerf 的 TimedTest 和 LoadTest 也是一样。当 这两个类彼此装饰时,将导致一些强制的测试场景,例如像这样的场景:在一项 业务中放置了负载并应用了时间限制。或者,我们可以仅仅将之前的两个测试场 景以如下方式结合起来:

在 testCreate() 方法中放置一项负载。

规定每个线程必须在该时间限制内结束。

我通过为一个标准 Test 装饰上 LoadTest(由 TimedTest 装饰)应用了上述规范,清单 4 显示了 其结果。

清单 4. 经装饰的负载和时限测试

public static  Test suite() {  int users = 10;  Timer timer = new  ConstantTimer(100);  long maxElapsedTime = 2000;   return new TimedTest(new LoadTest(   new WidgetDAOImplTest ("testCreate"), users, timer),    maxElapsedTime); }

正如您所看到的那样,testCreate() 方法运行 10 次(每隔 100 毫秒启动 一个线程),且每个线程必须在 2 秒内完成,否则整个测试场景将失败。

使用注意

尽管 JUnitPerf 是一个性能测试框架,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号