- Published on
Classic TDD Workshop — 從混亂到掌控的設計之道

你有沒有過這種經驗?
翻過 Kent Beck 的《Test Driven Development: By Example》(測試驅動開發:案例導向的逐步解決之道),覺得概念講得很清楚,但書蓋起來打開 IDE,手就停在那裡。第一個測試要寫什麼?測試的順序怎麼排?寫到一半冒出一堆 if/else,最後連自己都看不懂當初想做什麼
或者你試過 TDD,但總覺得哪裡不太對勁。紅燈、綠燈、重構的流程你知道,但每次做起來就是卡卡的,好像照著食譜做菜,味道卻差了一截。你不確定是哪一步出了問題,但就是覺得「應該不只是這樣」
又或者你想學正統的方法論,而不是自己摸索。書讀了、影片也看了,但就是缺少一個機會讓你完整地跑一遍,從頭到尾體驗 TDD 的節奏和手感
如果你對其中任何一個有共鳴,往下看看這堂課在做什麼
在 AI 時代,為什麼更需要學 TDD?
AI Coding 工具可以在幾秒鐘內產出大量程式碼。但產出跟掌控是兩回事
AI 擅長 How——你告訴它要什麼,它很快就能寫出來。但 What 和 Why 是 AI 回答不了的。你到底要做到什麼程度?這段邏輯為什麼要這樣設計而不是那樣設計?這些問題只有你能回答
TDD 的價值就在這裡。它是一種思考方式,不是一種寫測試的技巧
在你動手寫程式碼之前,TDD 先幫你釐清「到底要解決什麼問題」。每一步都有測試保護,你隨時知道自己在哪、下一步要去哪。程式碼也因此變得好維護、好擴展。這種掌控力,在 AI 時代反而變得更稀缺
當 AI 能快速產出程式碼時,能不能判斷這些程式碼是對的、能不能掌控改動的範圍——這些能力反而更值錢
這堂課會帶你走過什麼?
Red → Green → Refactor 核心循環
TDD 最核心的節奏就是紅燈、綠燈、重構。三個步驟看起來直覺,但實際做起來有很多你沒預料到的眉角
什麼是 Baby Step?為什麼每一步都要小到不能再小?因為步伐越小,出錯的時候你越容易找到問題在哪裡。跟在黑暗中用手電筒照路一樣,每次只照一小步,走起來反而最穩
為什麼有時候要「故意」寫出重複的程式碼?因為在 TDD 的世界裡,重複不是壞事——它是重構的燃料。先讓測試通過,看到重複的模式,再消除它。這跟我們平常「一開始就要寫出完美的程式碼」的直覺完全相反
課程中會帶你體驗三種 TDD 的實作方式:假實作 (Fake It)、三角定位法 (Triangulation)、明確實作 (Obvious Implementation)。什麼時候該用哪一種,做過之後你就會有感覺
需求分析與測試案例設計
很多人以為 TDD 的起點是寫測試。不是。TDD 的起點是想清楚「這個需求到底要解決什麼問題」
拿到一個需求之後,你要做的第一件事不是打開 IDE,而是拆解:哪些行為需要被驗證?這些行為可以用什麼樣的測試案例來表達?測試案例之間的順序該怎麼排?
順序這件事比你想的更重要。先做哪一個測試,會直接影響後面的開發節奏。選對了,後面一路順;選錯了,你會卡在半路不知道怎麼往前走。這也是很多人嘗試 TDD 卻覺得「卡卡的」的原因之一——不是 TDD 有問題,是測試案例的順序沒有想好
課程中會帶你練習怎麼從需求出發,建立測試案例清單,然後決定最佳的執行順序
重構的藝術
寫測試讓你有信心,重構讓程式碼越來越好。但重構不是想改就改,它有節奏、有方法
什麼時候該動手?什麼時候先忍住?怎麼找出重複的地方再逐步消除,同時確保測試一直維持在綠燈?這些判斷沒辦法光靠讀書學會,要做過才有感覺
好的程式碼讀起來像一段故事,你看得出它在做什麼、為什麼這樣做。重構就是把那些不清楚的部分,一點一點打磨到清楚為止
AI 時代的 TDD 新思維
Classic TDD 的方法論講完之後,這堂課還會往 AI 時代的方向走
AI 產出的程式碼,你怎麼確保它是對的?測試是你的安全網。當需求改變,你怎麼知道改動不會搞壞其他地方?靠的也是測試
課程還會延伸到幾個跟 AI 相關的方向
- SDD (Spec Driven Development):規格驅動開發的概念與實作,把 TDD 的精神帶到 AI 時代
- 講師自己開發的 TDD 學習工具,幫助你在課後持續練習
在 AI Agent 時代,拆解需求和設計這件事沒有不見。工具在變,但該做的事情還是要做
課程怎麼進行?
這是一堂以實作為主的 Workshop,不是坐著聽講的課程
整堂課你會跟著講師完整地跑過 TDD 的流程——需求分析、測試設計、紅燈、綠燈、重構,一路走到底。兩個 Lab 練習讓你實際動手,不只是聽懂而已
TDD 的手感靠練出來的,光看書不夠。你需要實際做過一輪完整的循環,才會知道那個節奏感是什麼
學員怎麼說?

「今天感覺自己和 TDD 突然距離變很近」— rorywang8
「課程真的太多乾貨一時真的說不完(還有彩蛋!之後會拿來當自己的教練)」— rorywang8

「這堂課不只是教怎麼寫 TDD,而是把測試、邏輯跟重構全部都在一起,讓我收穫滿滿」— ashley_qing0821
「沒想到 test case 的順序也是有意義的,講師帶著我們去思考這個測試是為了完成哪一段的邏輯。讓我意識到每一個 test case,其實都是在一步一步把邏輯的行為跟設計推導出來」— ashley_qing0821

「在過程中可以聽到書上沒有提到的細節和思考方式,讓我能回頭檢視自己之前練習時卡的地方」— 郭柏均
「CP 值非常高,內容很超值」— 郭柏均

「沒想到 AI Coding 工作坊課程當道,仍有機會參與到實打實的手工藝課程」— throw.in.pooooool
適合誰來上?
- 聽過 TDD 但一直沒機會好好練習,或者試過幾次覺得卡卡的
- 想建立正確的 TDD 開發習慣,而不是自己摸索
- 看過 Kent Beck《Test Driven Development: By Example》(測試驅動開發:案例導向的逐步解決之道) 或 Uncle Bob《Clean Craftsmanship》(無瑕的程式碼 軟體工匠篇),但實際上手還是沒把握
- 想知道 TDD 怎麼跟 AI 輔助開發結合
- 希望提升程式碼品質與開發信心
- 想改善開發思維,在專案中真正落實 TDD
課前準備
- 熟悉你的開發工具 (IDE),IDE 的熟練程度會直接影響你的練習速度,快捷鍵和測試執行方式建議課前先確認順手
- 如果時間允許,可以先翻閱 Kent Beck《Test Driven Development: By Example》(測試驅動開發:案例導向的逐步解決之道) 或 Uncle Bob《Clean Craftsmanship》(無瑕的程式碼 軟體工匠篇),會讓你在課堂上更有感覺
常見問題
Q:需要先會什麼程式語言?
課程範例使用 JavaScript,但 TDD 的觀念是通用的。只要你有基本的程式開發經驗就可以參加
Q:我完全沒寫過測試,可以上嗎?
可以。課前會提供簡單的測試框架範例讓你先熟悉,課程中也會從基礎開始帶
Q:我已經會 TDD 了,還需要上嗎?
如果你照著流程走,但總覺得哪裡不太對,這堂課會幫你釐清很多細節。很多學員的回饋是「原來我之前的理解有偏差」。書上沒寫的那些思考方式和小技巧,往往就是讓你從「會做」到「做好」的關鍵
Q:課後有什麼資源?
提供示範 repo(含完整 commit 歷史),可以回頭對照每一步的變化。課後有問題也可以在相關 Discord 頻道討論
對測試和 TDD 有興趣?
之前寫過一系列跟測試相關的文章,有興趣可以看看
報名
- 日期:2026/04/18 (六)
- 時間:10:00 - 17:00 (中午休息一個小時,不供餐,請自行安排用餐)
- 費用:NT 2,800- (曾上過任何一門課程的舊學員優惠價 NT 2,500-)
- 報名連結:luma.com
注意事項
- 本活動不開發票
- 報名繳費後恕不退費(可轉讓名額給其他人)
- 如果到時候無法開課,將全額(無息)退還所有費用
- 報名後請記得一定要收信,報名後請記得一定要收信,報名後請記得一定要收信
圖片來源:AI 產生