在軟體開發生命週期中,編寫代碼只是第一步。為了交付高品質的產品,開發人員必須進行測試、分析效能瓶頸、監控資源使用並偵測潛在問題。Eclipse Test and Performance Tools Platform (TPTP) 正是為了解決這些需求而生的開源工具平台,它將測試、分析與監控功能整合到 Eclipse IDE 中,提供統一且可擴展的開發體驗。
Eclipse TPTP 是 Eclipse 基金會的頂級專案,目標是建立一個通用、可擴展、基於標準的工具平台,讓開發人員能創建專用且可互操作的測試與效能工具。簡單來說,TPTP 是一套用於自動化軟體品質控制的工具箱。
傳統上,測試工具、分析器和監視器通常由不同廠商提供,開發人員需花費大量時間學習不同介面與技術。TPTP 解決了這個問題:它是開源的、可擴展的,並深度整合到 Eclipse 開發環境中,大幅降低學習成本與投資門檻。
TPTP 當前版本包含核心平台與三大核心衍生工具:
提供 UI 開發框架、資料收集機制、基於規則的資料查詢與應用程式控制的基礎代碼。包含可重用的向導、程式介面與守護進程,支援從本地或遠端執行中的進程收集資料。
建立在核心平台之上,提供自動化測試服務:
負責收集、分析與圖形化顯示來自日誌檔案或應用程式收集的統計資料。
擴展核心平台,收集與分析執行中應用程式的資源使用數據(CPU、記憶體)。支援與執行中進程互動,例如手動觸發垃圾回收並檢查剩餘物件池,以找出並修復記憶體洩漏。
關鍵守護進程,作為 Eclipse 工作台與被測試應用程式的「聯絡人」。代表 Eclipse 啟動本地或遠端 Java 應用程式,並轉發應用程式度量指標(含日誌檔案)給 Eclipse。
硬體需求: 至少 300 MB 可用磁碟空間,建議 64 MB 以上可用實體記憶體。
軟體清單:
% cd ~
% mkdir ~/java
% cd ~/java
% mv ~/j2sdk-1_4_2_10-linux-i586.bin .
% mv ~/j2re-1_4_2_10-linux-i586.bin .
% chmod +x j2sdk-1_4_2_10-linux-i586.bin j2re-1_4_2_10-linux-i586.bin
% ./j2sdk-1_4_2_10-linux-i586.bin
% ./j2re-1_4_2_10-linux-i586.bin
% ls -F
j2re1.4.2_10/ j2sdk1.4.2_10/
% cd ~/java
% mv ~/eclipse-SDK-3.1.1-linux-gtk.tar.gz .
% tar zxvf eclipse-SDK-3.1.1-linux-gtk.tar.gz
驗證安裝:
% export JAVA_DIR=$HOME/java
% export JAVA_HOME=$JAVA_DIR/j2sdk1.4.2_08/sdk
% export PATH=$JAVA_HOME/bin
% export CLASSPATH=$JAVA_HOME
% cd $JAVA_DIR
% java -jar eclipse/startup.jar
% cd $JAVA_DIR
% mv ~/emf-sdo-SDK-2.1.0.zip .
% unzip emf-sdo-SDK-2.1.0.zip
% cd $JAVA_DIR
% mv ~/xsd-SDK-2.1.0.zip .
% unzip xsd-SDK-2.1.0.zip
% cd $JAVA_DIR
% mv ~/uml2-1.1.1.zip .
% unzip uml2-1.1.1.zip
% cd $JAVA_DIR
% mv ~/tptp.runtime-TPTP-4.1.0.zip .
% unzip tptp.runtime-TPTP-4.1.0.zip
% mkdir $JAVA_DIR/tptpd
% cd $JAVA_DIR/tptpd
% mv ~/tptpdc.linux_ia32-TPTP-4.1.0.zip .
% unzip tptpdc.linux_ia32-TPTP-4.1.0.zip
若遇到符號連結錯誤,需手動修復:
% cd $JAVA_DIR/tptpd/lib
% rm libxerces-c.so libxerces-c.so.24
% ln -s libxerces-c.so.24.0 libxerces-c.so
% ln -s libxerces-c.so.24.0 libxerces-c.so.24
% export LD_LIBRARY_PATH=$JAVA_DIR/tptpd/lib:$LD_LIBRARY_PATH
% chmod +x $JAVA_DIR/tptpd/{bin,lib}/*
% export PATH=$JAVA_DIR/tptpd/bin:$PATH
% cd $JAVA_DIR/tptpd/bin
% ./SetConfig.sh # 接受預設值
% ./RAStart.sh # 啟動測試
% ./RAStop.sh # 停止測試
重新啟動 Eclipse,工具列應出現 TPTP Profile 按鈕,表示安裝成功。

一個模擬製造太空船玩具的 Java 程式,包含艙體、推進器、三級火箭與兩隻猴子等物件。使用者可輸入 0-8 建構/發射玩具,輸入 9 模擬記憶體洩漏 (建立未被引用物件),輸入 q 退出。
cd $JAVA_DIR/tptpd/bin && ./RAStart.sh點擊 Memory Statistics 視圖,展開 example 套件相關行項。可觀察到 4 個物件實例:3 個已建構玩具 + 1 個未被引用玩具 (記憶體洩漏模擬)。

關鍵欄位說明:
切換回控制台視圖,再次按 0、1、2 發射玩具。點擊 Monitoring 視圖中的垃圾桶圖示強制執行垃圾回收。隨時可點擊 Refresh 按鈕更新所有視圖。

點擊 Window > Show View > Other... 展開 Profiling and Logging 可見所有視圖:

在 Execution Statistics 視圖右鍵選擇 Filter out... > Profiling,輸入過濾器名稱與字串 (如方法名 build),即可快速過濾特定方法統計。

在 Execution Statistics 視圖雙擊類別 (如 SpaceShipToy$Booster),即可直接跳轉至 Java 透視圖的對應原始碼定義。這是記憶體分析視圖與程式碼編輯器連結的寶貴特性。
使用 Edit Filter 視窗的 Advanced 選項卡,可建立任意複雜的規則組合 (屬性、條件、值),例如查詢特定實例的記憶體消耗量。
大多數資料視圖支援依套件、類別、方法三種方式組織資料 (工具列三個按鈕),點擊欄位標題可升序/降序排序。

TPTP 提供 UML2 序列圖,不僅顯示類別與方法的呼叫序列,更能高亮顯示熱點 (消耗大量執行時間的程式碼區段)。

將滑鼠懸停於左側空白處的紅色條上,會顯示 CPU 時間消耗刻度條。深紅色代表最大消耗。範例中 SpaceShipToy 建構過程明顯為瓶頸。

Object References 視圖顯示應用程式中每種物件的引用數量,有助於定位記憶體異常增長的程式碼。

展開 SpaceShipToy 可見引用關係:3 個玩具各包含 1 推進器、1 艙體 (2 猴子)、3 火箭階段,符合預期。

除了分析從 Eclipse 啟動的應用程式,TPTP 還能附著到本機已執行的 Java 進程 (遠端進程同理)。
java -XrunpiAgent:server=enabled example/SpaceShipToy

本教學示範如何透過 Eclipse TPTP 分析 Java 程式碼、找出記憶體洩漏與效能瓶頸。TPTP 不僅提供分析工具,還包含記錄/回放設施 (測試 GUI)、XRay 分析器 (專門分析 Eclipse 平台應用程式) 等進階功能。善用這些工具,能顯著提升軟體品質與開發效率。