引言:
最近一直忙公司的事情治唤,一直處于混亂中泽裳,沒有安靜下來去思考笋额,這些內(nèi)容也是閑暇的晚上開始慢慢去搞冯袍,以下三篇是BDD的內(nèi)容
一.概念:
TDD:
測試驅(qū)動(dòng)開發(fā)(Test-DriverDevelopment)的簡稱,是敏捷開發(fā)中的一項(xiàng)核心實(shí)踐和技術(shù)苍鲜,也是一種設(shè)計(jì)方法論思灰。TDD的原理是開發(fā)功能代碼之前,先編寫單元測試用例代碼混滔,測試代碼確定需要編寫什么產(chǎn)品代碼洒疚。TDD的基本思路就是通過測試來推動(dòng)整個(gè)開發(fā)的進(jìn)行,但測試驅(qū)動(dòng)開發(fā)并不只是單純的測試工作遍坟,而是把需求分析拳亿、設(shè)計(jì)和質(zhì)量控制量化的過程晴股。
ATDD:
?驗(yàn)收測試驅(qū)動(dòng)開發(fā)(AcceptanceTest Driven Development)愿伴,驗(yàn)收測試驅(qū)動(dòng)開發(fā)是一種實(shí)踐。面向開發(fā)人員电湘,強(qiáng)調(diào)如何實(shí)現(xiàn)系統(tǒng)以及如何通過驗(yàn)收測試隔节。
BDD:
?行為驅(qū)動(dòng)開發(fā)(BehaviorDriven Development)的簡稱鹅经,建立在TDD的基礎(chǔ)之上,也是一種敏捷軟件開發(fā)技術(shù)怎诫,它鼓勵(lì)軟件項(xiàng)目中開發(fā)者瘾晃、QA、非技術(shù)人員或商業(yè)參與者之間的協(xié)作幻妓。主要是從用戶的需求出發(fā)蹦误,強(qiáng)調(diào)系統(tǒng)行為。以下主要使用Cucumber進(jìn)行操作(一提到BDD就能立馬想到的工具):
二.Cucumber框架(工具)
1.Cucumber介紹:
Cucumber是一種支持行為驅(qū)動(dòng)開發(fā)(BDD)的工具肉津。Cucumber讀取以純文本編寫的可執(zhí)行規(guī)范的測試用例强胰,并驗(yàn)證軟件是否符合這些規(guī)范所述。(說白了就是提供一個(gè)我們自己能理解的語言妹沙,通過語言來編寫測試用例)偶洋。Cucumber支持大多數(shù)的編程語言,如Ruby,JAVA和Python距糖,官方地址:https://cucumber.io/
2. Cucumber的特性
1)可執(zhí)行性:可以像執(zhí)行java/python…代碼一樣運(yùn)行這些規(guī)范玄窝,來驗(yàn)證和驗(yàn)收產(chǎn)品和應(yīng)用
2)規(guī)范性:可以從產(chǎn)品、運(yùn)營悍引、客戶的角度出發(fā)恩脂,相比驗(yàn)證結(jié)果,他們更關(guān)心系統(tǒng)功能的清晰描述以及需要系統(tǒng)完成什么功能(主要由產(chǎn)品人員進(jìn)行編寫吗铐,開發(fā)和測試人員嚴(yán)格的按照該規(guī)范進(jìn)行下面的操作)
3.Cucumber支持的語言輸出(它的標(biāo)準(zhǔn)是gerkin語言)
|feature|”功能”|??
|background|”功能背景描述”|
|scenario|”場景”|
|scenario outline|”場景大綱”|
|examples|”范例”|
|given|”*”,”假如”,”假定”,”假設(shè)”|
|when|”*”,”當(dāng)”|
|then|”*”,”那么”|
|and|”*”,”而且”,”并且”东亦,”同時(shí)”|
|but|”*”,”但是”|
|given(code)|”假如”,”假定”,”假設(shè)”|
|when(code)|”當(dāng)”|
|then(code)|”那么”|
|and(code)|”而且”,”并且”,”同時(shí)”|
|but(code)|”但是”|
解釋:
|feature|”功能”| 類似于一個(gè)大的模塊功能唬渗,功能(feature)下包含多個(gè)場景典阵,比如登錄模塊
|background|”功能背景描述”|對功能的描述、簡述以及解釋該模塊是做什么用的
|scenario|”場景”|? 類似于一個(gè)大模塊下的一個(gè)測試用例(case)
|scenario outline|” 場景大綱”| 與場景一樣镊逝,唯一區(qū)別于場景是場景大綱可以做數(shù)據(jù)驅(qū)動(dòng)
?|examples|”例子”| 場景的例子
?|given|”*”,”假如”,”假定”,”假設(shè)”|
|when|”*”,”當(dāng)”|
|then|”*”,”那么”|
|and|”*”,”而且”,”并且”壮啊,”同時(shí)”|
|but|”*”,”但是”|
|given(code)|”假如”,”假定”,”假設(shè)”|
|when(code)|”當(dāng)”|
|then(code)|”那么”|
|and(code)|”而且”,”并且”,”同時(shí)”|
|but(code)|”但是”|
關(guān)鍵字撑蒜,類似于測試用例中的操作步驟歹啼,如我們先要做什么,然后做什么座菠,最后做什么
3.如何使用cucumber
1.feature編寫(就是測試用例的描述)
2.生成steps(編寫代碼執(zhí)行步驟)
3.執(zhí)行steps(執(zhí)行測試用例)
4.生成測試報(bào)告