2009-07-07 30 views
1

我們是一小組PHP開發人員,他們正在考慮在工作流程中集成或不集成TDD,以提高Web應用程序的質量,同時消除令人沮喪的手動迴歸測試。我的問題是如果我們開始使用TDD,平均需要多少開發時間?TDD和開發時間

回答

4

TDD不僅僅是爲了編寫測試來保護你的代碼。這是關於駕駛設計的測試。所以你最終可能會寫更多的代碼,但是你花在設計上的時間更少(或者由於缺乏設計而解決問題)。

當你學習如何使用各種測試/模擬框架並理解如何使用單元測試來驅動你的設計時,我認爲很多開銷會在初始階段(簡要地說:寫一個失敗的測試,然後編寫最簡單的可能的功能代碼,以使測試過去,然後在必要時重構功能代碼)。

一旦您的團隊加快了使用TDD和您需要的各種工具,您們可能會比現在更有效率。

2

TDD 保存時間。我無法從PHP的角度講 - 不知道什麼樣的測試框架可用 - 但對於Java來說,當我處於TDD時,我的流程更快了,更快了。而且我的代碼有更少的錯誤,所以我花費更少的時間修復它,更少的時間找到錯誤。紅綠重構驅動着你,讓你走上正軌,讓你前進。

+0

+1 - TDD節省了開發週期後端修復bug的時間。如果沒有,爲什麼要麻煩? – Michael 2009-07-07 15:01:47

0

TDD迫使您像您的代碼使用者一樣思考,並將重點從實施細節轉移到易用性:「成爲您自己的客戶」。作爲一個經驗法則,你將最終編寫兩倍的代碼。

0

在編寫測試時有點失落的時間。然而,在實踐中,我發現這並不是那麼糟糕,因爲在編寫代碼時通常會編寫測試,所以您將它們寫入同一遍(我發現我花更多時間思考如何編寫什麼代碼以及如何編寫代碼我在做的比實際的代碼 - 所以編寫測試只會增加「實際寫入」部分)。另一種說法是,即使我寫了兩倍的線數,它實際上只有10-20%的罰分。

另一個可能的失去時間的來源,可能是一個更大的一個,是重寫你可能需要做的是讓你的代碼可測試,尤其是如果你有一個龐大的代碼庫,其中包含分散的依賴關係和全局狀態

當然,當你必須改變代碼,但如果你正在考慮編寫測試,你可能已經知道了這一點。

2

我不打算豎起TDD的好處..你只需要嘗試一下
回答您的具體問題... 從我的經驗來看,我認爲測試代碼與產品代碼的比率大約在3:1之間 您可以用TDD將增加30%的時間。當然,這是假設你已經計時了一些TDD時間,而不是初學者(在這種情況下,緩衝區應該更高)......並且YMMV

6

不要指望TDD來提高質量。擁有高質量的心態更重要。我已經看到了高質量的TDD前代碼,這些代碼經過了嚴格的測試 - 因爲團隊成員有生產產品的動力,他們可以引以爲豪。我看到Agile XP團隊做TDD會產生絕對的垃圾,因爲他們沒有做到這一點,沒有任何所有權的驕傲。如果您擁有所有權,您可以使用適合您的任何流程生成高質量的代碼。

因此,不能保證TDD能夠提高產品質量。但是,如果您的團隊的驅動力更強,並且擁有並擁有所有權的所有權,那麼TDD將爲您提供機會以生成更好的代碼,而不是因爲它會更好測試,必然,但因爲它會改變你的代碼的設計方式。

TDD可以改進各個類的設計。不過要小心。您有將個人對象的複雜性遷移到對象交互領域的風險,然後不能充分測試,所以請確保您在該級別進行測試。

如果你已經進行過單元測試,TDD最初會使開發速度稍微慢一些,但是差別應該在幾周內逐漸減小。

如果你不是單元測試,那麼單元測試(TDD或常規)will save you time

+0

阿門以「天生的所有權爲榮」。如果你有這些,各種發展過程都會帶來質量。如果沒有,你不能強迫它通過過程發生。 – 2009-07-08 01:08:04