本文主要解決如何在Java 應用程序的服務器端使用IBM Rational PurifyPlus的問題。
簡介
這份白皮書主要解決如何在Java 應用程序的服務器端使用IBM Rational PurifyPlus的問題。
這些說明也許并不能完全滿足每種可能的部署環境――例如一個托管并運行Java server端組件的Java應用服務器。另外,現在市場上也有很多種Java 應用服務器。這份白皮書展示了一種經過驗證的有效方法來使用Rational PurifyPlus測試運行在Apache Jakarta Tomcat Version 4 服務器上的 JSP(Java ServePages)和 Java Servlet應用程序。類似的方法可以應用在商業性的Java 應用服務器上;許多運行在BEA WebLogic(版本5.1、6.0、6.1)和IBM WebSphere( 版本3.5 和 4)的J2EE應用程序都因此得到了"凈化"。
關于 Jakarta Tomcat
Jakarta是一個Sun公司支持的開源項目。它的最終目標是創造一個質量達到了那些商業解決方案要求的免費J2EE服務器端解決方案。Tomcat應用程序是整個項目的主要部分,并且在很多人看來,它幾乎就等同于整個的 Jakarta 項目。Tomcat并不是一個完整的Java 應用服務器,它只是一個 Servlet+JSP 引擎,不過用它來部署和測試 JSP 和 Java Servlet 應用程序是綽綽有余的。它既可以獨立運行,也可以集成在 Apache Web 服務器中運行。之所以選中 Tomcat 是因為它非常健壯、可靠,并可以免費獲取。更多的關于Tomcat和Jakarta項目的信息可在文檔末尾的參考文獻列表中找到,在參考文獻中列出的頁面同時還包括一個到Tomcat安裝程序和源代碼的URL地址。
關于 IBM Rational PurifyPlus
PurifyPlus是一個測試Java應用程序的完整解決方案。它包括三個應用程序:
- Rational Purify -- 一個內存分析工具(收集方法和對象層次的內存分析數據,并指出應用程序的內存熱點所在)
- Rational Quantify -- 一個應用程序執行時間分析工具(收集方法和線層次的分析數據并指出應用程序的性能瓶頸)
- Rational PureCoverage -- 一個代碼覆蓋率分析工具(通過突出未執行的方法和代碼行來收集沒有測試到的部分的數據)
這三種工具不僅對Java,對Visual C/C++,Visual Basic和.Net應用也都提供了全面的支持。在這份白皮書中,Rational PurifyPlus指的是 Rational PurifyPlus 版本2001A。為了利用 Rational PurifyPlus來測試 Java Server端應用程序,您必須先在服務器上安裝它。
關于 Servlets 和 JavaServePages
Servlets是運行在服務器端的 Java 應用程序;它們的主要作用是根據客戶端的需要為Web頁面創建內容?蛻舳送ǔJ且粋 Web 瀏覽器和一個用戶用來輸入數據的網頁,這些數據將由運行在服務器端的Servlet處理。而 Servlet 處理的結果則將顯示在客戶端的網頁上。
JavaServerPage(JSP) 基本上是一些 HTML 頁面,它們帶有一些特殊的標簽可以用來將 Java代碼包含進來或者訪問服務器端運行的 Java beans 和servlet。Rational PurifyPlus并不能檢查HTML語法,但它卻可以通過監控從JVM(JAVA 虛擬機)上收集到的事件來測試JSP中包含的Java部分。
準備利用Rational PurifyPlus進行測試的Java servlets和JavaServer Pages
PurifyPlus提供了兩種基本的數據收集級別: 方法級和行級。如果使用方法級來測試Java應用程序,您就不需要重編譯測試的Java程序來獲得所有和那些方法相關的數據。如果您對行級的信息感興趣,那您就得用Symbolic調試信息來重編譯Java代碼。在Sun的Java編譯器中用來得到Java類文件中的Symbols的開關是 '-g'。
|
所有在兼容Sun Java2的虛擬機上運行的Java應用程序信息都可以通過JVMPI(Java Vitrul Machine Profiling Interface )收集。注意必須使用與Sun Java2 要求完全兼容的JAVA 虛擬機。Rational PurifyPlus 同時也完全支持 Microsoft Java 虛擬機。
在編譯 servlet 時您需要在 CLASSPATH 中包含 servlet 庫"servlet.jar"。整個庫文件是隨 Tomcat 一起安裝的,可以在目錄
|
準備 Windows 環境以便利用 Rational PurifyPlus 測試 JSP 和 Java Servlets
環境變量:
JAVA_HOME
指明了默認 JVM 的 home 目錄。它也是使用 Rational PurifyPlus 的JVM的默認選擇。為了正確安裝 Java 使得 PurifyPlus 可以運行,您必須在一個新的Java服務創建之后第一次profiling之前執行下面的命令行:
|
這個命令會更新選中的Java實時環境(JRE:Java Runtime Enviroment)的Java Policy文件,F在來看另一個環境變量:
|
Rational PurifyPlus 通過 Java 虛擬機假脫機接口(JVMPI)來收集所有關于Java應用程序的信息。因為JVM和Rational PurifyPlus是作為兩個不同的進程運行的,Java進程需要載入一個名為PureJVMPI的PurifyPlus共享文件來偵聽 JVM 事件,通過 JVMPI 收集運行數據。這個動態連接庫是通過一個運行Java可執行文件時的附加選項:'-Xrun'來加載的。這里有一個關于PurifyPlus如何從命令行啟動的例子:
|
為了分析服務器端Java應用程序和服務,您需要手動創建一個特殊的包括"-Xrun"選項的系統參數,從而在每一次使用JAVA虛擬機時自動運行選中的PurifyPlus工具。對Sun JVM,整個變量的名稱是_JAVA_OPTIONS,它的值應該是:
|
如果您使用的的是IBM JVM(在運行IBM WebSphere Java應用服務器時必須選擇該JVM),那么整個環境變量的名字應該是 IBM_JAVA_OPTIONS.
在_JAVA_OPTIONS環境變量中設置的上述選項會使Tomcat應用程序運行時啟動Rational Purify(或者Quantify和PureCoverage),而Purify(或者Quantify和PureCoverage)則會自動的開始收集該Java進程的數據。您可以使它的報告不包含與測試的JSPs和Servlets無關的數據,具體方式是通過預濾器(pre-filter)或PurifyPlus的過濾管理器來實現的。
準備Java 應用服務器環境來運行Rational PurifyPlus
為了使PurifyPlus和Java應用服務器一起運行,必須為服務器和PurifyPlus工具指定相同的JAVA_HOME 參數。對Apache Tomcat,您可以直接執行下列命令:
|
如果是BEA WebLogic 服務器或者IBM WebSphere,可以修改您用來安裝環境的批處理文件,只要根據如上所示改變參數JAVA_HOME的值就可以了。
準備PurifyPlus來收集在Apache Tomcat上運行的Java應用程序信息
為了使PurifyPlus可以收集在Apache Tomcat上運行的Java servlet或者JSP信息,您必須在開始測試之前創建一個自定義的預濾器(pre_filter)。
PurifyPlus過濾器。在PurifyPlus中有兩種途徑來過濾與測試無關的數據。第一種方法是為您要使用的工具(Rational PrufifyPlus、Quantify或PureCoverage)設定一個預濾器。
過濾器是一個列表,它包含了那些無需從中獲取數據的Java包的名字。整個列表在Profile.ini文件的[Prefilter]節定義,您可以在PurifyPlus工具的主目錄下找到該文件。
列表上的每個Java包都必須位于新行。請看一個演示預過濾在PurifyPlus中如何工作的例子:
圖1: 一個Rational PurifyPlus 的 Profile.ini文件
假設我們想要過濾Java包com.sun 。如果我們將 "com.sun."(請注意這里字符串末尾的點號)作為一行放到Profile.ini的pre-filetering部分,那么這個文件和它的所有子包都將在PruifyPlus進行數據收集時被排除在外(請看圖1)。如果要預過濾單個的類,您可以使用該類的全名(不需要結束的點號)。例如,com.rational.MyClass將預過濾com.rational包中的MyClass。如果您僅僅指明了類文件(e.g.MyClass),那么所有的包中的這個類都將被過濾掉。PurifyPlus不能過濾一個類的單個方法。
文章來源于領測軟件測試網 http://www.kjueaiud.com/