March 23 05:52~07:05
昨天介紹完《Specification By Example》今天緊接著介紹《BDD in Action》,這兩本書都是Manning出版社所出版。從約20年前買了一本Manning出版的Java網路程式設計的書之後,Teddy一直都很喜歡這個出版社的書。如果要學一樣新技術,Manning所出版的書一定是Teddy優先考量的對象。昨天提到《Specification By Example》書中介紹7個流程模式,並沒有介紹工具也沒有程式碼。《BDD in Action》剛好跟它互補,講了很多工具與程式碼。對於學習BDD的人來說,這兩本書一起服用效果更佳。
***
看圖說故事
▼下圖節錄與修改自《BDD in Action》。
圖中將BDD開發流程分成6個步驟,和昨天介紹SBE的7個流程模式很接近:
- Business goal:這一步對應到昨天SBE提到的第1個流程模式Deriving scope from goals。
- Features:這一步可視為SBE第2個流程模式Specifying collaboratively的產出物。
- Examples:相當於SBE第3個流程模式Illustrating using examples。
- Executable specifications:相當SBE第5個流程模式Automating validating without changing specifications。
- Low-level specifications:從這個步驟開始則是銜接到傳統以單元測試為主的TDD範圍,這裡的low-level specifications就是TDD中的第一個步驟,先寫一個失敗的測試案例作為production code(application code)的規格。
- Application code:就是TDD的第二個步驟,撰寫production code。如果完全對應TDD應該還有第7個步驟Refactoring(重構)才對,但上圖並沒有把Refactoring特別獨立成一個步驟,所以這個步驟可以看成寫production code加上Refactoring。
上圖步驟1~4可以視為傳統上BDD/ATDD的主打範圍,而5~6則是傳統TDD的守備範圍,而步驟4銜接到步驟5則是Teddy在〈BDD(12) 第二個開發票Scenario:從BDD到TDD〉與〈BDD(13)新劇情找到新Bug〉所介紹的轉換過程。
***
把圖展開
上圖並沒有包含SBE其他三個流程模式:Refining the specification、Validating frequently、Evolving a documentation system,下圖是書中上圖的原圖,可以看到步驟4~5展開後,包含了:
- Living documentation:對應到SEB的Evolving a documentation system
- Real-time progress reports:對應到SEB的Evolving a documentation system
- Technical documentation:對應到SEB的Evolving a documentation system
- Automatic validation:對應到SEB的Validating frequently
- Working feature:對應到敏捷宣言的Running software或Scrum的Potentially shippable product increment。
雖然圖中還是沒有特別標示SBE的Refining the specification這個流程模式,但只要把步驟2和步驟3解讀成來回探索的過程,就等於對應到Refining the specification流程模式。
***
如何閱讀
Teddy是先讀了《Specification By Example》(2011年出版)之後才讀了《BDD in Action》(2014年出版)。第一次閱讀《Specification By Example》的時候因為書中完全沒有程式範例,光是看到書中對於這7個流程模式的文字說明覺得稍嫌抽象。後來讀了《BDD in Action》之後,整個感覺的豁然開朗了起來,兩本書互相對照,幾乎可以說《BDD in Action》就是《Specification By Example》這本書的具體範例啊。
對於沒有讀過這兩本書的鄉民,看完這兩篇介紹之後,Teddy建議直接讀《BDD in Action》再回頭讀《Specification By Example》這種閱讀順序。但是,讀《BDD in Action》也有一點小門檻,因為書中所介紹的工具與程式範例非常多,真的要全部搞懂需要很有耐心學習。
***
友藏內心獨白:讀書也需要實例化範例參考比較容易理解啊。
沒有留言:
張貼留言