2013-02-11 90 views
1

這裏是我的情況:如何測試Java DBMS應用程序的性能

我有一個Java應用程序從數據庫D1的表T1讀取數據,處理它,並把它在另一個數據庫D2的另一個表T2。這是實時發生的,即當在表T1中插入或更新記錄時,應用程序將挑選數據,處理數據並將其推送到目標表。我希望使用測試(最好是JUnit)和/或性能框架來監視此應用程序的性能。在我的測試案例中,我希望具有以下內容

  • 在數據庫D1的表T1中以固定時間間隔插入並更新固定時間的固定數量的記錄。
  • 經過一段固定的時間後,請檢查數據庫D2中T2中存在的記錄數,或查找是否存在特定記錄。

,我希望創建的測試應該

  • 數據庫無關
  • 提供的結果可以顯示出趨勢,並配置有像詹金斯
  • 一個CI工具

所以,我的問題是,測試這種場景的最佳方式是什麼?有沒有可以幫助我實現這一目標的工具?

+0

這不是一個實時的應用程序,除非它運行於Java的實時版本,實時操作系統上運行。不要濫用標準的CS術語。 – EJP 2013-02-11 08:44:04

+0

@EJP:我不太清楚你的意思,但我的印象是實時應用程序是受時間限制的應用程序。數據必須實時從一個數據庫移動到另一個數據庫。我的假設錯了嗎? – 2013-02-11 09:08:37

+0

@ShivaKumar,你是否保證在嚴格的時間限制內做出迴應?您認爲可以在任何解決方案的頂部構建實時系統嗎? – 2013-02-17 22:48:32

回答

1

數據庫無關

爲了實現這一目標,我建議要儘可能簡單的SQL和一些低級別的JDBC抽象層使用方法:

DBUtils

下議院DbUtils庫一小組旨在使 更易於使用JDBC的類。 JDBC資源清理代碼是平凡的,錯誤 容易的工作,所以這些類抽象出來的所有清理任務 你的代碼離開你真正想用JDBC在 第一個地方:查詢和更新數據。

MyBatis

MyBatis的是自定義 SQL,存儲過程和高級映射支持一流的持久性框架。 MyBatis幾乎消除了所有的JDBC代碼和手動設置參數 檢索結果。 MyBatis可以使用簡單的XML或註釋來配置和映射基元,Map接口和Java POJO(Plain Old Old Java Objects)到數據庫記錄。

兩者都會爲你做詭計。通過對細節的高度重視,您可以設法提供足夠靈活的解決方案,並根據需要測試任意數量的數據庫。

提供的結果可以顯示出趨勢,並配置了CI工具,如詹金斯

定義幾個KPIs,並確保您可以定期獲得的所有值。例如,您可以測量吞吐量(每秒記錄)。定期導出數據(CSV或例如性能),並使用PlotPlugin可視化:

enter image description here

您還可以查看相關的問題:How do I plot benchmark data in a Jenkins matrix project

正確的測試

請確保您的測試策略是明確的,你不會錯過任何東西:

  1. Load testing
  2. Stress testing