自定義取樣器
許多測試人員遲早會面臨下面這個問題:假如必須要創建測試計劃,而JMeter沒有提供必需的取樣器或監聽器。例如,用戶需要測試Enterprise JavaBeans應用程序。用戶仍然可以使用JMeter的Java Request,它實質上是Java類,可以向其添加需要的任何邏輯。我們創建一個樣本Java取樣器,它將向應用程序服務器發送請求并調用會話bean。首先,我們創建package mytest和稱為JBTest.javaJava的Java類:
為了使用該代碼,要對它進行編譯以創建jar文件myEJBTest.jar,將jar復制到JMeter classpath(如lib目錄),或者將classpath位置添加到jmeter.properties 文件——其形式為:
重新啟動JMeter,向測試計劃添加Java Request元件,并從下拉菜單中選擇mytest.EJBTest。缺省情況下,JMeter提供的是“SleepTest”和“JavaTest”。現在,我們可以向測試計劃添加線程組、循環和監聽器并運行測試計劃。
測試數據庫
Jmeter所支持的另一個功能是評價數據庫服務器的性能。用戶可以使用軟件提供的JDBC Request元件,也可以使用腳本或Java類來創建自己的測試。例如,使用一些與前面類似的示例可以測試存儲過程的調用。許多數據庫優化技術都可以使用,包括使用特定供應商優化(如查詢的并行處理),使用聯結或索引。此外,當用多個boolean評價創建查詢時,數據組織知識很有用。在處理大量數據時,應用程序中的數據庫和查詢優化是特別關鍵的,JMeter是一個可以在這類評價中提供某些評測的工具。例如,可以在數據或查詢優化前后執行性能或負載測試并對結果進行比較。
我們通過創建MySQL實例的測試計劃來演示樣本數據庫性能測量計劃是如何工作的。首先,從MySQL網站下載JDBC驅動程序,并復制到/lib目錄以便JMeter可以訪問數據庫。現在啟動JMeter,創建線程組,并設置循環數和相應的線程數。添加JDBC Connection Configuration、JDBC Query Defaults和JDBC Request元件。在這些對話框中,我們需要配置數據庫連接和查詢。輸入數據庫URL值,它們的形式類似于:jdbc:mysql://hostname/databaseName,然后為JDBC Driver Class輸入com.mysql.jdbc.Driver。針對這個試驗,我們創建了數據庫customers,它帶有包含下列三個字段的customer表格:名稱、地址和帳戶。在Query框中鍵入查詢,例如,從客戶中選擇名稱。
為了使結果可視化,可以添加帶有響應時間的圖表,或者,如果要檢驗響應是否匹配特定模式,可以添加響應斷言。例如,在Response Assertion中添加文本模式“Smith”。在Assertion Result窗口將顯示如“Test failed, text expected to contain /Smith/”之類的錯誤,或者,如果由于設置錯誤而沒有連接,則顯示“Response was null”。如果測試成功,將不返回任何內容。除了圖表和斷言監聽器,我們還可以使用Aggregate Report,它以表格的形式顯示樣本數、平均值、中間值和吞吐量的摘要。
結束語
JMeter是一個十分靈活的工具,它不僅能夠測試HTTP服務器,而且還能夠對Web services進行負載測試。有經驗的開發人員可以編寫自己的腳本來模擬或自定義客戶端請求,或者為測試結果添加自定義的可視化效果。Web Services和SOAP取樣器是JMeter的新功能,希望它們能夠隨著Web services而發展,在行業和開發人員中獲得更廣泛的認可。
使用JMeter現有的功能和它所提供的用戶界面,可以模擬5個并發線程,以10和5 ms延遲點擊服務器。本教程說明了該工具能夠用于對Web services的響應時間進行測量的原理。例如,利用JMeter腳本,可以查找客戶端的身份認證和授權。所測試的應用程序服務器和JMeter客戶端都本地安裝在同一個工作站,然而同樣的設置也可以用于測試遠程服務器。
所得到的結果和圖表還不能提供有價值的性能報告;它們只能說明WebLogic Server對Web Services請求響應時間的簡單分布。要了解是否實現了優化,應當在優化前后針對兩個不同的服務器,或針對客戶端線程變量數的不同負載來運行相同的負載測試。換句話說,只有比較的結果才具有實用價值,它能夠幫助了解服務器性能,進而基于這些評測做出判斷。
參考資料
查看Jakarta Apache JMeter —— 二進制發行版下載和指南。
在Dev2Dev中的產品中心訪問 WebLogic Server (中文版)。
有關創建Web services的詳細信息,請閱讀 Programming Web Services for WebLogic Server 指南(產品文檔)。
Matt Maccaux撰寫的 Approaches to Performance Testing (中文版,Dev2Dev,2005年12月)對測試作了全面介紹。