Jasonmel Online

Testing & Refactoring Workshop

2013/06/20 (Thu.)

上了三天的 Testing & Refactoring Workshop,藉由大量的 coding 來體會之前一直很沒有感覺的 TDD (Test-Driven Development)。基本上就是先寫 test case,再寫對應邏輯的 code,然後三不五時測一下以確保程式還維持在正確的狀態。由於有 100% 的 coverage rate,中間可以放心地配合 refactoring 來把不好的 code smells 改好。而為了減少測試成本,test case 都盡量是 microtesting,甚至遇到 I/O 或 loading 重的部份也盡量改用 mocking 來模擬,除了成本考量,也減少測試上的 dependency。

這種感覺有點熟悉,原來在 design thinking 或是 scrum 也都是類似的想法。Design thinking 裡面先從 empathy 開始,user 的感受就是一個 idea 的 test case,經由發散收斂產生出許多 ideas,透過快速的 prototyping 以及 user 實際操作得到的 feedback 來驗證這個 idea。Scrum 也有同樣的 pattern,planning meeting 定下來的照理說不能再更動的 tasks 就是之後要驗證的 test case,daily sync-up meeting 算是每天都小小測試一下目前做的方向對不對,retrospective meeting 則是一個 sprint 下來的整體總測試。大致上都是把一個很大的項目切成小塊各個擊破,除了可以迅速調整方向,避免不必要的錯誤投資,也讓整個大項目較為模組化,提供許多彈性、擴充性、以及可維護性。

TDD 原來是這麼一回事啊!