What BDD?
behavior driven development 行為驅(qū)動(dòng)開發(fā)
Where BDD from虐杯?
敏捷開發(fā)模式中推崇TDD(test driven development)玛歌,即先測(cè)試,后編碼擎椰。
落地到實(shí)踐中包含兩部分:
1支子、UTDD單元測(cè)試驅(qū)動(dòng)開發(fā)(unit test driven development)
UTDD需要開發(fā)在coding需求代碼前先完成測(cè)試類的編碼
2、ATDD驗(yàn)收測(cè)試驅(qū)動(dòng)開發(fā)
ATDD將驗(yàn)收標(biāo)準(zhǔn)不斷細(xì)化达舒,直至列出每個(gè)場(chǎng)景明確的輸入輸出
Why BDD值朋?
UTDD對(duì)研發(fā)而言推行難度較大,既有心理障礙巩搏,也有公司成本核算的阻礙昨登。
ATDD無(wú)以上阻礙。
假想一下贯底,產(chǎn)品提供的prd中有明確的關(guān)于每一個(gè)功能點(diǎn)的場(chǎng)景說(shuō)明丰辣,此時(shí)開發(fā)coding是否更簡(jiǎn)單?測(cè)試寫用例是否更簡(jiǎn)單丈甸?
現(xiàn)實(shí)是產(chǎn)品提供的需求不會(huì)細(xì)化到如此糯俗,通常是測(cè)試在撰寫測(cè)試用例過(guò)程中完成需求細(xì)化成每一個(gè)明確輸入輸出的場(chǎng)景。
所以我們?cè)诼涞剡^(guò)程中是推行測(cè)試先行睦擂,測(cè)試必須在開發(fā)開始coding之前提交驗(yàn)收標(biāo)準(zhǔn)得湘,也即測(cè)試用例。開發(fā)顿仇、產(chǎn)品淘正、測(cè)試共同review此驗(yàn)收標(biāo)準(zhǔn),理解達(dá)成一致方可開始coding臼闻。
ATDD落地的過(guò)程中就產(chǎn)生了BDD
BDD通常為GWT格式鸿吆,Given When Then。翻譯成中文即:當(dāng)****述呐,如果***惩淳,則****
與測(cè)試用例的風(fēng)格神似。測(cè)試用例先提交乓搬,開發(fā)coding期間思犁,測(cè)試能夠按照GWT編寫自動(dòng)化測(cè)試用例,這樣的用例也簡(jiǎn)單易懂进肯。既方便后期維護(hù)激蹲,也方便人員交接。So why not江掩?
為何推崇測(cè)試先行学辱?
測(cè)試能夠盡可能地將需求明確化乘瓤,明確至每一個(gè)用例,涉及每一個(gè)正常和異常場(chǎng)景策泣。如果開發(fā)在coding前能了解到每一個(gè)功能涉及到哪些異常場(chǎng)景衙傀,coding時(shí)就能合理規(guī)劃;反之着降,如果開發(fā)考慮不全差油,coding時(shí)勢(shì)必會(huì)遺漏很多場(chǎng)景,導(dǎo)致代碼缺陷任洞。這些缺陷放在后期發(fā)現(xiàn)蓄喇,無(wú)疑提高了整個(gè)研發(fā)成本。