好的測試應該具備哪些特質?(中英文)

發表于:2009-06-30來源:作者:點擊數: 標簽:特質中英文
什么樣的測試算是好測試?我們又該怎么知道如何編寫好測試? Kent Beck斷定,好的測試應該具備下列條件: 1. 互相隔離的(不受其他測試的表現形式、是否存在、執行結果的影響) 2. 自動化的 3. 編寫快 4. 運行快 5. 獨一無二(為 開發 人員提供自信,而不會由
什么樣的測試算是好測試?我們又該怎么知道如何編寫好測試?

  Kent Beck斷定,好的測試應該具備下列條件:

  1. 互相隔離的(不受其他測試的表現形式、是否存在、執行結果的影響)

  2. 自動化的

  3. 編寫快

  4. 運行快

  5. 獨一無二(為開發人員提供自信,而不會由其他測試提供信息,與其他測試不相關)

  Roy Osherove補充道:好的測試有三個基本屬性:可維護、值得信賴、易于理解。

  Mike Hill的列表要更長:

  * 它會很短,通常只有十來行代碼。

  * 它不會測試運行程序內部的對象,但是會測試為了測試目的而構建的應用內部的對象。

  * 它只會調用很小的一部分代碼,通常是某個函數的某一分支。

  * 它是灰盒的形式編寫的。也就是說,它運作的方式像是黑盒,但是有時又會利用白盒的長處。(一般來說,這是避免組合問題的重要因素。)

  * 測試要符合生產代碼的編碼標準,比如,團隊目前對于優秀編碼的最佳看法。

  * 應用的眾多小測試構成了一個“提交關卡”。這就是說,開發人員可以在所有小測試通過的情況下提交代碼,否則(強烈建議、甚至不惜手段)阻止他們提交。

  * 測試應對接受測試的對象有完全的控制權,因此應是自包含的。也就是說,它不會依賴不屬于測試代碼及其依賴圖的任何其他對象。

  * 它的運行時間非常短。

  * 它會先于要測試的代碼變更之前編寫。

  * 通過一系列slip-and-fake技巧,它會避免使用所有“糟糕”的collaborator。

  * ……

  Mike和Ron Jeffries提醒我們:TDD的核心價值是要簡化設計、提升開發效率;代碼質量的提升和bug數量的減少是因此而帶來的重要好處。

  Jeremy Miller補充了良好單元測試應該具備:

  * 與順序無關,并且是隔離的。運行測試的軟件可以按照以任何順序運行。

  * 意圖明確。最好的單元測試應該能夠告訴閱讀者,一個對象的API是如何準備被調用的。

  * 易于設置。

  最后,Ed Burnette寫到:要讓你的單元測試在任何方面都可以重復;測試邊界條件,并且要一直保持測試的通過率是100%。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97