這一篇我們要來小結一下TDD。
TDD 測試驅動開發(Test-driven development),是一種「先寫測試再開發程式」的開發技巧。
步驟:
1.紅燈:先寫失敗的測試案例。
2.綠燈:快速實作功能讓測試案例通過。
3.重構:在不改變功能的前提下,修改程式碼。改善可維護性。
在寫Production code,應先達到程式碼是可用的目標,也就是快速實作功能讓測試案例通過。再重構成更簡潔的程式碼,每次只關注一件事。當每次新增的程式碼較少時,有問題時追蹤較快。確保我們用小步快跑的節奏。
在TDD時,我們總是先寫失敗的測試,這個失敗的測試代表著需求不被Production code滿足。如果你加了一個新的測試案例,不修改任何Production code就測試成功,這意味著測試程式寫錯或是Production code已經滿足了測試案例,當然就不用修改了。所以我們才只有在測試失敗時再加上新的程式碼。
分析需求並拆解任務,TDD讓我們養成習慣,在寫程式之前先思考怎麼將需求拆解成不同的任務。先寫測試聽起來會讓我們以為一開始就要先寫測試,但其實應該的是先設計,先想清楚要怎麼寫。如果對需求不了解或對TDD還不夠熟悉,寫起測試就會綁手綁腳。
當你的其中一個測試是紅燈時,應盡快讓他變成綠燈,再來處理新的需求。當你想要重構的時候也是一樣,重構應只在綠燈的時候才做。如果你在紅燈的時候重構,當有錯誤時,你不會知道是原本就有錯還是重構造成的錯,甚至引發一連串的紅燈。
TDD的核心是紅燈->綠燈->重構。這代表重構是TDD非常重要的一環,重構的好不好將直接關係到TDD開發出來的程式碼品質。Android Studio提供了很方便的重構功能,你應該儘量使用工具來重構以提高效率,也確認重構的安全。如果你要重構一個沒有測試保護的程式碼時,而這些程式碼又很難直接加上單元測試,你可以先加上UI測試來保護,再進行重構。