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