2009-05-25 53 views
1

我正在開發一個Java Web應用程序,它爲用戶運行一系列財務計算。在進行財務計算時,大約30個不同的輸入用於計算最多18年的15個不同值(最多15 * 18個預期值)。如你所知,有大量的信息需要計算和驗證。測試複雜的數據方案

我在找的是關於如何準備測試數據(模擬30個不同的輸入)的建議,將它加載到一系列對象中,並通過計算器運行對象以生成輸出,然後可以將其與預期值。

我試圖存根數據庫,但這最終以永遠。嘲笑一切似乎將會同樣乏味。如果可能,我想避免外部數據庫依賴關係。

+0

這個難題的另一部分是對象圖從根對象開始運行幾層。 所有的數據場景和輸出都是由專家預先定義的,所以我們目前不會動態生成任何信息。 – rynmrtn 2009-05-25 04:39:13

回答

0

如果您在Db中有數據,並且您只是想創建一個測試數據,以便您的測試運行不依賴於外部數據庫。您可以查看DbUnit框架,並可以使用XML填充示例數據D B。 這些XML可以用於測試目的,這些XML可以通過可用的解析器數量輕鬆地轉換成java對象。

+0

您是否使用過DBUnit,並且可以提供具有良好示例代碼的任何教程? – rynmrtn 2009-05-25 04:40:04

0

最好的辦法是使用一個工廠,可以從一個池中隨機選擇一個值,然後從這些工廠組合輸入。您可以根據您的需要從人羣中生成儘可能多的候選人。堅持他們與預期的結果。如果一個數據庫不符合你的喜好,也許XML或純文本序列化就可以。

如果你做TDD,你可以運行一些,看看預期的結果應該是什麼。檢查一些手工計算,以確保它們沒問題。然後使用工廠生成您需要的大型測試集。

1

聽起來像FitNesse(http://fitnesse.org/)可能是你在找什麼。您將在FitNesse中設置一個html表格,其中包含您的輸入和您的預期輸出。當您運行測試時,FitNesse會讓您知道實際輸出是否與您的預期輸出相符。

+0

如果我今天再次解決這個問題,這是我首先嚐試和使用的。 – rynmrtn 2012-03-11 23:53:25

1

我會識別數字限制(邊界值)周圍的值,每個輸入參數的實際值和零值。然後,我將它們全部使用allpairs算法(http://www.satisfice.com/tools.shtml)進行組合。