TDD(測試驅動開發(fā))是敏捷中非常有名的一個實踐了,談這個的人很多沈条,但真正在用的人只是鳳毛麟角。TDD一般主要指的是UTDD,但除了UTDD之外還經常被提起的還有ATDD和BDD盅弛,本文希望呈現(xiàn)的是ATDD,即是驗收測試驅動開發(fā)叔锐。本文的讀者挪鹏,我默認你已經了解了UTDD的概念和大致方法。
什么是ATDD
- 首先愉烙,ATDD不是一種測試方法論讨盒,而是一種開發(fā)方法論。
- UTDD涉及的人員僅僅是開發(fā)人員步责,那么ATDD僅僅涉及測試人員嗎返顺?不是,產品蔓肯、開發(fā)创南、測試都需要參與到ATDD中來。
- 在ATDD活動中團隊需要就需求定義出期望的質量標準和驗收細則省核,以明確而且達成共識的驗收測試計劃(包含一系列測試場景)來驅動產品的代碼開發(fā)和測試腳本開發(fā)稿辙。
- ATDD一定是基于測試自動化和持續(xù)集成的。
ATDD的基本流程
和TDD的“紅-綠-重構”類似气忠,ATDD的流程也是類似的思路(如上圖)邻储。
- 討論澄清階段
- 全組參與的針對需求和方案的討論
- 大家產出對需求和方案共同的理解
- 通過明確驗收測試方式澄清我們的實現(xiàn)方案
- 驗收測試方式將被自動化
- 開發(fā)階段
- 用明確具體的驗收測試方式來指導開發(fā)工作
- 驗收測試的自動化和特性的開發(fā)可以并行開展
- 全組成員對驗收測試的自動化負責,而不僅僅是測試人員
- 最終旧噪,我們的產品實現(xiàn)能讓所有的自動化測試通過
- 交付階段
- 我們要保證之前迭代所有的自動化驗收測試能在新交付上通過
- 給所有利益相關者演示我們的新特性
- 收集反饋吨娜,討論改進
ATDD的好處
最好的驗證一個研發(fā)團隊是否對客戶需求有統(tǒng)一的理解的方法就是對客戶如何驗收有統(tǒng)一的理解。
ATDD這樣的做法一下子就讓我想到了“七個習慣”中的以終為始淘钟,我們先澄清細化最終客戶的目標宦赠,并把自始至終都基于這個目標工作,這不就是以終為始嗎米母?
一般來說勾扭,我們認為ATDD的好處有:
- 大家對業(yè)務需求的統(tǒng)一理解
- 通過自然語言來描述需求
- 是可以運行的需求或實例
- 是活著的文檔
為了更好的把ATDD和UTDD區(qū)分開來,你可以嘗試記住一句話:
UTDD是為了讓你Do things right铁瞒,但ATDD是為了你Do right things妙色。”
一個方法:實例化需求
一個列子:
測試就是需求說明慧耍,需求說明就是測試
一個工具:Robot framework
Robot framework是一個開源的自動化測試框架身辨,它通過“keyword-driven” 的方式編寫測試案例丐谋,是一個非常適合用來實踐ATDD的工具。
官網(wǎng):Robot Framework
一個補充:探索性測試
基于拋開了軟件系統(tǒng)復雜性的user story而寫的驗收用例煌珊,往往也不可避免在測試覆蓋率上會遺漏一些細節(jié)上的需求号俐,特別是非功能性的需求。沒有人工參與的自動化測試定庵,提高了效率吏饿,但也不可避免的阻礙了測試案例的改進,使得殺蟲劑效應明顯洗贰。
所以在引入ATDD和CI/CD后找岖,組織必須也要同時引入探索性測試陨倡,不斷完善自動化測試的不足敛滋。
當然探索式測試也可以是自動化的,關于探索式測試兴革,以后再談绎晃。