# Ch1: What is TDD? ###### tags: `bob` ## 前傳 #### p01-05 書封面、感謝家人、作者介紹 #### p06-07 章節大部介紹 #### p08-13 章節細部介紹 #### p14-16 Introduction - 教你把*需求變成測試,再把測試變成產品(production code)* - 手把手帶你建立三個 app  1. Introduction - 解釋為什麼 TDD 這麼重要,還有他怎麼樣可以幫到你 2. **Beginning** TDD - 開始基礎的 testing ~ - XCTest - test expressions - mocks - test expectations - 本章示範一個叫做 *Fitness* 的 app 3. TDD with **Networking** - 開始網路相關的 testing ~ - RESTful networking calls - downloading images - using networking clients - 本章示範一個叫做 *Dog Patch* 的 app 4. TDD **in Legacy** Apps - 示範在 (不是 TDD 開始的專案) 上,開始 TDD - 本章示範一個叫做 *MyBiz* 的 app,他是一個 ERP 系統,可以在上面管理和規劃公司的資源 #### p17-21 開發環境介紹、版權聲明、論壇、[**source code 下載**](https://store.raywenderlich.com/downloads/2092) ## Ch 1: What Is TDD? (p22-27) #### ch1 裡面有五個小節 - **Why** should you use TDD? - **What** should you test? - But TDD takes **too long**! - **When** should you use TDD? - Key points  ### TDD Cycle 1. 寫一個會失敗的測試案例 2. 開始寫程式讓這個測試通過 3. 重構 4. 重複以上步驟 照著這個節奏有幾個優點: - 確保你的 product code 是可被測試的 - 在寫 product code 時,程式碼會吻合你的需求 - 你的測試案例,==同時也是文件的一部份,他說明了程式碼是如何運作的== ### 幹嘛要用 TDD? - 一個 "好的" 測試可以確保 app 可以運作得如你預期 - 然而什麼叫 "好的" 測試? - 好的測試是: - 會失敗的(不會失敗的測試大概沒什麼用 - 可重複性的( - 執行快速的(一秒完成、甚至更短更好 - 可維護的 - 遵循著 TDD 提供的這套方法論,會讓你產出的測試是 "好的" ### 到底是要測試什麼東西? - 測試覆蓋率不需要 100%,有些東西是可以不用測試的 - **應該要**測試的: - 幾乎所有你自己寫的程式碼 - 可以**不用**測試的: - 你依賴的函式庫,這個測試的責任是原作者應該要做的 ### TDD 是不是花我很多時間! 真正的時間開銷並不是全都是在第一個版本上,還有後續的維護、新增功能、祓除既有功能...長遠來看這是划算的。 ### 什麼時候做 TDD 比較好? 專案開發的任何時刻都可以做。如果你的專案是暫時性的,像是為了黑客松寫的。那你最好評估一下,或是只寫重要功能的測試就好了。 ### 本節重點回顧 - TDD 給你一個方式可以寫"好的"測試 - "好的"測試是會失敗的、可重複的、執行快速的、可維護的 - 只寫你需要維護的程式碼的測試 - TDD 降低維護成本,同時有高品質的程式碼 - 對長期的專案,TDD 是最有效的開發方式
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up