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