追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧

追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧

ID:30951684

大小:76.00 KB

页数:6页

时间:2019-01-04

追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧_第1页
追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧_第2页
追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧_第3页
追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧_第4页
追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧_第5页
资源描述:

《追求代码质量(9)-用junitperf进行性能测试-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、追求代码质量(9):用JUnitPcrf进行性能测试-编程开发技术追求代码质量(9):用JUnitPerf进行性能测试原文出处:IBM中国在应用程序的开发屮,验证应用程序的性能几乎总处于次要的地位。请注意,我强调的是殓迹?应用程序的性能。应用程序的性能佐渥?首要考虑的因素,但开发周期屮却很少包含对性能的验证。由于种种原因,性能测试常被延迟到开发周期的后期。以我的经验,企业之所以在开发过程屮不包含性能测试是因为,他们不知道对于正在进行开发的应用程序要期待什么。提出了一些(性能)指数,但这些指数是基于预期负载提岀的。发生下列两种情况之一时

2、,性能测试就成为头等大事:•生产中出现显而易见的性能问题。•在同意付费之前h客户或潜在客户询问有关性能指数的问题。本月,我将介绍两种简单的性能测试技术,在上述两种情况小的任何一种发生前进行测试。用JUnitPerf进行测试在软件开发的早期阶段,使用JUnit很容易确定基本的低端性能指数。JUnitPerf框架能够将测试快速地转化为简单的负载测试,甚至压力测试。可使用JUnitPerf创建两种测试类型:TimedTest?和?LoadTest。这两种类型都基于Decorator设计模式并利用JUnit的?suite?机制。TimedTe

3、st?为测试样例创建一个(时间)上限一一如果超过这个时间,那么测试失败。IxmdTest?和计时器一起运行,它通过运行所需的次数(时间间隔由配置的计时器控制),在一个特定的测试用例上创建一个人工负载。恰当的时限测试JUnitPerf?TimedTest?让您可以编写有相关吋间限制的测试——如果超过了该限度,就认为测试是失败的(即便测试逻辑本身实际上是成功的)。在测试对于业务致关重要的方法时,时限测试相比其他测试来说,在确定和监控性能指数方而很冇帮助。茯至可以测试得更加细致一些,可以测试一系列方法来确保它们满足特定的时间限制。例如,假设

4、存在一个Widget应用程序,其中,特定的对于业务致关重要的方法(^H?createWidgetO)是严格的性能限制的测试目标。假设需要对执行该?create()?方法的功能方面进行性能测试。这通常会由不同的团队使用不同的工具在开发周期的后期加以确定,这通常不能指出精确的方法。但假设决定选择早期经常测说方法取乖代込。创建?TimedTcst?首先耍创建一个标准的JUnit测试。换言Z,将对?TcstCasc?或其派生类进行扩展,并编写一个以?test?开头的方法,如清单1所示:清单1.简单的widget测试publicclassWid

5、getDAOImplTestextendsTestCase{privateWidgetDAOdao;publicvoidtestCreate()throwsException{IWidgetwdgt=newWidget();wdgt.setWidgetld(1000);wdgt.setPartNumber(〃12-34-BBD");try{this.dao.createWidget(wdgt);}catch(CreateExceptione){TestCase.fail(^CreateExceptionthrowncreatingaW

6、idget");}protectedvoidsetUp()throwsException{ApplicationContextcontext二newClassPathXmlApplicationContext(^spring-config.xml〃);this.dao=(WidgetDAO)context・gctBcein("widgctDAO");由于JUnitPerf是一个基于装饰器的框架,为了真正地驾驭它,必须提供一个?suite()?方法并将现有的测试装饰以?TimedTestoTimedTest?以Test?和执行该测试的最

7、大时间量作为参数。也可以选择传入一个?boolean?标志作为第三个参数(false),这将导致测试快速失败意味着如果超过最大时间,JUnitPerf将竝妙?迫使测试失败。否则,测试样例将完整运行,然后失败。区别很微妙:在一个失败的样例屮,不带口J选标志运行测试口J以帮您了解运行总时间。传入?false?值却意味着得不到运行总时间。例如,在清单2屮,我在运行?testCreate()?时设定了一个两秒钟的上限。如果执行总时间超过了这个时间,测试样例将失败。由于我并未传入可选的?boolean?参数,该测试将完整运行,而不管运行会持续多

8、久。清单2.为生成TimedTest而实现的suite方法publicstaticTestsuite(){longmaxElapsedTime二2000;//2secondsTesttimedTest二newTimedT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。