我的TDD實踐 可測試性驅動開發(上)

2021-09-05 21:48:42 字數 1128 閱讀 2349

tdd(測試驅動開發,test driven development)是重要的敏捷實踐之一,它的基本原理是用測試來帶動開發,先寫測試**,再寫開發**,最後重構。許多tdd推廣和實踐者認為,這種方式易於帶來高質量的**。而如今,tdd也慢慢有了test driven design,也就是測試驅動設計的意味。也就是說,它更像是一種設計方式了。這些理論我很願意相信,也很支援,但是從實際角度來說,我還是較難接受正統的tdd行為。不過,我也在實際開發過程中總結出……怎麼說呢,應該說是更適合我自己的實踐方式,在此希望能和大家交流一下。

我難以接受正統tdd方式的原因,在於我總是過於習慣在拿到乙個需求的時候,在腦海裡率先出現設計。而正統tdd的要求應該是先從測試**開始,但是我腦海中已經出現了設計「草圖」之後,寫出來的測試也已經有相當明確的「導向性」了——那麼,即使我先寫測試,又有什麼意義呢?而且,我在寫測試的時候,總是在想「哎,這個測試真多餘,反正最終**不會僅僅是這樣的」。對於我來說,我只能採取正統tdd方式的「形」,而實在接受不了它的「神」。

至今我還在疑惑,因為我覺得普通開發人員像我這樣情況其實應該也有不少,那麼對於像我這樣的人,又該如何採用tdd的方式來開發專案呢?最終我放棄了使用tdd,不過單元測試是一定保留了下來的。

於是,我還是先寫**,再寫測試,用測試來檢查**的實現和「期望」是否相符。接著,為了提高專案測試的可測試性,我會不斷重構**,分離職責,構造一些功能明確的輔助類等等。慢慢的慢慢的,似乎我覺得最後得到的成果還是相當有模有樣的。忽然有一天,我覺得自己的做法也已經形成了一些「套路」,我一時興起在推特上「宣稱」我在使用一種叫做「測試導向開發」的方式,因為我時刻考慮**該如何測試,為此而不斷改變我的設計。

測試導向開發,即test targeting development或ttd。當然最後乙個d改為design似乎也沒有什麼問題。

與傳統tdd的開發方式不同,我的ttd方式還是先寫**,後寫測試。只不過,我會時刻關注自己的**是否容易測試,並不斷重構產品**和測試**。基本上它的步驟是:

寫產品**

為產品**寫測試

發現測試不容易寫,於是重構產品**

重構測試

…… 一般來說,這幾個步驟的執行順序都比較隨意,唯一的目的便是在產品開發過程中,讓產品**得到更多的測試覆蓋率。這會迫使我們編寫更加容易測試的**,而我慢慢發現這個要求很接近於著名的solid原則:

TDD 測試驅動開發

test driven development 測試驅動開發是敏捷開發中的一項核心實踐和技術,也是一種設計方 tdd的原理是在開發功能 之前,先編寫單元測試用例 測試 確定需要編 寫什麼產品 tdd雖是敏捷方法的核心實踐,但不只適用於xp extreme programming 同樣可以適用於其他開...

測試驅動開發TDD

測試驅動開發 testdriven development,tdd 的基本思路是通過測試推進整個的開發工作,並不只是單純的測試工作。利用這種測試方法時,若要完成某個功能,某個類,首先不是編譯正式的 而是先編寫測試 考慮其如何使用 如何測試。然後在對其進行設計 正式編碼。t dd具有很強的目的性,是在...

tdd 測試驅動開發

這是一張影響圖 當壓力越大時,所做的測試就會越少。測試越少,犯的錯就會越多,就會感到更大的壓力。這是乙個會造成情境越來越糟的迴圈。我們用事先編寫的測試來驅動開發,因為測試先於開發,所以我們在感到壓力時,就執行這些測試,它們會馬上給我們一種系統良好的感覺,而且會減少開發出錯的次數,進而減少我們的壓力,...