2010-07-29 62 views
5

很快,我將參與一個項目,該項目將使用敏捷項目管理/開發方法,以及5(或更多)2周的衝刺。該項目將使用我在過去發現的單元測試很好的DDD設計模式,因此我也很樂意將其用於此項目。唯一的問題給出了以下幾個因素我不能確定是否單元測試可以用敏捷開發順利實施:敏捷開發可以有效實現單元測試嗎?

  • 潛力不斷變化的需求(需求的變化,測試突破,測試需要太多更新)。
  • 時間因素(單元測試可以使得開發花費更長的時間,如果需求改變到衝刺結束時,可能沒有時間以最佳質量更新測試和生產代碼)。

我有一種感覺,如果/當需求發生變化時(尤其是在衝刺結束時),並且考慮到緊迫的期限,單元測試將成爲一種負擔。任何人在這件事上有什麼好的建議?

+1

這個問題是脫離主題,因爲它不在本網站的範圍內,如[我可以在這裏詢問什麼主題?](// stackoverflow.com/help/on-topic)中定義的。你可能可以在[另一個Stack Exchange站點](// stackexchange.com/sites#name)上詢問,*可能* [pm.se]或[softwareengineering.se]。請務必閱讀幫助中心針對您打算髮布問題的網站的主題頁面。 – Makyen 2017-11-15 23:51:43

+0

@Makyen當這些問題發佈於7年前的時候,這些其他交流不存在/不爲人所知或者邊界沒有明確定義......所以,呃..感謝信息?多麼奇怪的更新。 – Scozzard 2017-11-20 12:20:20

+0

@Makyen你是否真的在閱讀最古老的帖子,並根據當前常見問題提供建議?我的朋友在你前面有很長的路要走! – Scozzard 2017-11-20 12:23:06

回答

7

我認爲這兩種方式。一方面,是的,單元測試是額外的代碼,需要額外的維護,並且會使你的速度變慢。另一方面,如果需求開始發展,進行單元測試將是確保您正在改變的仍然有效的救命車。

+2

你的第二點是我書中最重要的。在知道系統的其他部分仍然有效的情況下,能夠安全地改變事物使得更容易進行這些更改。 – 2010-07-29 23:16:26

+1

我不認爲TDD是非常有爭議的。大多數人都同意,單元測試需要時間,但有助於開發(而且通常這個好處大於成本),但並不是每個人都相信先寫測試是有幫助的。首先編寫測試作爲設計過程具有價值,但不適用於所有人。 – Mathias 2010-08-02 18:24:26

3

考慮到10周以上的代碼沒有測試覆蓋讓我感到畏縮。您何時有時間手動測試所有代碼?根據不斷變化的要求,您將使用更多的時間追蹤更改在整個代碼庫中所發生的影響。

我不能強烈建議使用單元測試。即使在進行DDD時,也要讓單元測試推動實施。再加上像DI/IoC和SRP這樣的良好模式,您應該發現代碼庫和測試都可以更有彈性地進行更改,從而爲您節省大量時間。

+0

我在需要數年並且沒有測試覆蓋的項目中工作。不是我喜歡它。一點也不。 – 2011-08-15 16:56:17

+0

@Peri - 我爲你感到難過,可悲的是,很多項目都是這樣的。希望沒有太多新建項目開始剔除自動化測試。現在還不算太晚,我已經交出了覆蓋率爲0%的系統,並能夠將系統拉高到50%,並逐漸對新件進行測試。 – 2011-08-16 08:14:28

3

除非您有高覆蓋率的單元測試,否則隨着項目的進展,更改成本將呈指數級增長。所以基本上,你預期越多的變化你實際上需要你的單元測試。其次,良好的單元測試依賴於您的生產代碼中非常少的和小的功能部件。如果屬實,只有少數測試會在功能發生變化時受到影響。基本上,每個測試只測試一件東西和一小塊生產代碼。編寫符合此原則的單元測試的關鍵是解耦你的代碼並單獨進行測試。

第三,您需要更好地理解DONE的概念,以及爲什麼它的定義在可持續發展方面如此重要。基本上,如果你的團隊在短期內損害了DONE的概念,那麼你不可能以可持續的方式快速發展。