利用Eclipse Callisto阐明应用措施
当前位置:以往代写 > JAVA 教程 >利用Eclipse Callisto阐明应用措施
2019-06-14

利用Eclipse Callisto阐明应用措施

利用Eclipse Callisto阐明应用措施

副标题#e#

Eclipse(Eclipse 3.2)的最新版本带有Callisto,一套富厚的针对Eclipse 3.2的可选插件。Callisto包罗一个成果强大的阐明东西,此东西称为Eclipse测试与机能东西平台,简称TPTP。TPTP提供了一套成果全面的开源机能-测试和阐明东西,包罗集成的应用措施监控、测试、跟踪和阐明成果,以及静态代码阐明东西。对付在种种Java应用措施中找出和识别机能问题,阐明东西的代价是不行预计的。在本文中,我们将探讨如何利用TPTP来担保得到高质量和高机能的代码(甚至是在单位和集成测试中)。

安装TPTP

安装TPTP最容易的方法是利用Remote Update站点(拜见图1)。打开Remote Update窗口(Help -> Software Updates -> Find and Install),然后选择Callisto Discovery Site。Eclipse将发起安装Callisto插件集。TPTP东西列在“Testing and Performance”下面。最容易也是最耗时的选择,就是安装所有发起的插件。纵然不安装整个Callisto东西集,您仍然需要安装一些其他TPTP需要的组件,譬喻"Charting and Reporting"、"Enabling Features"和"Data Tool Performance"。

操作Eclipse Callisto阐发应用法子

图1.从长途站点安装TPTP

阐明Java应用措施

测试与机能东西平台根基上是一套阐明东西。阐明应用措施凡是涉及到调查应用措施在压力之下的处理惩罚方法。这样做的一种常见方法是对已陈设的应用措施运行一组负载测试,然后利用阐明东西来记录应用措施的行为。接着,可以对功效举办研究来观测任何机能问题。这些工作凡是是在项目竣事时举办的,因为此时应用措施险些已经筹备好进入出产阶段了。

TPTP很是适合这类任务。一个典范的用例是利用像JMeter这样的东西来运行负载测试,然后利用TPTP归纳东西记录和阐明机能统计数据。

然而,这并非利用TPTP阐明应用措施的独一方法。凡是,越早举办测试,后头碰着的问题就越少。借助TPTP,您可以在许多上下文中阐明代码,包罗JUnit测试用例、Java 应用措施和web应用措施。并且它很好地集成到了Eclipse IDE中。所以,没有来由不在早期开始劈头机能测试和阐明事情。

TPTP让您可以测试应用措施行为的几个方面,包罗内存利用(建设了几多工具,这些工具的巨细如何)、执行统计数据(应用措施在哪些处所所花的时间较多)和测试包围(测试期间执行代码简直切数量)。每个方面均可提供有关应用措施机能的独立信息。

不管怎么说,内存泄漏大概并且简直存在于Java中。建设(并生存)不须要的工具会增加对内存的需求,并加重垃圾收集器的事情承担,这城市损害应用措施的机能。并且,假如运行应用措施的处事器的一连正常运行时间很长,累积下来的内存泄漏大概最终导致应用措施瓦解或处事器遏制运行。这些都是把稳应用措施内存泄漏环境的充实来由。

按照80-20履历法例,80%的机能问题呈此刻20%的代码中。可能,换句话说,只要把精神会合在应用措施中执行最常常的部门上,就可以耗费相对较少的力量使机能有实质性的提高。在这种环境下,执行统计数据就可以派上用场了。

除此以外,TPTP还提供一些根基的测试包围数据。尽量这些统计数据不如Cobertura或Clover这样的专用东西提供的完整,您仍然可以通过它们快速相识机能测试正在有效地测试哪些要领。


#p#副标题#e#

在本文中,我接头的测试种类同样是没有颠末优化的。优化涉及到利用像缓冲这样的技能对应用措施机能举办微调。这是一项对技能要求很高的操纵,最好留到项目标最后完成。

这里所接头的这种劈头机能测试和阐明仅仅包罗,确保应用措施从一开始就正确执行,以及没有编码错误或糟糕的编码实践会在后头的阶段中对机能发生倒霉的影响。事实上,修复内存泄漏和制止不须要的工具建设并不是优化——这只不外是调试,并且同样应该尽大概早地完成。

让我们通过利用一些单位测试来阐明一个类的方法开始。可以阐明通例的单位或集成测试,可能编写针对性更强的面向机能的测试。凡是,您应该实验阐明与出产代码最靠近的代码。很多人利用模仿工具来取代DAO工具举办单位测试,利用这项成果强大的技能可以加快开产生命周期。假如利用这类要领,必然要利用这些测试来运行阐明东西,它可以展现有关内存利用和测试包围的有用信息。然而,机能测试的代价是有限的,因为对付与数据库相关的应用措施来说,其机能往往是由数据库的机能所抉择的,所以在这个上下文中,应该举办所有重要的机能测试。简而言之,不要忘了阐明基于实际数据库而运行的集成测试。

出于本文的需要,我们将对以下类举办测试,这个类代表了一个到库目次的简朴接口。

interface Catalog {
 List findBooksByAuthor(String name);
 List findAllBooks();
}

根基的单位测试如下:

#p#分页标题#e#

public class CatalogTest extends TestCase {
 ...
 public Catalog getCatalog() {
  ...
 }
 public void testFindBooksByAuthor() {
  List books = getCatalog().findBooksByAuthor("Lewis");
 }
 public void testLoadFindBooksByAuthor() {
  for(int i = 0; i < 10; i++) {
   List books= getCatalog().findBooksByAuthor("Lewis");
  }
 }
 public void testFindAll() {
  List books = getCatalog().findAllBooks();
 }
}

您需要做的第一件工作就是成立一个阐明。在Eclipse主菜单中选择"Run -> Profile",这将打开一个领导,您可以在个中设置差异种类的测试阐明,如图2所示。

操作Eclipse Callisto阐发应用法子

图2. 建设一个TPTP阐明

在这个例子中,我们感乐趣的是JUnit测试阐明。双击这一项;领导应该为每个单位测试类建设新的项。TPTP相当机动,您可以在此屏幕中设置各个选项。譬喻,在Test选项卡上,可以单独阐明单位测试类,也可以凭据项目或软件包对它们举办分组。在Arguments选项卡上,可以指定运行时参数,而在Environment选项卡上可以界说情况变量。在Destination选项卡中,可以指定一个外部文件,用于生存阐明数据以供今后利用。可是,最有用的是Monitor选项卡(拜见图3),可以在上面指定要记录和研究的机能相关数据:

Basic Memory Analysis(根基内存阐明):这个选项用于记录内存利用的统计数据,包罗工具实例的数量和已经利用的全部内存。

Execution Time Analysis(执行时间阐明):这个选项用于记录机能数据——即应用措施别离在每个要领上所花的时间是非。

Method Code Coverage(要领代码包围):这个选项用于通知在测试期间执行了哪些类和要领。

操作Eclipse Callisto阐发应用法子

图3: 在Monitor选项卡上界说要记录数据的范例。

#p#副标题#e#

您可以直接从这个窗口运行阐明东西,也可以利用位于要阐明的测试类上的上下文菜单,要领是选择Profile As菜单项(拜见图4)。

操作Eclipse Callisto阐发应用法子

图4:可以利用上下文菜单运行TPTP阐明东西。

运行阐明东西大概要花上一段时间,这取决于测试用例的巨细。完成之后,Eclipse将显示一个Profiling Monitor视图,可以在个中显示每种范例阐明的功效的具体信息(拜见图5)。

操作Eclipse Callisto阐发应用法子

图5: 阐明功效

Memory Statistics视图显示了应用措施建设的工具的数量。功效可以凭据软件包来组织(以树视图的形式),可能显示为类或实例的一个列表。这些数据可以让您相识每种范例建设了几多个工具;应该对建设的工具(出格是高级工具,譬喻域工具)不正常的高数量持猜疑立场。

用于检测内存泄漏的另一个有用东西是Object References视图。为了得到这些数据,您需要激活引用收集。启动阐明之后,点击monitoring项,然后在上下文菜单中选择Collect Object References(拜见图6)。接下来,通过上下文菜单(Open with -> Object References)打开Object References视图。您将得到一个类的列表,它带有对每个类的引用的次数。这可觉得大概的内存泄漏提供一些线索。

操作Eclipse Callisto阐发应用法子

图6: 激活引用收集

如图7所示,从Execution Statistics视图可以清楚地相识到应用措施执行到了那边。"organization by"软件包可以辅佐您找出执行时间最长的类和要领。点击一个要领将打开Method Invocation Details视图,它将显示有关要领被挪用次数、挪用所在以及它自己挪用了哪些其他要领的更具体信息。尽量与一些可以向下掘客到源代码自己的贸易东西对比,这个视图与源代码视图的集成度没有那么高,可是它照旧可以给出一些重要线索,辅佐您找出执行错误的要领。

操作Eclipse Callisto阐发应用法子

图7: Execution Statistics视图

#p#副标题#e#

Coverage Statistics视图(拜见图8)提供的信息是关于,您方才运行的测试用例利用了(因此至少在某种水平上测试了)哪些要领。包围统计数据是一项优秀的成果,尽量它们提供的信息的具体水平还无法与像Cobertura、Clover和jcoverage这样的专业包围东西相提并论(它们可以提供行精度的包围数据,以及行和分支包围的统计数据)。尽量如此,它也有自身的利益,那就是可以提供及时的包围功效,而今朝,只有贸易的代码包围东西,譬喻Clover和jcoverage,才气提供行级此外包围陈诉和完整的IDE集成。

操作Eclipse Callisto阐发应用法子

图8: Coverage Statistics视图

静态阐明东西

#p#分页标题#e#

在TPTP东西箱中,另一件有趣的东西就是静态阐明东西。Java静态阐明东西,譬喻PMD,答允通过基于一组代码预界说法则和最佳实践查抄来查抄代码,从而自动验证代码质量。此刻,TPTP也包括一个静态阐明东西。除了提供它本身的一组静态阐明法则之外,这个东西还可以提供一个一致的接口,其他东西厂商可以在这个接口中集成他们本身的法则。

要对代码举办静态阐明,需要建设阐明设置。在Java视图或Analysis图标中,利用上下文菜单打开Analysis窗口,它此刻应该呈此刻东西栏上(拜见图9)。阐明设置抉择了要阐明的代码(Scope)和应该遵循的法则(Rules)。有71条法则可供选择,譬喻"Avoid casting primitive types to lower precision"和"Always provide a break at the end of every case statement"。您还可以利用预界说的法则,譬喻"Java Quick Code Review"(在这里,71条法则中只有19条合用)。

操作Eclipse Callisto阐发应用法子

图9:成立静态阐明法则

要阐明代码,利用东西栏中的Analysis图标。阐明不是及时完成的,就像一些其他的雷同东西一样,譬喻Checkstyle。然而,给出的功效很清晰(拜见图10):错误在源代码视图中标出,而且凭据错误范例,以树视图的形式在Analysis Results视图中列出。"Quick Fix"是一项优雅的特性,它呈此刻错误范例的上下文菜单中,并且假如大概,它可以自动为您更正问题。

操作Eclipse Callisto阐发应用法子

图10: 静态代码阐明功效

竣事语

Eclipse测试与机能东西平台是Eclipse IDE东西箱中极具代价的部门。它支持的机能测试的范畴很宽,这有助于从第一个单位测试开始,就确保得到高质量和高机能的代码。

TPTP无疑还比不上一些可用的贸易东西,譬喻OptimizeIt和JProbe,后者的陈诉和阐明成果要越发完善,并且暗示凡是越发简练。然而,贸易的阐明东西往往很是昂贵,并且很难在最严峻的情况中来验证它们的利用环境。尽量TPTP还相对较为不成熟,它仍然可算作一款成果强大的产物,毋庸置疑,它可以提供对付很多项目来说不行或缺的有代价的阐明数据。

    关键字:

在线提交作业