iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 1
1

TDD ( Test-driven development ) 是一種寫程式的開發技巧,提倡能為開發者及程式帶來多項好處:

  1. 更好的程式結構
  2. 程式碼更簡潔易讀
  3. 更容易進行 Debug

先簡單列出最重要的這三點,之後再來做更詳細的說明。


TDD 要求,在寫任何產品程式之前,必須要先寫出預期功能的自動化測試。

若按照一般直覺的寫程式方式,思考完要寫什麼功能後,也許再做一些大略或詳細的設計,接著就開始進行 Coding,

寫出一個又一個的函式,完成部分或全部後,試著執行功能,測測看符不符合自己預期的功能,不符的話就繼續修改程式或開始 Debug。

然而 TDD 違反了這個直覺,使用時具有以下的步驟:

  1. 寫測試: 在寫任何產品程式之前,只先編寫最少量、剛好能運作的自動化測試
  2. 寫程式: 編寫最少量、剛好能通過的產品程式
  3. 重構程式碼,並循環以上步驟

這裡說的自動化測試,可以是對於單一 function / class 的單元測試,也可以是更高層的整合測試。

下一篇就讓我們來看一個範例,開始瞭解如何用 TDD 的方式來寫函式。


這個系列預計由簡入深去探討 TDD 使用上的各種議題,大致包含下列方向

  • 如何在開發中使用 TDD
  • TDD 的好處與困難點

TDD 的各種介紹、如何實踐、以及程式範例會穿插於整個系列,範例目前會以 PHP 及 Laravel 為主,但也希望能包含到使用其他語言,時間充裕的話也許會寫一些 Web 前端或其他功能的範例。

接下來讓我們一起,一步步體會 TDD 的精髓吧。


下一篇
TDD 範例一:函式 (PHP)
系列文
如何一步步實踐TDD (測試驅動開發)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Chris
iT邦新手 3 級 ‧ 2019-09-16 19:05:27

設計流程,往往都違反了製作直覺的摸索過程。
TDD 的流程先決定了 I/O 再決定內容。是很棒的「設計流程」而且,在軟體以外的領域已經行之有年囉

Louis iT邦新手 5 級 ‧ 2019-09-17 10:10:48 檢舉

也許因為純軟的寫程式成本低,反而形成了——有初步想法或拿到需求就開始寫——這樣的直覺,可能這也是大學程式設計課沒想到要教的事情,但電路設計課就要先思考I/O。

0
ytyubox
iT邦新手 5 級 ‧ 2019-09-17 00:55:17

TDD 維基百科的兩頂帽子的比喻很貼近呢。

Louis iT邦新手 5 級 ‧ 2019-09-17 10:27:05 檢舉

老實說我原本沒有看 TDD 維基百科的中文頁面XD,不過的確是在不同的思考方式之間切換。

我要留言

立即登入留言