2013-01-09 38 views
0

我正在開發一個財務信息Web應用程序的團隊。我們還沒有爲它編寫許多自動化測試,因此我們決定將回歸測試添加到我們程序的最關鍵部分。儘管我對自動化測試非常陌生,但我不完全確定應該如何編寫測試。如何開發計算引擎的迴歸測試

這篇文章很長,所以這裏的文藝青年最愛的問題:我如何可以編寫一個迴歸測試檢查,看看如果某些計算工作?雖然我不想測試計算,但我也想知道計算所依賴的任何組件是否會使其輸入中斷。我不需要知道哪個組件突然崩潰,只是有些東西不起作用。我應該使用什麼方法?

這是我們的情況:我們採用分層架構開發的應用程序,如:

Views 
    | 
    V 
Logic Managers <--> Financial Calculation Engines 
    | 
    V 
Data Accessors 
    | 
    V 
Database 

我們已經確定計算引擎是我們的計劃,大多數需要有一個迴歸測試的部分套房。這些組件包含我們用於將原始財務數據處理爲有用結果的計算和算法。他們相應的經理通過調用他們的公開方法來使用他們,這些方法接受原始財務數據作爲參數當引擎方法返回時,它們發送一個包含已處理財務結果的對象。同時,管理人員從數據訪問者那裏獲取原始財務數據,然後從數據庫中獲取數據。

我們決定,我們想盡快成爲金融計算「休息」,以便我們知道bug是在哪個節目的片已經因爲測試的最後一次運行感動的地方。這將讓我們使用持續測試來保護我們避免引擎產生錯誤的結果並且不知道在哪裏尋找。

當我們思考這意味着什麼,我們意識到,加入一個單元測試到每個引擎是不夠的。比方說,例如,對數據訪問者的錯誤更改意味着他們開始提取錯誤的數據。這些數據會通過管理員發送到引擎,這會產生錯誤的結果。但是,引擎的算法本身仍然可以正常工作,所以單元測試仍然會通過。這意味着當我們發現錯誤的數字被生成時,我們無法知道錯誤何時被引入,這使得追蹤和修復更加困難。

相反,我們希望進行迴歸測試,只要在任何可能導致引擎輸出的最終結果不正確的錯誤出現的地方立即就能啓動迴歸測試,即使問題是發送了錯誤的數據而不是發動機本身有問題。當這些測試失敗時,他們不會告訴我們問題出在哪裏,但是如果我們正在不斷測試,只要檢查到一個錯誤並且有一小組更改來查找來修復它,我們就會知道。

這就是我們想要做的。不幸的是,我們不知道如何創建這些測試。什麼方法或模式對編寫這些類型的迴歸測試有用?

回答

1

只是一個提示:你應該相同的輸入每次時間檢查財務計算引擎的每一個部分,並且返回的對象應該是每次相同。 單獨測試數據訪問器,具有相同的邏輯:相同的輸入,相同的輸出。
要做到這一點,你需要mock系統的某些部分(如嘲笑數據存取總是返回相同的一組數據)。

每個部分都有單獨的單元測試,可以更精確地定位錯誤。

的幾個環節進入的想法:
http://www.ibm.com/developerworks/library/j-mocktest/index.html
http://www.slideshare.net/joewilson123/unit-testing-and-mocking

有很多圍繞着嘲諷框架可以幫助你編寫測試,如Mockito的Java項目。