2009-03-06 85 views
2

大多數演出我最終都沒有或很少進行單元測試。通常所描述的單元測試實際上是集成測試,並且很少從開發人員機器運行。我通常通過傳播兩者之間的差異來開始我的傳福音,並試圖讓人們編寫非常集中的單元測試,並稍後離開集成測試,也就是說,當有足夠的人編寫單元測試時,我們可以「繼續」編寫集成試驗。驗收或系統級別測試通常由開發人員手動處理,然後由質量保證部門處理。您是否更關注單元,集成或驗收測試?

我的問題是在敏捷環境之外工作時,您爲單元,集成和驗收測試付出了多少努力,以及您認爲哪些最有價值?

回答

1

很多時候,對這個問題的回答會變得極端。就像你應該有覆蓋率幾乎100%或單元測試是愚蠢的....

我相信你必須找到平衡。

如果有合理的懷疑,類的邏輯可能會失敗,請使用單元測試。單元測試必須在孤立的類上完成,這意味着您可能需要模擬該類使用的服務。通過這種方式,您可以安全地執行重構,因爲單元測試將確保類仍按預期工作。

集成測試對於確保您的應用程序完全可用是必需的。你可以有多個單元測試,但這並不意味着你的應用程序可以正常工作。

我完全同意你關於驗收測試。在最後(衝刺)完成它們,部分必須手動完成。

0

我認爲你不能混淆。你所描述的每個測試都有不同的目標。

單元測試是開發者的目標。他們在模塊的實現之前或與其並行編寫單元測試,以確保其工作或所有接口和要求得到滿足。

集成測試是在測試中心開發完成後完成的。在開發過程中,您不會像單元測試那樣測試單個模塊。集成測試涵蓋了幾個模塊之間的交互。

驗收測試通常需要客戶自己檢查是否滿足所有要求並且按照指定要求執行功能。

+0

爲什麼說集成測試是在測試中心開發之後完成的?集成測試可以並且仍然是開發者測試,只是不覆蓋單個設備 – tddmonkey 2009-03-06 09:03:24

+0

是的你是對的,在大多數情況下,開發者也將是測試者。但最佳實踐是開發和測試由不同的人完成。開發人員對他寫的應用程序有着完全不同的看法,像一箇中立的人。 – Alexander 2009-03-06 09:12:49

2

我嘗試從一開始就抨擊單元測試。我不是全球最大的TDD粉絲,但我真的很喜歡單元測試。我不認爲一些魔法仙女會確保集成測試能夠以出色的效果通過,因爲所有的單元測試都可以正常工作,但它會變得非常接近。

至於驗收測試,我甚至不會去查看某些東西,直到我看到單元測試通過(或失敗,如果它們應該失敗)。我不能想到很多我會接受完全缺乏單元測試的案例。如果應用程序中的某些核心庫更新會怎麼樣?

許多人會爭辯說,單元測試是以開發人員爲中心的,他們會是正確的。然而,缺乏單元測試是一個單獨的指標。特別是如果一個做驗收測試恰好是開發商:)

編輯:

集成測試也對我很重要。當集成測試失敗時(通過之前),我們通常會將其構建爲一個非常緊湊的規範,它是範圍蔓延的有力指標。當發生這種情況時,有人需要在修復之前發出一些噪音。

1

我聽說過比較,單元測試就像測試牆上的單個磚塊,功能/集成測試就像測試整個牆壁的穩定性。

單元測試對於開發者來說是必須的,以確保這些類正在做他們應該做的事。

功能/集成測試對於確保您不會錯過實際提供某些功能的「大局」目標是必需的。

因此,恕我直言,是絕對必要的,從投資回報的角度來看,離開這是一個壞主意。