來自ObjectMentor的Tim Ottinger寫道:“如果你正在進行真正的TDD,那么你的測試覆蓋率應該很高,因為你只有編寫出產品級代碼才能滿足測試的部分!边@很巧妙地表明,TDD對已有代碼的測試覆蓋率幾乎沒有什么影響。
我并不是說代碼覆蓋率應該很低,只是說隨著我們的進展,我們寫的每個獨立的測試應該對我們的代碼覆蓋率影響非常小……這是一個很令我感興趣的想法。
通過示例,Andy Glover向我們說明了代碼覆蓋的度量可能會給我們帶來了錯誤的安全感。對于代碼覆蓋的度量可能會告訴你哪些代碼沒有被測試,但不能準確地告訴你哪些代碼被測試過了。同樣地,Tobias Schlitt認為:對代碼覆蓋的度量是很重要的,因為它會告訴我們哪部分是我們沒有覆蓋到的。
誠然,一個測試套件的高代碼覆蓋率根本不能說明代碼經過了很好的測試(假如你自己不寫代碼和測試的話)。但是反過來說是成立的:一個較低的代碼覆蓋率毫無疑問還是意味著這個測試套件并不充分。就讓我來深入分析一下代碼覆蓋率問題,看看它會給你帶來什么吧。
測試大師Testivus認為“結果因情況而異”是最好的解釋。對于那些剛開始寫測試的人來說:
現在他寫了很多代碼,但還沒有測試代碼,那他還有很長的路要走。此時把重點放在代碼覆蓋率上的話將會很郁悶,而且毫無用處。他現在最好開始寫一些測試并運行這些測試,覆蓋率問題是他之后才需要考慮的事情。
對于那些有經驗的開發者來說:……所需的測試數量依賴于很多因素,而且在“需要考慮哪些因素”這個問題上,她比我更清楚,畢竟代碼是她寫的。雖然沒有那種簡單明了的答案,但她還是足以應付這個事實。
最后,對于那些只想得到答案的人來說:第三個程序員想得到僅僅是簡簡單單的答案——即便事實上簡簡單單的答案并不存在……而且(即便有)他在稍后并不會遵循這些答案。
就象在這些Blog中說的那樣,測試的關注點在于測試給質量檢驗帶來的益處。從這個角度出發,我們應該意識到,對測試覆蓋率的度量可以告訴我們遺漏了什么,而不是告訴我們哪些做的很好。
文章來源于領測軟件測試網 http://www.kjueaiud.com/