快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
但也要先大致估计一下测试要设定的 性能指数。这是由于所有由 JUnitPerf 装饰的测试都通过 JUnit 框架运行,所 以就存在额外的消耗,特别是在利用 fixture 时。由于 JUnit 本身用一个 setUp 和一个 tearDown() 方法装饰所有测试样例,所以要在测试场景的整个上 下文中考虑执行时间。

相应地,我经常创建使用我想要的 fixture 逻辑的测试,但也会运行一个空 白测试来确定性能指数基线。这是一个大致的估计,但它必须作为基线添加到任 何想要的测试限制中。

例如,如果运行一个由 fixture 逻辑(使用 DbUnit)装饰的空白测试用时 2.5 秒,那么您想要的所有测试限制都应将这一额外时间考虑在内 —— 这可以 从清单 5 中的基准测试中看到:

清单 5. JUnitPerf 基准测试

public class  DBUnitSetUpBenchmarkTest extends DatabaseTestCase {   private WidgetDAO dao = null;   public void testNothing(){   //should be about 2.5 seconds   }   protected IDatabaseConnection getConnection() throws  Exception {   Class driverClass = Class.forName ("org.hsqldb.jdbcDriver");   Connection jdbcConnection =    DriverManager.getConnection(     "jdbc:hsqldb:hsql://127.0.0.1", "sa", "");   return new DatabaseConnection(jdbcConnection);   }   protected IDataSet getDataSet() throws Exception {   return new FlatXmlDataSet(new File("test/conf/seed.xml"));   }   protected void setUp() throws Exception {   super.setUp();   final ApplicationContext context =    new ClassPathXmlApplicationContext("spring-config.xml");   this.dao = (WidgetDAO) context.getBean("widgetDAO");   } }

请注意,清单 5 的测试样例 testNothing() 什么都没做。其惟一的目的是 确定运行 setUp() 方法(当然,该方法也通过 DbUnit 设置了一个数据库)的 总时间。

也请记住,测试时间将依赖于机器的配置而变化,同时也依赖于在执行 JUnitPerf 测试时运行的东西而变化。我经常发现,将 JUnitPerf 测试放到它 们自己的分类中有助于将它们同标准测试隔离开。这意味着,在运行一个测试时 不必每次都运行 JUnitPerf 测试,例如在一个 CI 环境中签入代码。我也会创 建特定的 Ant 任务,从而只在精心策划的将性能测试考虑在内的场景或环境中 运行这些测试。

试试吧!

用 JUnitPerf 进行性能测试无疑是一门严格的科学,但在开发生命周期的早 期,这是确定和监控应用程序代码的低端性能的极佳方式。另外,由于它是一个 基于装饰器的 JUnit 扩展框架,所以可以很容易地用 JUnitPerf 装饰现有的 JUnit 测试。

想想您已经花了这么多时间来担心应用程序在负载下会怎样执行。用 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号