2010-03-17 73 views
7

我正在開發一個項目,我們的單元測試只有13%的代碼覆蓋率。我想提出一個改善這個計劃的計劃,但首先要關注覆蓋範圍越來越大的領域。 這個項目是用C#編寫的,我們使用的是VS 2008和TFS 2008,單元測試是使用MSTest編寫的。確定哪些類將從單元測試中受益最多?

我應該用什麼方法來確定我們應該首先處理哪些類? 我應該關注哪些指標(代碼或用法)(如果這些指標不明顯,我如何得到這些指標)?

+0

+1我正在苦苦掙扎,完全一樣。 – bitbonk 2010-03-17 21:06:27

+0

很難準確回答,但應用核心領域應該有單元測試。 – 2010-03-17 21:09:29

回答

2

一些好的統計數據和一定的方法確定查詢你肯定可以看看NDepend的:http://www.ndepend.com/

NDepend的公開查詢語言稱爲CQL(代碼查詢語言),允許您針對您的代碼編寫與特定統計信息和靜態分析相關的查詢。

沒有真正的方法來確定哪些類可能會受益最多,但是通過在CQL中設置自己的閾值,您可以建立一些規則和約定。

+0

+1,NDepend看起來很酷! – 2010-03-17 21:20:59

4

我建議在所有觸摸的類中添加單元測試,而不是改造現有的類。

單元測試的大多數優點是幫助程序員編寫代碼並確保「修復」不會真正破壞任何東西,如果您不是將代碼添加到並非每次修改的新代碼段,的單元測試開始下降。

如果你沒有什麼更好的辦法,你可能還想爲你依賴的類添加單元測試。

您絕對應該爲添加的新功能添加測試,但是您應該也可以將測試添加到可能會中斷的現有功能。

如果你正在做一個大的重構,首先考慮在該部分獲得80-100%的覆蓋率。

2

單元測試的最大價值在於維護,以確保代碼在更改後仍然有效。

因此,專注於最有可能/最頻繁變化的方法/類。

接下來的重要性是具有不明顯的邏輯的類/方法。單元測試會使他們不那麼脆弱,同時作爲額外的「文檔」爲自己承包的API

+0

你知道一種方法來確定哪些類最經常變化嗎?不確定我是否可以從TFS – 2010-03-17 21:35:35

+0

獲取這些信息它不僅僅是技術知識,更是商業領域的知識,但是可以從您的源代碼管理系統日誌中找到一個很好的近似值。 – DVK 2010-03-18 05:43:57

0

排列所有組件到各個級別。給定級別的每個班級只應依賴較低級別的組件。 (「組件」是一個或多個類的任何邏輯組)。

首先爲所有1級組件編寫單元測試。你通常不需要嘲笑框架或其他這樣的廢話,因爲這些組件只依賴於.NET框架。

等級1完成後,從等級2開始。如果等級1的測試是好的,那麼在編寫等級2測試時,不需要模擬這些等級。

以類似的方式繼續,在應用程序堆棧中繼續工作。提示:將所有組件分解爲特定於級別的DLL。這樣,您可以確保低級組件不會意外地依賴更高級別的組件。

1

通常,單元測試是一種防止迴歸的工具,迴歸最有可能發生在依賴性最高的類中。你不應該選擇,你應該測試所有的類,但是如果你必須測試一般依賴性最高的類。

+0

選擇不是哪一個會被測試,哪一個不會考慮讓我們去測試所有課程的時間,我想知道從哪裏開始。 感謝您的寶貴意見 – 2010-03-17 21:33:17