日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
一文講清楚什么是行為驅(qū)動(dòng)開發(fā)

行為驅(qū)動(dòng)開發(fā)(Behavior-Driven Development, BDD)的概念來(lái)自于測(cè)試驅(qū)動(dòng)開發(fā),強(qiáng)調(diào)使用DSL(Domain Specific Language,領(lǐng)域特定語(yǔ)言)描述用戶行為,定義業(yè)務(wù)需求,是需求分析人員、開發(fā)人員與測(cè)試人員進(jìn)行溝通的有效方法。DSL是一種編碼實(shí)現(xiàn),相比自然語(yǔ)言更加精確,又能以符合領(lǐng)域概念的形式滿足所謂“活文檔(Living Document)”的要求。可以說,行為驅(qū)動(dòng)開發(fā)將編碼實(shí)現(xiàn)與業(yè)務(wù)行為描述***地結(jié)合起來(lái),走出了一條業(yè)務(wù)分析人員、開發(fā)人員與測(cè)試人員都能接受的中庸之道。

成都創(chuàng)新互聯(lián)從2013年成立,先為青浦等服務(wù)建站,青浦等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為青浦企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

行為驅(qū)動(dòng)開發(fā)的核心在于“行為”。當(dāng)業(yè)務(wù)需求被劃分為不同的業(yè)務(wù)場(chǎng)景,并以“Given-When-Then”的形式描述出來(lái)時(shí),就形成了一種范式化的領(lǐng)域建模規(guī)約。編寫領(lǐng)域特定語(yǔ)言的過程,其實(shí)就是不斷發(fā)現(xiàn)領(lǐng)域概念的過程。因此,采用BDD進(jìn)行開發(fā),最重要的產(chǎn)出不是可以自動(dòng)運(yùn)行的驗(yàn)收測(cè)試,而是它提供了團(tuán)隊(duì)交流的平臺(tái),并在其約束之下完成了領(lǐng)域建模。由于團(tuán)隊(duì)的不同角色都參與了這個(gè)過程,就保證了領(lǐng)域模型的一致性與準(zhǔn)確性。

在進(jìn)行行為驅(qū)動(dòng)開發(fā)時(shí),需要避免兩種錯(cuò)誤的傾向:

  • 從UI操作去表現(xiàn)業(yè)務(wù)行為
  • 描述技術(shù)實(shí)現(xiàn)而非業(yè)務(wù)需求

例如,我們要編寫“發(fā)送郵件”這個(gè)業(yè)務(wù)場(chǎng)景,可能會(huì)寫成這樣:

 
 
 
 
  1. Scenario: send email 
  2.  
  3. Given a user "James" with password "123456" 
  4. And I sign in 
  5. And I fill in "mike@dddpractice.com" in "to" textbox  
  6. And fill in "test email" in "subject" textbox 
  7. And fill in "This is a test email" in "body" textarea 
  8.  
  9. When I click the "send email" button 
  10.  
  11. Then the email should be sent sucessfully 
  12. And shown with message "the email is sent sucessfully" 

該業(yè)務(wù)場(chǎng)景描寫的不是業(yè)務(wù)行為,而是用戶通過UI進(jìn)行交互的操作流程。這種方式實(shí)則是讓用戶界面捆綁了你對(duì)領(lǐng)域行為的認(rèn)知。準(zhǔn)確地說,這種UI交互操作并非業(yè)務(wù)行為,例如上述場(chǎng)景中提到的button與textbox控件,與發(fā)送郵件的功能并沒有關(guān)系。或許換一個(gè)UI設(shè)計(jì),使用的控件又完全不同了。

那么換成這樣的寫法呢?

 
 
 
 
  1. Scenario: send email 
  2.  
  3. Given a user "James" with password "123456" 
  4. And I sign in after OAuth authentification 
  5. And I fill in "mike@dddpractice.com" as receiver 
  6. And "test email" as subject 
  7. And "This is a test email" as email body 
  8.  
  9. When I send the email 
  10.  
  11. Then it should connect smtp server 
  12. And all messages should be composed to email 
  13. And a composed email should be sent to receiver via smtp protocal 

該場(chǎng)景的編寫暴露了不必要的技術(shù)細(xì)節(jié),如連接到smtp服務(wù)器、消息組合為郵件、郵件通過smtp協(xié)議發(fā)送等。對(duì)于BDD而言,場(chǎng)景應(yīng)該關(guān)注于做什么(what),而不是怎么做(how)。如果在業(yè)務(wù)分析過程中,糾纏于技術(shù)細(xì)節(jié),就可能導(dǎo)致我們忽略了業(yè)務(wù)價(jià)值。在業(yè)務(wù)建模階段,業(yè)務(wù)才是重心,不能舍本逐末。

那么,該怎么寫?當(dāng)我們使用DSL編寫業(yè)務(wù)場(chǎng)景時(shí),不要考慮任何UI操作,甚至需要拋開業(yè)已設(shè)計(jì)好的UI原型,也不要考慮任何技術(shù)細(xì)節(jié)。在編寫好業(yè)務(wù)場(chǎng)景之后,可以驗(yàn)證:如果我們更換了UI設(shè)計(jì),調(diào)整了UI布局,是否需要修改業(yè)務(wù)場(chǎng)景?同理,如果我們改變了技術(shù)實(shí)現(xiàn)方案,是否需要修改業(yè)務(wù)場(chǎng)景?如下場(chǎng)景采用業(yè)務(wù)行為的形式編寫:

 
 
 
 
  1. Scenario: send email 
  2.  
  3. Given a user "James" with password "123456" 
  4. And I sign in 
  5. And I fill in a subject with "test email" 
  6. And a body with "This is a test email" 
  7.  
  8. When I send the email to "Mike" with address "mike@dddpractice.com" 
  9.  
  10. Then the email should be sent sucessfully 

我們要將DSL描述的場(chǎng)景視為一種可讀的需求規(guī)格(Specification),通過它準(zhǔn)確地表現(xiàn)領(lǐng)域知識(shí),就可以幫助我們提煉出隱含的領(lǐng)域概念。例如:

 
 
 
 
  1. Scenario: validate the given date for reporting period  
  2.  
  3. Given the reporting period as prior 13 month to report month 
  4. And the reporting month is "April 2018" 
  5. When user choose the "April 2017" 
  6. Then validation result is true 
  7. When user choose "March 2017" 
  8. Then validation result is false 

場(chǎng)景描述中的ReportingPeriod蘊(yùn)含了與財(cái)務(wù)報(bào)表相關(guān)的領(lǐng)域知識(shí),即有效報(bào)表周期為13個(gè)月,ReportingPeriod自身應(yīng)該履行驗(yàn)證給定日期是否有效的職責(zé)。

【本文為專欄作者“張逸”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】


當(dāng)前名稱:一文講清楚什么是行為驅(qū)動(dòng)開發(fā)
標(biāo)題URL:http://www.5511xx.com/article/djcceoi.html