2019/03/21
這次活動是敏捷專家學會,邀請到泰迪軟體創辦人 Teddy Chen 來,從Bowling Game Kata 練習影片了解測試驅動開發(TDD)、重構、實例化規格(Specification by Example)、軟體開發最難的兩件事、迭代與增量開發、小批量生產、消除浪費、通用語言(Ubiquitous Language)、敏捷宣言與測試涵蓋率等觀念。
首先什麼是 Kata,其實就是套路的意思,意指刻意練習的活動,有固定步驟的開發。
Bowling Game Kata 這支影片其實就是一個學習測試驅動開發與重構的套路,以保齡球的計分規則為例子,從測試出發撰寫出記分規則程式。
影片中會先講解保齡球的每一條記分規則,再來設計程式所需要的模型與方法,再逐步從全部未得分開始寫測試案例,考慮Spare、Strike狀況最後寫出全倒的案例。
(影片的撰寫步驟省略…有興趣可以自行觀看)
那我們了解記分規則是不是就可以來寫程式了?當然不行,還需要搭配上實際的案例才有辦法著手進行。
此時聽眾提問:
Q1. 如何找到最少的案例進行有效的測試? A1. 要視需求而定,測試永遠測不完,我們期望,也做到的就是降低測試的數量,並達到符合多種情況。
Q2. 案例怎麼來? A2. 客戶、老闆、需求單位等。
看完整支影片,我自己觀後感是:
先寫測試再說,測試結果符合後再回頭重構,加入新的狀況時重複執行測試,再進行修改到不同狀況的測試案例都能通過測試,逐步完成後再往下完成。
Teddy 有提到一個滿重要的觀念:迭代與增量。
那什麼是迭代?什麼是增量?
迭代:相同的步驟重複執行。
增量:如字面上的意思,增加產出、內容。
這時 Teddy 也提到兩個有趣的狀況
- 有迭代無增量
- 無迭代有增量
這兩種是什麼樣的狀況?
第一種狀況,滿明顯的案例就是「開會」,可能每天都會有開會,但是卻沒有實際的產出,就是屬於有迭代無增量。
第二種狀況,以瀑布式開發為例,以一次的週期、階段為區間來看就是屬於無迭代有增量。
總觀來說,測試驅動開發這個方法其實也很類似Scrum開發。
設計測試案例的同時也在確認規格(規則)是否如需求,再進行測試程式的撰寫,每當完成一次測試案例後,再檢視程式中是否有能優化的部分,將有共用的部份抽出來,以達到重構目的。
以上。