[觀點]拒絕測試驅(qū)動開發(fā)(TDD)的10個理由
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2012/1/16 10:25:41 ] 推薦標(biāo)簽:
導(dǎo)讀:在作者看來帶動一個團(tuán)隊發(fā)展并快速提高產(chǎn)品質(zhì)量的好方法有很多種。比如:測試驅(qū)動開發(fā)、行為驅(qū)動開發(fā)、驗收測試驅(qū)動開發(fā)。但TDD不是的,不是每個項目都適用。
文章內(nèi)容如下:
在本文內(nèi)容之前,先來看幾個相關(guān)的開發(fā)方法:
● 測試驅(qū)動開發(fā):英文全稱Test-Driven Development,簡稱TDD,是一種不同于傳統(tǒng)軟件開發(fā)流程的新型的開發(fā)方法。它要求在編寫某個功能的代碼之前先編寫測試代碼,然后只編寫使測試通過的功能代碼,通過測試來推動整個開發(fā)的進(jìn)行。這有助于編寫簡潔可用和高質(zhì)量的代碼,并加速開發(fā)過程。
● 行為驅(qū)動開發(fā):英文全稱Behavior Driven Development,簡稱BDD,是一種敏捷軟件開發(fā)技術(shù),鼓勵開發(fā)人員、質(zhì)量保證和非技術(shù)或商業(yè)參與者都參與到項目中來。
● 驗收測試驅(qū)動開發(fā):英文全稱Acceptance Test Driven Development,簡稱ATDD,是一種協(xié)同需求發(fā)現(xiàn)方法,利用示例和可自動的測試來明確需求,創(chuàng)建可執(zhí)行的規(guī)格。
在我看來,這些都是帶動一個團(tuán)隊發(fā)展并快速提高產(chǎn)品質(zhì)量的好方法。但TDD不是的,不是每個項目都適用。以下十種情況不建議寫測試,如果你的項目符合一種以上,那么TDD以及其他敏捷技術(shù)都是多余的。
1、沒有客戶
有時候,你正在開發(fā)的產(chǎn)品不會被任何人使用,在這種情況下,付出的所有努力都會浪費(fèi),沒有人會在乎。
2、客戶是挑剔的
有些人非常喜歡測試新軟件并尋找錯誤,這是他們工作的重心,還有一些人喜歡進(jìn)行棧跟蹤,以進(jìn)行逆向工程。如果你的客戶中有這樣的人,那么軟件中所有的優(yōu)點都會被忽視。
3、項目是簡單的
如果團(tuán)隊可在短時間內(nèi)(不超過幾個星期)完成項目,且永遠(yuǎn)不會再對其進(jìn)行重新維護(hù),那么可維護(hù)性、可重用性和可擴(kuò)展性變得并不那么重要了,而花在這上的時間和精力是浪費(fèi)。
4、架構(gòu)是完美的
如果你的架構(gòu)不需再改進(jìn),那么沒有必要讓它具有可擴(kuò)展性。TDD的優(yōu)勢是增量開發(fā)流程以及可擴(kuò)展架構(gòu),而如果項目的架構(gòu)已經(jīng)夠完美了,則TDD顯得畫蛇添足了。
5、文檔是完美的
如果API和任何軟件的改變都即時記錄到文檔里,與用TDD創(chuàng)建的文檔一樣,方便找到你需要了解的東西。如果你的文檔是非常完整的,編寫測試明顯違反了 DRY(Don‘t Repeat Yourself)原則。
6、團(tuán)隊沒有大的變化并且團(tuán)隊內(nèi)的人記憶力不錯
團(tuán)隊的記憶可以讓你回憶起寫過的任何一行代碼或者當(dāng)時的開發(fā)環(huán)境。因此不需要用測試來提醒你代碼是干什么的,為什么寫它,或如何使用它。但這意味著你的團(tuán)隊不能招募新成員,舊成員也不能離開。這樣的話,不寫測試也是可以的,因為寫了反而會影響團(tuán)隊進(jìn)度。
7、“Done”意味著代碼檢查完畢
很多團(tuán)隊有對Done(DOD)的定義,通常指用戶可以接收和運(yùn)行(編碼、測試、部署、記錄等)軟件的情況。然而,大部分更喜歡簡單且容易實現(xiàn)的定義。比如說每個成員完成自己的任務(wù)定義為“Done”。而且對于一個項目來說,如果不需要為產(chǎn)品所有者/經(jīng)理/用戶測試代碼,則應(yīng)盡快進(jìn)入下一階段。
8、你的工作是寫代碼而不是測試
也許你的團(tuán)隊里做測試的人能夠快速測試你的代碼,并針對有問題的地方及時給你反饋,因此在對代碼進(jìn)行修改的時候,變動的地方在你腦中還有清晰的印象。因此要珍惜測試人員,并確保他們有足夠的工作,否則當(dāng)他們厭倦這份工作后便會跳槽到一個更具挑戰(zhàn)性的的公司。
9、不停地調(diào)試導(dǎo)致測試時間過長
和任何有競爭力的公司一樣,你的團(tuán)隊必須按時完成任務(wù),這意味著要好好規(guī)劃并利用時間。由于DoD團(tuán)隊不包括測試,所以無法預(yù)測這部分需要多少時間,從開發(fā)到QA全部都要折騰無數(shù)遍。如果要信守承諾的話,不能推遲交貨時間,否則超過后期限后上司問起來,你將無法交代。
10、這只是一個理論
像進(jìn)化論和重力一樣,這些都只是一個理論。即使上述理由都是無效的,也沒有人曾經(jīng)成功地證明,使用TDD的開發(fā)方法能快速高效地開發(fā)程序。因此這是一個見仁見智的問題。
相關(guān)推薦
相關(guān)產(chǎn)品

最新發(fā)布
性能測試之測試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測試是從什么時候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動化測試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項目適合做自動化?自動化測試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測試工具測評
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測試基本概念是怎么來的?軟件測試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10