Andrew Glover在最近的developerWorks上發(fā)表了一篇文章《
追求代碼質(zhì)量: 不要被覆蓋報告所迷惑》,我覺得又是一篇防止被忽悠的好文章。當(dāng)然,作為單元測試的狂熱分子,作者在文章中反復(fù)強(qiáng)調(diào)的不是不要單元測試和達(dá)到較高的測試覆蓋率,而是苦口婆心地勸告大家,
高的測試覆蓋率并不代表測試良好的代碼。所以,作為項目經(jīng)理的你當(dāng)被項目成員拿著極高測試覆蓋率報告來交差時,你得留個心眼;而當(dāng)你拿著覆蓋報告去忽悠客戶的時候,是不是也要想想客戶也有可能會讀這篇文章呢?這又讓我想起幾位熱心讀者在《
我為什么討厭框架》中的
留言,所以,我得聲明一下:沒采用框架的系統(tǒng),80%不是架構(gòu)良好的系統(tǒng),但反過來不一定成立,所以不要因為采用了框架而高枕無憂;沒有單元測試或者極低覆蓋率的代碼,80%是難以維護(hù)的代碼,同樣反過來也不一定成立,所以,不要為了高測試覆蓋率而逼著項目成員編寫無用的單元測試。
稍稍記錄一下文章的主要內(nèi)容:
測試覆蓋度量行覆蓋也叫
語句覆蓋,用以指出代碼的哪些行被執(zhí)行了
分支覆蓋 則試圖度量決策點(比如包含邏輯
AND
或
OR
的條件塊)的覆蓋率
測試覆蓋的作用
- 估計修改已有代碼所需的時間
- 評估代碼質(zhì)量
- 評定功能測試
文中用
Cobertura工具來生成測試覆蓋度報告,我一直認(rèn)為沒有可執(zhí)行代碼的技術(shù)文章不是好的文章,但原文沒有給出相應(yīng)的例子下載,而如果你沒有使用
Ant甚或
JUnit的經(jīng)驗,那么搞定Cobertura可能也還是要花點工夫的,所以,如果你想偷懶的話,那就到
這里下載吧。