軟件測試不是一個功能
今天在工作中我對一個同事說,PyDev 2.5.0 現(xiàn)在對TDD(測試驅動開發(fā))提供了很酷的支持了。我并不是一個對TDD很癡迷的倡導者,對其它事物也一樣,但仍不免激起了一場討論。這個家伙,讓我們暫叫他約翰,說:“在開發(fā)一個功能時TDD可以節(jié)省開發(fā)的時間,但有時候一個功能需求,要求的是如此的緊急,我們要盡可能快的交付這個功能,軟件測試放在以后再說。”
諸如這樣的話讓我欲哭無淚。
我極力解釋說,沒有測試,發(fā)布的代碼會存在不可想象的風險。就像這個功能非常的重要一樣,你的產(chǎn)品也會因此受到嚴重的破壞。尤其在使用Python語言時,很少有問題會在編譯期顯示出來(一個簡單的書寫錯誤就會導致運行期的一個AttributeError,甚至更遭)。我認為這種風險過高而不可接受。約翰回復說也許你說的是對的,但是否值得冒這樣的風險,這種權利把握在項目經(jīng)理手里。如果你使用TDD,實際上你是剝奪了他認為可以“放棄軟件測試以后在說”的權利。“
說實話,對于這樣的邏輯觀念,我不知道如何回答。不錯,老板有權利決定是否需要測試我的程序,但是…他應該這樣嗎?一個建筑工人被告知先把磚塊碼起來,灰泥以后再補,這樣合理嗎?
在我讀過的書本中顯示,這種想法是錯誤的。軟件測試并不是一個功能。它不是一個由客戶提出來的需求。它不是”***測一下“。
它是一個軟件的任何一段代碼的固有組成。
不錯,你可以開發(fā)出不經(jīng)測試的軟件。它甚至可以運行,就像是摞起來的磚塊看起來也是一堵墻。但如果遇到大一點的風,它有可能就會砸到某人的頭上。
你會對持這樣觀點的人做怎樣的回復?
原文鏈接:http://www.aqee.net/testing-is-not-a-feature/
【編輯推薦】