優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利
優(yōu)惠活動(dòng) - 12周年慶本月新客福利

測(cè)試驅(qū)動(dòng)開(kāi)發(fā)與行為驅(qū)動(dòng)開(kāi)發(fā)有什么不同?

TDD的學(xué)習(xí)難度很大。我認(rèn)為BD在很多方面都是對(duì)TD0的科充和修 BDD是在TDD出現(xiàn)5年之后才面市的,BDD是TDD的延續(xù),因?yàn)檎?。BDD修正了我們對(duì)于例試的定義和命名,還對(duì)編寫(xiě)這些測(cè)試的方法以及適宜人員提出了一定的建設(shè)性意見(jiàn)。在過(guò)去六七年中,BDD一直在向前發(fā)展一也可能有8年時(shí)間了,我認(rèn)為是從200年開(kāi)始的。所以,對(duì)于我而育,現(xiàn)在BD更多是關(guān)于利益相關(guān)者、測(cè)試人員、程序員和用戶之間的交流。
 
在快速變化的環(huán)境中,持續(xù)集成和測(cè)試將發(fā)揮什么作用?它是否總是能發(fā)揮應(yīng)有的作用?
 
我們?cè)谝惶靸?nèi)總會(huì)收到許多代碼修改請(qǐng)求,而且會(huì)在一天內(nèi)做多次修改,也會(huì)在一天內(nèi)多次部署代碼。在這種快速變化的環(huán)境中,真的不需要所謂的執(zhí)行規(guī)范,因?yàn)槲覀兛梢杂闷渌姆答仚C(jī)制來(lái)替代BDD或執(zhí)行規(guī)范。但是,這并不意味著執(zhí)行規(guī)范、BDD、 Cucumber或類(lèi)似的東西不重要,實(shí)際上還是要由具體環(huán)境而定的。


 
根本問(wèn)題在于,為什么項(xiàng)目一開(kāi)始就要編寫(xiě)測(cè)試?我們之所以編寫(xiě)測(cè)試,是因?yàn)槲覀兿嘈懦掷m(xù)集成。什么是持續(xù)集成呢?持續(xù)集成是一種反饋機(jī)制,它能夠說(shuō)明我們正在做的事情正是業(yè)務(wù)所需要的,所以它是一個(gè)用戶需要的特性,而且它要求編寫(xiě)的代碼不會(huì)破壞現(xiàn)有的其他特性。我們編寫(xiě)測(cè)試來(lái)強(qiáng)化代碼和保證代碼不會(huì)出現(xiàn)問(wèn)題,并且通過(guò)測(cè)試來(lái)獲得反饋。持續(xù)集成的關(guān)鍵是給處于特定開(kāi)發(fā)周期里的開(kāi)發(fā)人員提供反饋周期。最重要的就是反饋,而不是得到反饋的方式。所以,在一些變化速度不快的環(huán)境中,單元測(cè)試或 Cucumber測(cè)試(或其他測(cè)試框架)就是能夠提供這種反饋的機(jī)制。在我們現(xiàn)在所處的環(huán)境中,它的不同之處是最終用戶數(shù)量較少,所以我們獲得反饋的速度更快。在部署到生產(chǎn)環(huán)境之后,由于不用編寫(xiě)測(cè)試就可以直接從用戶獲得反饋,所以可以更快更高效地獲得反饋。更快的反饋方式是,用戶直接面對(duì)面地告訴我們:“請(qǐng)幫我修改一下這個(gè)字體,請(qǐng)幫我修改一下這個(gè)單元格的背景顏色。”如果開(kāi)發(fā)者可以直接獲得反饋,修改后直接推送到生產(chǎn)環(huán)境,這種速度會(huì)快很多,因?yàn)樗麄儾恍枰ǜ嗟臅r(shí)間去編寫(xiě)測(cè)試和等待反饋。
 
我已經(jīng)認(rèn)識(shí)到這一點(diǎn),但是許多公司和大多數(shù)產(chǎn)品并沒(méi)有采用這種方式。我認(rèn)為,BDD能夠提供更多的執(zhí)行規(guī)范。我認(rèn)為它有很大價(jià)值,道理很簡(jiǎn)單:當(dāng)無(wú)法快速響應(yīng)和靠近最終用戶時(shí),我們需要使用其他交流方法獲取反饋,而 Cucumber這樣的BDD框架正好能發(fā)揮它們的作用運(yùn)維人員和開(kāi)發(fā)人員都可以使用 Cucumber等框架去編寫(xiě)測(cè)試。
 
在我的上一家公司里,有幾位同事在 Norwegian National Dairy(家奶牛養(yǎng)殖公司)等公司的項(xiàng)目中使用了 Cucumber框架。他們的軟件確實(shí)很難測(cè)試,因?yàn)椴煌哪膛S胁煌娘曫B(yǎng)流程。軟件里有許多復(fù)雜的業(yè)務(wù)規(guī)則,而他們編寫(xiě)的系統(tǒng)需要處理所有的業(yè)務(wù)規(guī)則。他們對(duì)一位年近60歲的養(yǎng)殖專(zhuān)家進(jìn)行了培訓(xùn)。她并不是程序員,但了解養(yǎng)殖技術(shù)。他們教她如何用 Cucumber描述軟件的工作方式,然后她就一直寫(xiě)這方面的東西。在她寫(xiě)出需求之后,開(kāi)發(fā)人員就根據(jù)她描述的業(yè)務(wù)規(guī)則實(shí)現(xiàn)相應(yīng)的特性。培訓(xùn)過(guò)程很簡(jiǎn)單,因?yàn)?Cucumber從一開(kāi)始就是面向非程序員設(shè)計(jì)的。所以,我認(rèn)為教會(huì)非技術(shù)人員編寫(xiě)可執(zhí)行規(guī)范的方法確實(shí)適合許多團(tuán)隊(duì)使用。
 
Cucumber- Nagios的核心原理是用 Cucumber編寫(xiě)Wweb應(yīng)用的一些最終可接受測(cè)試,然后在生產(chǎn)系統(tǒng)(使用 Nagios)上運(yùn)行這些測(cè)試,通過(guò)這種方式來(lái)測(cè)試系統(tǒng)是否符合要求。因?yàn)檫@些測(cè)試現(xiàn)在是真正運(yùn)行在生產(chǎn)系統(tǒng)上,所以我們知道生產(chǎn)系統(tǒng)是正常的。此外,如果系統(tǒng)不正常那么測(cè)試會(huì)出錯(cuò)并生成警報(bào),告訴我們生產(chǎn)系統(tǒng)出現(xiàn)了什么問(wèn)題。當(dāng)然,這只是整個(gè)測(cè)試驅(qū)動(dòng)基礎(chǔ)架構(gòu)的一種模式。所以,我們改變了開(kāi)發(fā)人員長(zhǎng)期以來(lái)的工作方式,即編寫(xiě)代碼和測(cè)試代碼?,F(xiàn)在,他們可以用這些方法來(lái)測(cè)試和開(kāi)發(fā)代碼,然后我們將它們應(yīng)用到運(yùn)維上。我們把基礎(chǔ)架構(gòu)也視為代碼,可以編寫(xiě)測(cè)試,描述基礎(chǔ)架構(gòu)應(yīng)該有的狀態(tài),然后再修改網(wǎng)站建設(shè)的基礎(chǔ)架構(gòu),使這些測(cè)試能夠通過(guò),這時(shí)就說(shuō)明基礎(chǔ)架構(gòu)是正常的。
本文地址:http://m.cdrpkj.cn//article/4492.html
相關(guān)文章:
最新文章: