蓋索林 Gasolin

人們總是高估一年可以完成的事,卻低估十年能完成的事

0%

我對測試的態度

pycon 2007 裡的 presentation 提到測試金字塔, 由下而上將測試歸為三類:

單元測試, 功能測試, 應用測試。

程式測試需要很多的單元測試, 一些功能測試, 少量的應用測試。

具有某個程度的單元測試可以保證代碼質量。

周蟒是我第一個包含完整測試的開源專案.然而周蟒也不是一開始就寫了測試用例.

我的經驗是"先能跑, 再求好"。在一開始先讓功能能跑,之後再想法改善或改寫。

周蟒改善或改寫的過程中, unittest, doctest(單元測試, 功能測試), 與 example test(應用測試)就是主要保證功能穩定的方式。

我覺得加入測試是我在開發周蟒過程中做出的最好決定。 當周蟒程式超過15k後, 已經進入難以將整份 code 短時間一次 Review 的階段。 這時我決定花時間為周蟒加入一部分測試用例。 我發現這麼作提昇了整個小程式的’解析度’-- nosetests 的報表告訴我: 每個簡單的功能都運行。

當我在周蟒加入了某數量的測試用例後, 周蟒的開發方式就有了質變。

由於可以提前由自動測試獲得功能結果, 讓周蟒的開發方式變得更大膽, 我可以放心地大膽試驗各種新功能, 並隨時能透過測試確認新功能對架構帶來的影響。 也得以在早期版本中即輕鬆地透過大規模的重構來增加架構的彈性。

用幾次就丟的程式/腳本當然沒加入測試的價值. 然而要維持一份可維護的程式, 加入測試是很好的方式.