什麼是測試驅動開發:新手指南
已發表: 2018-03-12自從未知的時間以來,程序員和錯誤一直在為爭奪霸權而進行永無止境的鬥爭。 這是不可避免的——即使是最好的程序員也會成為錯誤的犧牲品。 沒有代碼是真正安全的,這就是我們執行測試的原因。 程序員,至少是理智的程序員,通過在開發機器上運行代碼來測試他們的代碼,以確保它完成了它應該做的事情。 傳統上,測試用例是在編寫代碼之後編寫的,但在測試驅動開發中,自動化測試用例是在編寫任何代碼之前編寫的,以便可以同時檢查執行和測試。
在本文中,我們將深入討論測試驅動開發以及為什麼它比傳統方法更好!

目錄
什麼是測試驅動開發?
測試驅動開發是作為極限編程 (XP) 方法的一部分創建的,被稱為“測試優先”概念。 測試驅動開發允許您徹底測試您的代碼,並且還使您能夠快速輕鬆地重新測試您的代碼,因為它是自動化的。 本質上,在編寫任何代碼之前,程序員首先創建一個單元測試。 然後,程序員創建足夠的代碼來滿足單元測試。 一旦測試通過並重構代碼,程序員就可以繼續進行進一步的改進。 測試驅動開發確保代碼經過徹底測試,從而產生模塊化、可擴展和靈活的代碼。
每次添加新功能時,都需要經歷所謂的 TDD 的“生命週期”。 讓我們更多地談談這個生命週期。
如何成為全棧開發人員
測試驅動開發生命週期
測試驅動的開發生命週期涵蓋了從編寫初始單元測試到重新編寫代碼的所有內容。
- 添加測試:每個新功能在實施之前都需要經過測試。 編寫測試的基本要求是清楚地了解所有要求。 這是使用用例和用戶故事來完成的。
- 運行所有測試並檢查網絡測試:這樣做是為了確保我們的測試正常工作。 基本上,此階段旨在檢查任何不符合要求的代碼都沒有通過測試。 通過這樣做,此步驟消除了手頭進行錯誤測試的可能性。
- 編寫代碼:既然您已經完成了測試,下一步顯然是編寫清除測試的代碼。 這段代碼不需要在所有方面都完美無缺,但它需要通過測試。 一旦我們確定此代碼清除了測試,就可以根據要求對其進行修改。
- 運行測試:寫完代碼,現在是時候看看代碼是否通過了測試。 如果您的代碼通過了測試,則意味著您的代碼符合要求——直到現在。
- 重構代碼:這基本上是為了清理代碼。 重構不會對任何功能造成損害; 它只是通過刪除測試代碼和生產代碼之間的重複來清理代碼。

- 重複:這個循環現在通過新的測試重複以添加更多功能。 每個功能都經歷相同的循環。 本質上,每次測試運行之間的步驟大小不應超過 1-10 次編輯。 如果代碼沒有快速通過測試,開發人員必須恢復並且不要過度調試。
測試驅動開發的優缺點
與傳統的測試方法相比,測試驅動開發有一些明確的優點——傳統的測試方法大多是手動的。 然而,這並非萬無一失。 就像任何其他技術一樣,測試驅動開發也有一系列缺點。
讓我們詳細了解一下 TDD 有哪些好處:
- 編寫小型測試可確保代碼的模塊化。 實踐 TDD 可以幫助您了解良好模塊化設計的基本原則。
- TDD 在代碼實現期間提供了清晰性,從而在重構階段啟用了安全網。
- 使用 TDD,協作變得容易得多,因為現在人們可以放心地編輯代碼,因為如果他們的更改未達到測試的標記,測試會通知他們。
- TDD 的基礎是單元測試。 正因為如此,重構變得更加容易和快速。 重構舊代碼很痛苦,但如果代碼有單元測試支持,它就會變得容易得多。
- 它有助於在開始編碼部分之前澄清所有要求。 這樣,避免了以後可能出現的許多歧義。
- 測試驅動開發側重於在編寫時進行測試。 這迫使程序員使他們的接口足夠乾淨以通過測試。 在您處理一段沒有經過 TDD 的代碼之前,很難理解這種優勢。
- 愚蠢的錯誤幾乎立即被發現。 它有助於消除那些如果在 QA 中發現會浪費大量時間的錯誤。
現在,讓我們看看測試驅動開發的局限性是什麼:
- 需要維護用於測試的測試套件,否則測試可能不是完全確定的。
- 測試很難編寫——尤其是在單元測試階段之後。
- TDD 確實減慢了開發速度,至少在最初是這樣。
- 就像任何形式的開發一樣,只是做和做好之間有很大的區別。 編寫好的單元測試需要一定的專業水平。
- 很難將這種方法應用於您的遺留(現有)代碼。
- TDD 要求您執行例行的內務管理。 有必要改進測試以使它們運行得更快。
- 任何單元測試框架中的花哨功能很容易讓人分心,但應該記住,簡單的測試往往會產生最好的結果。
- 除非團隊中的每個人都正確地維護他們的測試,否則整個系統會迅速退化。
綜上所述…
就應用程序開發的未來而言,測試驅動開發是前進的方向。 有許多自動化測試框架,例如 PHPUnit、Serenity、Robot、RedWoodHQ 等等。 選擇適合您需求的應用程序,立即開始構建更好的可維護應用程序!
報名參加世界頂尖大學的軟件工程課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
