代碼覆蓋率檢測---> Code Coverage
前幾天我特意搞了一下,把網(wǎng)上所有的主流的C++ Code Coverage工具都大概玩了一遍。。發(fā)現(xiàn)有好多的trick和技巧。。很多特性都搞不出來。。不過。。發(fā)現(xiàn)一個現(xiàn)象:很多很好用的軟件都是收費的。。開源的特性沒那么多。。或者很粗糙。。這個是必然情況啊!呵呵。。不過還是挺好用的。。有幾個測試沒有足夠的時間架構(gòu)起來。。連測試這些已有的都浪費我好幾天。。最后在我的電腦上搭了一個TestCocoon,杯具了。。我不是很清楚命令行的工作流程。。或者說我對Linxu一塌糊涂。。。。這個學不好還真不行啊。。Windows的Bash也學的不好。。唉。。這個慢慢來。。我每天都要進步!!!!
Code Coverage 是指被測試執(zhí)行過的代碼分支數(shù)。
對于編譯式語言的代碼覆蓋率計算,首先要在以編譯的字節(jié)碼上進行標記處理,(TestCoCoon就是這么搞的),然后開始在被標記的代碼上進行整套測試,來測量那些代碼被執(zhí)行過了。測量的詳細結(jié)果會先以一種中間形式保留下來,并最終生成報告。這個報告會顯示行和分支的測試覆蓋率。
對于動態(tài)語言,這個過程會有細微的差別,但最終結(jié)果都是一樣的:得到一個代碼覆蓋率報告。
這個數(shù)據(jù)時非常關(guān)鍵的,因為它會告訴你那些代碼沒有被測試執(zhí)行過。測試是軟件嚴謹性的保證,沒有被測試過的代碼,往往是錯誤最可能存在的地方。如果你是TDD的忠實擁護者,那你的所有代碼都會被自動測試到-------當然,一些難以考慮到的意外情況除外。
此外兩條:
1 所有的新代碼都要達到100%的單元測試覆蓋率
2 每當修復一個錯誤的時候,都要為他添加相應(yīng)的測試。