TDD容易被忽略的五大前提

TDD不僅僅是一項技術,它還是一種完整的編程風格,一種相關行爲和思想的綜合系統。TDD的五個前提爲我們提供了一個操作閉環,就像每個TDD實踐者呼吸的空氣一樣。

軟件教練GeePaw Hill在eXperience Agile 2018大會上談到了TDD的五個容易被忽略的前提。InfoQ通過問答、摘要和文章的形式報道了這次會議。

Hill表示,測試驅動開發(TDD)的五個前提構成了幾乎所有TDD實踐的基礎,它們將我們與這種測試驅動方法聯繫在一起。

Hill提出的五個前提是:

  • 金錢前提——我們是爲了金錢。

  • 判斷前提——我們將依賴做出局部決策的個人。

  • 相關性前提——內部質量生產力。

  • 鏈接前提——我們主要測試非常小的部分。

  • 指導前提——測試和可測試性是一等設計參與者。

Hill說,當你在實施TDD時,這些前提是不可見的,但它們仍然非常重要。在進行TDD時,你必須牢記這些。

金錢前提是關於資金的來源。TDD不是關於測試、改進質量或工藝。Hill說,TDD的目標是更快地交付更多的價值,就是爲了金錢。

判斷前提意味着我們完全依賴個人的判斷。Hill認爲,他自己每次都在做同樣的事情,但對於其他人來說卻不是這樣。TDD不是編碼算法,當你在進行TDD時,必須做出決策。

相關性前提是指內部質量和生產力是相關的。Hill說,它們之間有着直接的關係,一起起起伏伏,因爲它們都依賴於技能和領域知識等東西。Hill認爲,保持代碼的良好狀態並不只是個可選項。

鏈接前提告訴我們,鏈的測試方法是測試鏈中的每個鏈接。程序被分成較小的部分,你必須對這些部件進行測試。Hill說,測試整個鏈的成本很高,很難編寫測試用例並維護好它們,但是測試鏈接的成本卻是最低的,它提供了最高的覆蓋率。

指導前提是說測試和可測試性是設計的一等參與者。Hill說,如果你沒有可測試的設計,其實就是沒有設計。你一直在質疑如何進行測試,以及到目前爲止測試是如何進行的,從第一行代碼到最後一行代碼。他說,你必須改變你的設計,讓測試儘可能變簡單。

在進行TDD時,這些前提將在整個過程中發揮作用。Hill說,它們是隱形的,就像你呼吸的空氣一樣。

在演講結束後,InfoQ採訪了GeePaw Hill。

InfoQ:瞭解TDD前提爲什麼會如此重要?

GeePaw Hill:如果我們沒有意識到這些前提,就很有可能會搬起石頭砸自己的腳。對於其中的每一個前提,我都能舉出例子,但還是讓我們來看看相關性前提吧。

TDD實踐者對代碼的內部質量非常着迷,因爲他們知道代碼且與他們的生產力直接相關。不知道的人很容易將影響內部質量的工作視爲一種“清潔”行爲。無論人們認爲洗碗有多重要,但事實是你可以長時間使用髒盤子卻不會受到任何傷害。你可以把清潔工作延後,因爲現在你需要的是食物,而不是乾淨的盤子。你現在需要更多的食物,所以你“這一次”可以跳過洗碗這件事。

但是如果不洗碗就意味着你現在的食物也會減少呢?內部質量並不是清潔工作,因爲它是影響生產力的一個主要因素,而不只是一個錦上添花的東西。不良因素所造成的負面生產力效應是非常迅速的,比如糟糕的命名、引入變量和初始化之間的長時間延遲等。理解相關性前提的人永遠不會將內部代碼質量僅僅視爲一個可選項。

InfoQ:我們如何提高TDD技能?

Hill:TDD通常被視爲一項簡單的技術,但實際上它確實是一種整體的編程風格,而不只是一種新的附加機制,它是相關行爲和思想的一種綜合系統。空手道技術熟練的人被稱爲karetekas,而在柔道中他們被稱爲judoka。從古老的風格到現代的綜合論,有點像從kareteka到judoka。它涉及很多不同的肌肉羣、不同的動作、不同的想法。

話說回來,爲了獲得豐富的技能,我們必須做同樣的事:

  1. 找一個安靜的地方,讓你敞開心扉。
  2. 閱讀和研究。
  3. 練習。

老師或導師可以幫助你完成這三件事,但他們不能替你去做。與所有複雜的學習一樣,TDD沒有捷徑。

查看英文原文:

https://www.infoq.com/news/2018/11/premises-tdd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章