BDD 開發模式介紹
BDD (Behavior Driven Development) 行為開發驅動方法是TDD更進一步的實踐方式,你可能想說TDD的實踐方式已經有點神奇了,怎麼還有一個叫BDD的加強版。其實大體上BDD是以TDD的方式在寫test code,但是開發前期加入了更多非工程師的元素。 舉例來說,我們在寫unit test之前要先規劃test case,例如之前在MVVM章節舉的例子,PM開了一個task讓我們query特定的user list到UI來顯示,如果沒有其他人參與測試規劃的話test case就是工程師自已想,比如說我們舉的test case例子只有一個就是成功收到正確的user list資料,但現實世界不可能這麼單純,如果server request fail怎麼辦?或是如果user list為empty是否也要考慮?所以從頭到尾只有工程師自己參與的壞處就是球員兼裁判只寫自已想測試的case,如果工程師有沒想到或是不想做的test case那當然就不會被測試到。 而BDD就是改善前期test case定義這一個部份,給所有參與專案的人一起加入規畫。因為Developer,PM,QA每個角色會考慮的層面不同,一起規劃test case會讓更多的狀況被包涵進來,也就讓整個測試更加完整。但你可能會想coding的人是工程師,如果QA或PM自已寫document要怎麼讓工程師看懂?更難的是要怎麼驗證及管理工程師寫的test case? 我們可以藉由Cucumber這個Library的協助。Cucumber是一個很強大的BDD工具,support各種主流的程式語言,因為我們用Kotlin或Java都是JVM based,所以首先我們先在build.gradle裡面加入dependency dependencies { testImplementation 'io.cucumber:cucumber-java8:4.3.1' testImplementation 'io.cucumber:cucumber-junit:4.3.1' } 加人dependency後基本上你就可以開始套用BDD的流程了。如果你不想使用Cucumber的flow,加入這個dependency也不會有影響,你一樣可以使用之...