2010-08-06 110 views
4

我們有一個開始變大的項目,我們需要在開始重構時開始應用單元測試。將單元測試應用於已存在的項目的最佳方式是什麼?我(從某種程度上)習慣於從頭開始做,在那裏我將測試與第一行代碼一起編寫。當功能已經到位時,我不確定如何啓動。我應該開始爲存儲庫中的每種方法編寫測試嗎?還是應該從控制器開始下來?如何在大型項目中進行單元測試

更新: 澄清該項目的規模。我真的不知道該怎麼形容這只是說有8個控制器和大約167文件有一個.cs文件,全部完成了大約7個開發人員月份。

+0

你說的有多大,我認爲是相關的? – 2010-08-06 18:48:51

+0

10個開發人員月的開發..在平庸的開發級別(如果有意義的話) – DaveDev 2010-08-06 18:51:00

+0

有多少個類,頁面? – 2010-08-06 18:55:51

回答

5

正如您似乎意識到的那樣,將測試加裝到現有項目中並不容易。你走的時候編寫測試的方法是更好的方法。你的問題是過程和技術之一 - 每個人都必須要求測試,否則沒有人會使用它們。

我聽說並且同意的建議是,你不應該試圖一次性在現有的代碼庫中包裝測試。你永遠不會完成。通過在您的bug修復過程中進行測試開始 - 每個修復的bug都會得到測試。隨着時間的推移,這將開始對現有代碼進行測試。當然,新代碼必須總是有測試。最終,您會將覆蓋範圍提高到合理的百分比,但這需要時間。

我推薦給我的一本好書是Michael C. Feathers的Working Effectively With Legacy Code。標題並沒有真正展示它,但是對現有代碼庫進行測試是本書的一個主要主題。

+0

這實際上是本書的基礎,因爲他對遺產代碼的定義是無代碼的代碼。 – 2010-08-06 18:55:56

+0

+1,我剛讀完它,它是一本很棒的書! (哦,+1是爲了很好的總結)。 – 2010-08-06 19:20:09

4

有很多方法可以在現有的代碼庫中進行測試。單元測試並不一定是最有效的開始。如果您編寫的代碼量很大,那麼您可能需要考慮功能和集成測試,然後再進行單元測試。這些更高級別的測試將幫助您確保您的產品在您進行更改以改進結構和改進單元測試時繼續工作。

我非常推薦非測試優先組織使用的一種做法是:在原始代碼部分的作者以外的其他人員爲該部分編寫單元測試。這可以讓您獲得一定程度的交叉培訓和完整性檢查,並且還有助於確保您不會保留會對代碼整體造成損害的假設。

除此之外,我將第二個建議邁克爾羽毛的書。