技术开发 频道

RPP测试J2EE应用程序

演示应用程序

    这篇文档用到的Demo程序是一个叫做"Duke's BookStore"的网上书店。这个Web应用程序可以在Sun的网站上下载。它原本是作为一个创建和运行Java servlet的指南的一部分而开发的。它包括一系列的Web页面以及为这些页面创建内容的servlet。Rational PurifyPlus可以用来测试这整个的Web应用程序或者它的一部分(比如说单个的servlet)。

    在Rational PurifyPlus中对Java Serlets和JavaServerPages进行运行测试

    在编译了Java组件并为工具设定了必要的过滤器之后,您可以开始从Java servlet和JSP中收集行层次的分析和代码覆盖信息了。

    对于第一步,我建议使用Rational PurifyPlus并收集执行时间分析数据。

    用Ratioanl Quantify 分析应用程序执行时间

    将值"_XrenPureJVMPI: Quantify"赋给环境变量_JAVA_OPTIONS会在Tomcat服务器启动时激活Quantify。当你浏览演示程序时,Quantify会自动记录执行Web页上触发的方法和代码行所花费的时间。在Tomcat初始化并启动之后,可以在浏览器中输入如下的网址来访问演示程序:

    http://localhost:8080/bookstore/bookstore.html

    在测试结束之后,关闭浏览器并停止Tomcat服务器应用程序。分析的结果可以在Quantify中以几种不同的视图显示。第一种是CallGraph视图,如图3所示:

    图3. Rational Quantify一个Web应用程序的CallGraph视图

    CallGraph视图高亮显示了执行时消耗时间最多的调用链。粗体线条突出了应用程序中最慢的部分并表示了执行高亮显示的方法时所耗费的时间在总运行时间中的百分比。

    行层次的信息在所选方法的注释源视图(Annotated Source View)中包含,如图4所示:

    图4: Rational Quantify 中Web应用程序中一个方法的注释源视图

    更进一步的信息可以通过Quantify创建的其他视图得到,包括图5所示的函数细节视图(Function Detail view)。

    图5. Web应用程序中一个方法的 Rational Quantify 函数细节视图

    Quantify相对于其他一些传统的解决方案的优势在于它表达分析性数据的方式。Quantify可以使您直接发现所测试应用程序的性能瓶颈的关键所在。

    使用Rational PureCoverage进行代码覆盖

    如果我们将_JAVA_OPTIONS环境变量改为"-XrunPrueJVMPI:Coverage"并重复对样例Web应用程序的运行测试,PureCoverage就会记录那些测试到的方法和代码行,并高亮显示那些没有被测试到的部分。

    如图6A和图6B所示,PureCoverage提供了关于所测试的Java servlets应用程序的method和line两种级别的信息。

    图6A. Rational PureCoverage 对一个测试Web应用程序的方法覆盖

    在方法级覆盖中,PureCoverage根据该方法所在的模块或定义它的源文件来分类并提供被测试的应用程序的方法的相关统计数据。

    关于被测试的应用程序的代码行的信息显示在加注的源代码中;不同的颜色分别表示代码选中,丢失,废弃或部分选中。

    图6B. 测试的Web应用程序的一个servlet方法的 Rational PureCoverage line 级覆盖

    这类信息在设定运行时间测试的步骤或创建自动测试的脚本文件时非常有用。PureCoverage 同时也允许您合并对同一个应用程序历次测试的覆盖数据,从而提供对应用程序所实施的测试的质量的一个清晰的概观。

    利用Rational Purify进行内存分析

    使用Rational Purify来获取对所测试的Web应用程序的内存分析大体上类似于使用PureCoverage和Quantify。对运行中的应用程序进行内存使用情况的"快照"可以让您在运行的不同阶段对内存状态进行比较。这是检测内存泄漏的一个很有用的方法。

    服务器应用程序(常常是全天候运行)的内存泄漏能很容易的使应用程序和系统同时崩溃,因为在运行过程中它会不断地消耗越来越多的内存。内存泄漏对应用程序性能的影响也是巨大的。通过Rational Purify记录的Java应用程序的内存状态可以使您更深入地分析内存的使用状况。

    Purify在对Java Servlet和JSP进行测试时提供的报告类型和它在测试Java 应用程序与Java applets时是一样的。图7显示了一个Purify记录一个接受测试的JSP如何调用JavaBean 方法。

    图7: Demo JSP的 Rational Purify Call Graph

    如图8中所示,在方法列表中提供了更多有关JSP 会话的内存使用信息。

    图8. JSP的 Rational Purify 函数列表

    与Rational Purify引导用户发现应用程序中消耗最多执行时间的部分类似,Purify向用户指出了应用程序的内存瓶颈所在。通过对函数列表视图中的方法进行排序可以很容易找到那些消耗了过多内存的方法;Purify同时还提供了很多其他视图来帮助您做到这一点。

    用最少的投入获得最大的产出

    在服务器机器上部署Rational Quantfify来获得 Java 服务器侧应用程序的广泛分析和代码覆盖率的数据是非常轻松的。您不但可以将Rational PurifyPlus应用在商业性的Java server应用程序上,同时也可以在轻量级的免费Java Servlets和JSP引擎(比如Apache Tomcat)上使用它。
 

0
相关文章