2011-03-29 73 views
2

代碼覆蓋率和性能分析的區別是什麼?代碼覆蓋率和性能分析的區別

這是代碼覆蓋率最好的開源工具。

+0

您使用哪種語言和平臺? – 2011-03-29 05:58:22

+0

我正在尋找Java和J2EE。我認爲差異應該與語言和平臺無關。當然,工具必須針對語言和平臺。 – Kamahire 2011-03-29 09:59:26

回答

1

覆蓋範圍對於查看代碼的哪些部分沒有運行很重要。 根據我的經驗,它必須在多個用例上累積,因爲任何一次軟件運行只會使用一些代碼。

分析在不同的時間意味着不同的事物。有時它意味着衡量績效。有時它意味着診斷內存泄漏。有時候它意味着要了解多線程或其他低級活動。

當目標是提高軟件性能時,通過找到所謂的「瓶頸」並修復它們,不要僅僅滿足任何分析器,甚至不一定是高度推薦或可敬的分析器。 使用那種能夠獲得正確信息並以正確的方式呈現給您的類型是非常重要的,因爲這方面存在很多混淆。 More on that subject.

加入: 對於覆蓋工具,我一直都是自己做的。在幾乎每個常規和基本塊中,我插入一個這樣的調用:Utils.CovTest("file name, routine name, comment that tells what's being done here")。 例程記錄它被調用的事實,當程序結束時,所有這些註釋都被附加到文本文件中。 然後有一個後處理步驟,從完整列表中「減去」該文件(由類似grep的程序獲取)。 結果是還沒有的測試列表,需要額外的測試用例。

當沒有進行覆蓋測試時,Utils.CovTest什麼都不做。無論如何,我會將它從最內層的循環中排除出去,所以它不會影響性能。 在C和C++中,我使用一個在正常使用時擴展爲無的宏。

1

代碼覆蓋率是您的代碼已運行多少的評估。這用於瞭解您的測試如何執行您的代碼。

分析用於查看代碼的各個部分如何執行。

這些工具取決於您使用的語言和平臺。我猜你正在使用Java,所以建議CodeCover。雖然您可能會發現NoUnit更易於使用。