TDD容易被忽略的五大前提
TDD不僅僅是一項技術(shù),它還是一種完整的編程風格,一種相關(guān)行為和思想的綜合系統(tǒng)。TDD的五個前提為我們提供了一個操作閉環(huán),就像每個TDD實踐者呼吸的空氣一樣。
軟件教練GeePaw Hill在eXperience Agile 2018大會上談到了TDD的五個容易被忽略的前提。InfoQ通過問答、摘要和文章的形式報道了這次會議。
Hill表示,測試驅(qū)動開發(fā)(TDD)的五個前提構(gòu)成了幾乎所有TDD實踐的基礎,它們將我們與這種測試驅(qū)動方法聯(lián)系在一起。
Hill提出的五個前提是:
金錢前提——我們是為了金錢。
判斷前提——我們將依賴做出局部決策的個人。
相關(guān)性前提——內(nèi)部質(zhì)量是生產(chǎn)力。
鏈接前提——我們主要測試非常小的部分。
指導前提——測試和可測試性是一等設計參與者。
Hill說,當你在實施TDD時,這些前提是不可見的,但它們?nèi)匀环浅V匾T谶M行TDD時,你必須牢記這些。
金錢前提是關(guān)于資金的來源。TDD不是關(guān)于測試、改進質(zhì)量或工藝。Hill說,TDD的目標是更快地交付更多的價值,就是為了金錢。
判斷前提意味著我們完全依賴個人的判斷。Hill認為,他自己每次都在做同樣的事情,但對于其他人來說卻不是這樣。TDD不是編碼算法,當你在進行TDD時,必須做出決策。
相關(guān)性前提是指內(nèi)部質(zhì)量和生產(chǎn)力是相關(guān)的。Hill說,它們之間有著直接的關(guān)系,一起起起伏伏,因為它們都依賴于技能和領(lǐng)域知識等東西。Hill認為,保持代碼的良好狀態(tài)并不只是個可選項。
鏈接前提告訴我們,鏈的測試方法是測試鏈中的每個鏈接。程序被分成較小的部分,你必須對這些部件進行測試。Hill說,測試整個鏈的成本很高,很難編寫測試用例并維護好它們,但是測試鏈接的成本卻是最低的,它提供了最高的覆蓋率。
指導前提是說測試和可測試性是設計的一等參與者。Hill說,如果你沒有可測試的設計,其實就是沒有設計。你一直在質(zhì)疑如何進行測試,以及到目前為止測試是如何進行的,從第一行代碼到最后一行代碼。他說,你必須改變你的設計,讓測試盡可能變簡單。
在進行TDD時,這些前提將在整個過程中發(fā)揮作用。Hill說,它們是隱形的,就像你呼吸的空氣一樣。
在演講結(jié)束后,InfoQ采訪了GeePaw Hill。
InfoQ:了解TDD前提為什么會如此重要?
GeePaw Hill:如果我們沒有意識到這些前提,就很有可能會搬起石頭砸自己的腳。對于其中的每一個前提,我都能舉出例子,但還是讓我們來看看相關(guān)性前提吧。
TDD實踐者對代碼的內(nèi)部質(zhì)量非常著迷,因為他們知道代碼且與他們的生產(chǎn)力直接相關(guān)。不知道的人很容易將影響內(nèi)部質(zhì)量的工作視為一種“清潔”行為。無論人們認為洗碗有多重要,但事實是你可以長時間使用臟盤子卻不會受到任何傷害。你可以把清潔工作延后,因為現(xiàn)在你需要的是食物,而不是干凈的盤子。你現(xiàn)在需要更多的食物,所以你“這一次”可以跳過洗碗這件事。
但是如果不洗碗就意味著你現(xiàn)在的食物也會減少呢?內(nèi)部質(zhì)量并不是清潔工作,因為它是影響生產(chǎn)力的一個主要因素,而不只是一個錦上添花的東西。不良因素所造成的負面生產(chǎn)力效應是非常迅速的,比如糟糕的命名、引入變量和初始化之間的長時間延遲等。理解相關(guān)性前提的人永遠不會將內(nèi)部代碼質(zhì)量僅僅視為一個可選項。
InfoQ:我們?nèi)绾翁岣逿DD技能?
Hill:TDD通常被視為一項簡單的技術(shù),但實際上它確實是一種整體的編程風格,而不只是一種新的附加機制,它是相關(guān)行為和思想的一種綜合系統(tǒng)。空手道技術(shù)熟練的人被稱為karetekas,而在柔道中他們被稱為judoka。從古老的風格到現(xiàn)代的綜合論,有點像從kareteka到judoka。它涉及很多不同的肌肉群、不同的動作、不同的想法。
話說回來,為了獲得豐富的技能,我們必須做同樣的事:
老師或?qū)熆梢詭椭阃瓿蛇@三件事,但他們不能替你去做。與所有復雜的學習一樣,TDD沒有捷徑。
查看英文原文:
https://www.infoq.com/news/2018/11/premises-tdd
總結(jié)
以上是生活随笔為你收集整理的TDD容易被忽略的五大前提的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react路由传参
- 下一篇: 使用注解装配Bean