測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)是成都小程序開(kāi)發(fā)確保小程序質(zhì)量的最佳方法之一。
通過(guò)遵循TDD方法,開(kāi)發(fā)人員可以創(chuàng)建可維護(hù)的代碼并減少錯(cuò)誤。
但是,不僅程序員可以從測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)中受益,而且可以從測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)中受益。企業(yè)家和產(chǎn)品所有者也將從中受益。在本文中,我們將討論如何使用TDD方法來(lái)減少時(shí)間并節(jié)省小程序項(xiàng)目的成本。
簡(jiǎn)而言之,TDD是通過(guò)遵循以下規(guī)則的較短開(kāi)發(fā)周期來(lái)實(shí)現(xiàn)的:“首先編寫(xiě)單元測(cè)試,然后編寫(xiě)代碼,然后進(jìn)行重構(gòu),然后重復(fù)”。單元測(cè)試是自動(dòng)測(cè)試,用于檢查功能是否按預(yù)期工作。您的第一個(gè)單元測(cè)試應(yīng)該失敗,因?yàn)樗窃谀鷽](méi)有任何代碼庫(kù)之前編寫(xiě)的。此措施可防止開(kāi)發(fā)人員編寫(xiě)與給定測(cè)試不符的不必要的代碼。編寫(xiě)代碼后,它必須通過(guò)單元測(cè)試。但是,即使它通過(guò)了測(cè)試,代碼通常也需要完善?重構(gòu)是技術(shù)性更高的術(shù)語(yǔ)?使其達(dá)到真正的優(yōu)雅。TDD非常適合普遍接受的迭代式項(xiàng)目管理方法。
盡管TDD擁護(hù)者眾多,但一些開(kāi)發(fā)人員對(duì)此方法表示懷疑。例如,一些開(kāi)發(fā)人員聲稱,測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)會(huì)花費(fèi)大量的時(shí)間和精力來(lái)編寫(xiě)測(cè)試,而不是進(jìn)行實(shí)際的工作。當(dāng)然,這有些道理。TDD在開(kāi)發(fā)初期需要時(shí)間。但是隨著時(shí)間的推移,TDD會(huì)有效降低開(kāi)發(fā)團(tuán)隊(duì)的資源需求。這是為什么在您的下一個(gè)小程序項(xiàng)目中必須使用TDD的幾個(gè)原因。
任何項(xiàng)目經(jīng)理的噩夢(mèng)都是范圍的蔓延–工作范圍的任何意外增長(zhǎng)都會(huì)導(dǎo)致項(xiàng)目交付的延遲。范圍爬網(wǎng)可能由于各種原因而發(fā)生:任務(wù)定義不明確,對(duì)項(xiàng)目要求的誤解,缺少文檔等。有許多旨在減輕范圍爬網(wǎng)的方法,而TDD就是其中之一。
正如我們剛剛提到的,發(fā)生范圍蠕變的一個(gè)常見(jiàn)原因是缺乏明確定義要求的文檔。這個(gè)問(wèn)題可以通過(guò)測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)來(lái)緩解。在TDD環(huán)境中,開(kāi)發(fā)人員編寫(xiě)單元測(cè)試以測(cè)試特定段?代碼單元?。單元測(cè)試用作描述應(yīng)實(shí)現(xiàn)的精確功能的規(guī)范。因此,規(guī)范良好的測(cè)試會(huì)阻止開(kāi)發(fā)人員編寫(xiě)多余的代碼。TDD可幫助開(kāi)發(fā)人員專注于必要條件并防止鍍金prevents添加項(xiàng)目要求中未指定的不必要或不需要的功能。
TDD方法論的一部分是重構(gòu)或重組工作代碼以提高其可讀性并優(yōu)化其實(shí)現(xiàn)。重構(gòu)有助于設(shè)計(jì)良好的系統(tǒng)架構(gòu)?在某些情況下,使用非常好的代碼編寫(xiě)的代碼,即使非程序員也可以閱讀并了解正在發(fā)生的事情。
此外,TDD提倡良好的編碼原則,包括DRY,KISS,YAGNI和SOLID。
DRY(不要重復(fù)自己)原理告訴開(kāi)發(fā)人員避免在同一系統(tǒng)的不同部分重復(fù)相同的代碼,這就是為什么有時(shí)也將其稱為DIE原理(重復(fù)就是邪惡)的原因。DRY建議開(kāi)發(fā)人員使用類和函數(shù)來(lái)封裝系統(tǒng)功能并維護(hù)一致的代碼庫(kù)。
KISS(保持簡(jiǎn)單,愚蠢?。┰瓌t建議開(kāi)發(fā)人員不要重新發(fā)明輪子,而要構(gòu)建簡(jiǎn)單明了的體系結(jié)構(gòu)。KISS的本質(zhì)是避免過(guò)度設(shè)計(jì)的解決方案。
YAGNI(您根本不需要)原理與鍍金抗?fàn)帯e兘鹚坪鯚o(wú)害,特別是如果開(kāi)發(fā)人員渴望增強(qiáng)現(xiàn)有功能來(lái)取悅客戶的話。但是,這會(huì)導(dǎo)致額外的開(kāi)發(fā)時(shí)間,這可能會(huì)導(dǎo)致項(xiàng)目延遲或客戶不滿。YAGNI明確指出:開(kāi)發(fā)人員應(yīng)僅執(zhí)行分配的任務(wù),并避免添加過(guò)多的功能。
SOLID由五項(xiàng)原則合而為一:?jiǎn)我宦氊?zé),開(kāi)放式,封閉式,Liskov替代,接口隔離和依賴關(guān)系倒置。簡(jiǎn)而言之,SOLID聲明遵循這些原則可使應(yīng)用程序更易于維護(hù)和測(cè)試。
您可能會(huì)讀到這并感到奇怪:“開(kāi)發(fā)人員關(guān)心編寫(xiě)良好,干凈的代碼,但是我能從中學(xué)到什么呢?” 實(shí)際上,易于修改,擴(kuò)展,測(cè)試和維護(hù)的優(yōu)美代碼直接關(guān)系到項(xiàng)目的成功。您的代碼越整齊,團(tuán)隊(duì)在添加新功能或修改現(xiàn)有代碼庫(kù)上所付出的精力就越少。
TDD是一種獨(dú)特的方法,在嚴(yán)格遵循?時(shí)?確保100%的測(cè)試覆蓋率。聽(tīng)起來(lái)令人印象深刻?由于TDD的主要重點(diǎn)是運(yùn)行測(cè)試,因此可以確保您的應(yīng)用程序可以按預(yù)期運(yùn)行,并且不需要進(jìn)行任何修復(fù)。必須指出的是,在TDD環(huán)境中,開(kāi)發(fā)人員專注于運(yùn)行測(cè)試以防止錯(cuò)誤,而不是在編寫(xiě)代碼后將其刪除。使用TDD,開(kāi)發(fā)人員可以創(chuàng)建整個(gè)測(cè)試套件tests測(cè)試集合?通過(guò)多種方式使項(xiàng)目受益。
首先,測(cè)試套件可確保對(duì)代碼庫(kù)進(jìn)行全面的測(cè)試覆蓋,因此,漏洞很少被忽視而不會(huì)彈出。其次,測(cè)試套件允許開(kāi)發(fā)人員在應(yīng)用程序準(zhǔn)備投入生產(chǎn)之前解決潛在問(wèn)題。最后,由于測(cè)試套件不斷維護(hù),因此可以保證小程序質(zhì)量。測(cè)試套件必須不斷更新,因?yàn)樾鹿δ芑驅(qū)ΜF(xiàn)有功能的修改意味著先前編寫(xiě)的測(cè)試將失敗。因此,開(kāi)發(fā)人員必須不斷更新測(cè)試套件,以確保整個(gè)開(kāi)發(fā)過(guò)程的質(zhì)量。
盡管TDD從一開(kāi)始就需要開(kāi)發(fā)人員花費(fèi)大量時(shí)間和精力,但隨著時(shí)間的流逝,此過(guò)程將導(dǎo)致持續(xù)的維護(hù)。多虧了100%的測(cè)試覆蓋率,當(dāng)添加新功能或更改現(xiàn)有功能時(shí),您不必?fù)?dān)心代碼庫(kù)會(huì)被破壞。更少的問(wèn)題等于更少的開(kāi)發(fā)人員時(shí)間,這直接影響了項(xiàng)目成本。
此外,開(kāi)發(fā)人員自己說(shuō),測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是一種比傳統(tǒng)的先編碼然后再查找錯(cuò)誤的方法更認(rèn)真的小程序構(gòu)建方法。開(kāi)發(fā)人員承認(rèn),他們以前曾經(jīng)編寫(xiě)代碼行,意識(shí)到他們的解決方案無(wú)關(guān)緊要,然后從頭開(kāi)始重新編寫(xiě)代碼。與過(guò)時(shí)的編碼實(shí)踐不同,TDD使開(kāi)發(fā)人員可以回到圖紙上,并專注于預(yù)先設(shè)計(jì)輕巧,靈活的體系結(jié)構(gòu)。
如果我們不練習(xí)測(cè)試驅(qū)動(dòng)的開(kāi)發(fā),那么我們?nèi)匀槐仨殭z查我們的代碼庫(kù),這將最終由我們手工完成。這需要很多時(shí)間。使用TDD,開(kāi)發(fā)人員可以編寫(xiě)自動(dòng)化測(cè)試,并在每次進(jìn)行新更新或更改代碼后運(yùn)行它們,而無(wú)需執(zhí)行其他工作。此外,由于手動(dòng)測(cè)試是由人工完成的,因此不能保證完整的測(cè)試范圍。TDD確實(shí)如此。
TDD使開(kāi)發(fā)人員可以專注于創(chuàng)建高質(zhì)量的解決方案,而不必修改代碼。完善的架構(gòu)和全面的測(cè)試覆蓋范圍會(huì)積極影響整個(gè)項(xiàng)目的時(shí)間表,從而降低成本。
盡管成都小程序開(kāi)發(fā)人員之間存在關(guān)于測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的優(yōu)勢(shì)的爭(zhēng)論,但我們還是站在TDD弟兄的一邊。我們的開(kāi)發(fā)人員團(tuán)隊(duì)相信TDD是小程序開(kāi)發(fā)的有前途的未來(lái)。在全美,我們?cè)O(shè)計(jì)一致的小程序架構(gòu)并確保高質(zhì)量的小程序。TDD可以幫助我們實(shí)現(xiàn)這一目標(biāo)。但是,我們也嘗試著步入客戶的行列-當(dāng)我們這樣做時(shí),我們意識(shí)到TDD同樣適用于業(yè)務(wù)。時(shí)間是企業(yè)家最有價(jià)值的資產(chǎn)之一,而TDD可以確保時(shí)間得到有效利用。我們很想聽(tīng)聽(tīng)您對(duì)TDD的想法,如有必要,請(qǐng)?為您提供一些其他原因,為什么您應(yīng)該雇用一支像我們一樣熱愛(ài)TDD的團(tuán)隊(duì)!
文章均為全美專業(yè)成都小程序開(kāi)發(fā)公司,專注于成都小程序開(kāi)發(fā)服務(wù)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://www.39247.cn/news/2457.html