iT邦幫忙

DAY 1
18

30天快速上手TDD系列 第 1

[Day 1]TDD guidance

@前言
相信許多developer一定都曾經聽過、看過甚至寫過所謂的Unit Test,可能也嘗試過所謂的TDD。

但可能心裡也有很大的疑問:疑惑
「為什麼我要寫兩份程式?」
「為什麼我要寫程式來驗證我已經知道的結果?」
「我又不是SA,可能也不懂domain,怎麼產生一開始的test case?」

最後的感想就變成是:嘆氣
「Unit Test,那都是說說而已」
「Unit Test?沒那美國時間啦!」
「TDD只不過是被拿來炒作而已,現實開發中,誰用TDD寫一整個大系統過?至少台灣沒有吧!」
「TDD只是先寫測試程式而已,有什麼特別的」

這一系列的文章,希望可以滿足大家的求知慾,激起大家的熱情,動手跟著作作看。

相信我,你也可以真的在TDD。讚
如前言所說,這個系列希望可以把TDD學習的順序,以及實際實作的順序介紹一下,讓大家可以先學每個環節,接著再把所學的組合起來,進行案例的實作。

我預計將TDD整塊大餅分成四份,分別是Testing, Refactoring, TDD, 最後輔以「ATDD與BDD」。設計的目標則是:「working software」

@學習順序
我對TDD建議的學習順序是:

  1. Testing
  2. Refactoring
  3. TDD
  4. ATDD & BDD

@開發順序
TDD實際的開發順序則是:

  1. ATDD & BDD
  2. TDD
  3. Testing
  4. Refactoring

不管是學習順序,還是實作順序,其實都是環環相扣、相輔相成。

接下來29天,則預計以上述的四個部分,來進行細部的說明與簡單的實作。(如果沒有中斷的話 :P)

@主要的大綱與精神
一、Testing

  1. 單元測試(Unit Testing)
  2. 整合測試(Integration Testing)
  3. Presentation Layer Testing

二、Refactoring

  1. 讓程式碼會說話(Let code can talk)
  2. 簡單就是美(Simple is beauty)
  3. 不要過度設計(never over design)
  4. 運用基本的物件導向原則(need to understand OO skill and principle)

三、TDD, ATDD, BDD

  1. 滿足使用者需求(fulfil user requirement)
  2. 如何產生測試案例(how to get acceptance test cases)
  3. 如何由測試案例開始設計程式(how to start by test cases)

四、開發實例

  1. User Story
  2. ATDD
  3. BDD
  4. TDD
  5. Refactoring

五、總結

  1. OO
  2. Unit Testing
  3. Integration Testing
  4. Refactoring
  5. CI & Auto Testing
  6. Agile/XP (continuous feedback)

@總訣
最後則是用來貫穿整系列文章的總訣:
「程式碼的存在是為了,也只為了滿足使用者需求,而不是寫給工程師自己爽的」

@補充
感謝海綿寶寶提醒,這邊補上一些專有名詞的全名:

  1. TDD: Test-Driven Development
  2. ATDD: Acceptance Test-Driven Development
  3. BDD: Behavior-Driven Development
  4. CI: Continuous Integration
  5. XP: eXtreme Programming

@目錄與附錄
文章分類與推薦的參考資料,請參考:[30天快速上手TDD]總結


下一篇
[Day 2]Unit Testing 簡介
系列文
30天快速上手TDD31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2012-10-09 07:25:03

請教一下以下的全名
TDD, ATDD, BDD, CI
謝謝

就是91 iT邦研究生 4 級 ‧ 2012-10-09 12:33:34 檢舉

補上去文章中了,感謝 :)

0
就是91
iT邦研究生 4 級 ‧ 2012-10-09 11:36:20

是我粗心了,沒補上全名。

TDD: Test-Driven Development
ATDD: Acceptance Test-Driven Development
BDD: Behavior-Driven Development
CI: Continuous Integration

感謝海綿寶寶大人的提醒 抱抱

No
是我自己才疏學淺
臉紅

0
ted99tw
iT邦高手 1 級 ‧ 2012-10-09 12:39:02

請受小囉囉們頂禮膜拜先~~~
灑花灑花灑花灑花灑花

就是91 iT邦研究生 4 級 ‧ 2012-10-09 12:50:20 檢舉

客氣了,我也是小嘍囉啊 XD
沒共襄盛舉一下,對自己交代不過去...不過這段時間真的是忙到翻掉。

只能希望接下來29天,可以擠出一點A罩杯。

0
pajace2001
iT邦研究生 1 級 ‧ 2012-10-10 18:17:00

偶像出現了~~
我都寫 test case 喔~
雖然還是沒有辦法TDD,功力太淺~
再看過前輩的文章後~整個就是醍醐灌頂阿~~愛你愛你開心開心

就是91 iT邦研究生 4 級 ‧ 2012-10-10 18:28:38 檢舉

Orz 您太客氣了。
目前還只是在畫輪廓而已,希望能有時間,把整個系列寫完。

這一次很趕,剛好臨時殺出許多緊急又重要的任務,被逼著趕鴨子上架。

如果文章寫的太少、太淺,或有哪邊不清楚或寫錯,還請大家幫忙提出指正一下。

我要留言

立即登入留言