March 19 14:09~14:37
測試案例執行時間過久,導致開發人員每次修改待測程式之後並沒有執行測試案例,這種現象稱為Slow Tests。衍生的問題很明顯,沒有頻繁執行測試案例,就無法確保每次修改是否破壞了原本程式的行為,久而久之導致Frequent Debugging壞味道。此外,久久才執行一次的測試案例,需要與待測程式「同步」的範圍也比較多,最後開發人員也搞不清楚到底是待測程式有錯還是測試程式有錯。最後幹脆放棄寫測試案例好了。
《xUnit Test Patterns: Refactoring Test Code》書中提到導致這個壞味道的情況有:
- Slow Component Usage:待測程式使用到的元件速度太慢。
- General Fixture:Fixture過於包山包海,目的可能是為了讓好多個測試案例一起共用。也許測試程式只要執行0.1秒,但是啟動fixture需要1秒,導致整個測試過程變得很慢。
- Asynchronous Test:為了得到非同步的呼叫的結果,有時候測試案例會多等待一些時間,以避免timeout所造成的測試失敗誤判。
- Too Many Tests:一次執行太多測試案例,那當然需要花費很長的測試時間。所以衍生出一種研究叫做test case selection,看看能不能每次只要執行與修改過的待測程式相關的測試案例即可。
***
XP有一個實務做法叫做Ten-Minute Build,反應出建構(包含執行測試)的時間不應該太久的觀點。除了套用Test Double等技巧來加速測試案例的執行以外,有時候花錢更新硬體是最快的方法。
***
友藏內心獨白:Test Double也可以加速測試案例的執行。
沒有留言:
張貼留言