2010-11-23 66 views
3

我們的團隊正計劃對遺留代碼庫中的一些模塊進行重新考慮。它是用java編寫的一個Web應用程序。它根本沒有單元測試。重構遺留代碼的質量保證

我要求開發人員在重構因子之前爲現有功能編寫一個junit,但我相信這不會很廣泛。

我可以採取哪些其他措施(blackbox/whitebox/processes)來確保重新分解不會干擾任何現有功能。

目前的系統非常穩定,已經運行了8年以上。

感謝 灰色

回答

0

比寫作更junits其他,你總是可以record test scripts with JMeter. 包括斷言,以確保你得到你所期望的結果。

+0

嘿,這是一個好主意。但項目已經轉移了很多,我不能投資於當前版本。不過,我可以在未來的重構計劃中使用這種方法。謝謝。 – 2010-12-18 14:59:13

1

您可能會遇到兩個問題:代碼不是現代意義上的單元測試代碼,並且代碼中存在尚未被捕獲的錯誤。面對這種情況,我強烈建議您儘可能多地使用黑白盒測試。我明白,這是一個痛苦的過程,但有一種方法可以緩解它。

您的工程師可以分解出幾個接口,以便您可以創建一些集成測試。也就是說,如果他們正在進行重構,他們是否可以鞏固一些共同的領域,並將應用程序劃分爲更小的塊,這將在開發週期中使可預見的未來基本保持靜態?這將允許你至少有一些更大的手段來執行更多的測試。它也可以讓你,qa的人,對現有的代碼進行干預,以達到預期的效果。

+0

你說得對。大部分代碼不是單元可測試的。一些重構主要是刪除未使用的變量和方法,並將重複的代碼放入常見的方法中。我們通過工具確定方法和變量真的沒有被使用。是的,在單元測試不可能的情況下用黑盒測試來覆蓋 – 2010-12-18 14:54:21

+0

@Jenga Blocks要小心。有時遺留的代碼往往會在錯誤的地方出現「bug修復」。邏輯可以在與另一個地方的錯誤邏輯直接相關的地方找到。通過修復這個錯誤,你可能會在另一個錯誤中引入錯誤。 – wheaties 2010-12-18 14:57:15

2

在開始之前請先閱讀Michael Feathers的Working Effectively with Legacy Code

目前狀態下的代碼很可能無法進行有效的單元測試(因爲它可能不是單位)。我所看到的工作很好的是集成級別的測試,只需運行一些合理的輸入並記錄輸出; Web應用程序使這特別合適。寫下這些,然後萌發一些小方法和類 - 單元測試新的東西 - 同時保持這些高級測試的正常工作。從一開始就比開發TDD更重要,但它絕對是可行的。