我正在研究一個新的PHP項目,雖然我喜歡TTD,但我發現它似乎比在項目的這個階段對幫助更有幫助。我應該在新項目開始時使用TDD嗎?
我開始了但是現在我更深入的一些應用功能的原型,我發現自己重寫位和核心框架件與編寫測試一起編寫單元測試。看起來好像我花了很多時間重寫測試,也許我應該等到我處於更多的項目的alpha/beta階段。
我應該從頭開始寫單元測試,即使有很高的機會,我將不得不重寫它們嗎?
我正在研究一個新的PHP項目,雖然我喜歡TTD,但我發現它似乎比在項目的這個階段對幫助更有幫助。我應該在新項目開始時使用TDD嗎?
我開始了但是現在我更深入的一些應用功能的原型,我發現自己重寫位和核心框架件與編寫測試一起編寫單元測試。看起來好像我花了很多時間重寫測試,也許我應該等到我處於更多的項目的alpha/beta階段。
我應該從頭開始寫單元測試,即使有很高的機會,我將不得不重寫它們嗎?
是的,這是瞭解您的系統並創建一個可靠的API的最佳方式。
這聽起來像你需要將你的測試升級到更高的水平。不要測試單個方法,測試功能單元。但是這並不是一回事,因爲我還沒有遇到一個至少沒有朝着這個方向努力的tdd醫生。
如果您要使用TDD,您最好先使用它。
如果您認爲這是正確的選擇,那麼使用它,否則當您決定在未來使用它時可能會頭疼。
同意。 TDD非常棒,雖然它可能會讓事情變得困難,但如果您決定中途轉向使用TDD,情況會更糟。 – eandersson 2012-03-30 16:55:06
當然你會重新把它們重新組合,事情會改變。
如果你做了全面,徹底的需求分析,事情會改變(更可能已經改變了,而你正在追求的是嵌合體),你就必須重新分析。
但是,如果你潛水權和獲得寫了一些代碼和一些成果排序,你不會有任何有用的分析,沒有測試,然後整個銷售部門搓手,因爲交付=可供出售。
迭代,寫測試你可以,履行他們,看看你下一步去哪裏。 TDD或經典的瀑布,在你有一些軟件之前,很多工作都在前面進行。
做前期工作第二,不是很多的使用,並且永遠不會發生。
也許你需要更多的概念證明或故事登機,或者本尊禁止分析,但是所有的潛水都會在儀表盤上放置表情符號,而且你唯一能獲得的信用就是踢球在nads當車輪脫落時,以及次級風格的技術債務危機。
我發現它似乎比在項目的這個階段幫助 更有幫助。
這是爲什麼?你能更客觀地確定你的擔憂嗎?
現在我更深入的一些應用 功能的原型,我發現自己重寫位和核心 框架件與編寫測試一起。看起來好像我是 花了很多時間重寫測試,在這裏我應該等待 ,直到我進入更多的項目的alpha/beta階段。
對安全網有很大幫助,它是人們不經常承認的測試的一部分。傾向於將更多的測試視爲實現的最終驗證,而不是過程的一部分,無論他們是先做還是先做/從不做 – 2012-03-31 19:03:52
是的,我認爲它開始從非常begining編寫測試是非常重要的。 TDD(測試驅動開發)不僅僅是單獨測試各個類。它應該指導您在設計階段做出的決定。
當你先寫測試的時候,你會更好地理解你的問題。你在說,你很可能會在稍後重寫它們。如果是這種情況,那麼這可能意味着你會更好地理解你的系統,這是一件好事。然後,您可以通過實施進一步的測試或對現有測試進行重新分解來重新設計您的系統。
它可能會讓人感覺像是在浪費時間,但並不是因爲您對自己的系統有了更好的理解。
我正在閱讀的一本書(以測試爲導向的面向對象的軟件)提到了一個「步行骨架」概念。它表明你應該使用TDD來開發最低限度的工作解決方案,即使它非常基本。
另一個要點是您應該從一開始就嘗試自動化您的部署。這不完全是一個單元測試,但它是一個部署測試,這個測試同樣比單元測試更重要。如果您在項目開始時進行這種測試,則不會在發佈日期附近遇到意外問題。您還將更好地瞭解系統中不同組件的組合方式。
我對你的陳述有疑問。 TDD當然是設計系統的一種方式,但是爲了真正地設計一個設計,在編寫單行代碼,測試用例或其他方面之前,它不能替代進行適當的需求分析,並且完全理解問題域。 - 即便如此,我也會爭辯說,「建立一個扔掉」也更有可能是啓發性的。 – 2012-03-30 17:01:23
@TylerEaves的確如此。根據我的經驗,我將對其進行修改,TDD是進行正確分析和了解開發人員可以使用的領域的最佳方式。所以是的,這是一個工具,在我看來,它是一個令人難以置信的強大工具,但它不是你應該使用的唯一工具。 – 2012-03-30 17:05:17
有史以來唯一正確的需求分析是從交付的軟件進行回顧性分析。 :( – 2012-03-30 17:14:35