coverage 測(cè)試代碼覆蓋率

測(cè)試覆蓋率导俘,簡(jiǎn)單的說(shuō)峦耘,就是評(píng)價(jià)測(cè)試活動(dòng)覆蓋產(chǎn)品代碼的指標(biāo)。測(cè)試的目的旅薄,是確認(rèn)產(chǎn)品代碼按照預(yù)期一樣工作辅髓,也可以看作是產(chǎn)品代碼工作方式的說(shuō)明文檔泣崩。進(jìn)一步考慮,測(cè)試覆蓋率可以看作是產(chǎn)品代碼質(zhì)量的間接指標(biāo)--之所以說(shuō)是間接指標(biāo)洛口,因?yàn)闇y(cè)試覆蓋率評(píng)價(jià)的是測(cè)試代碼的質(zhì)量矫付,并不是產(chǎn)品代碼的質(zhì)量。代碼覆蓋率是一種白盒測(cè)試第焰,因?yàn)闇y(cè)試覆蓋率是評(píng)價(jià)產(chǎn)品代碼類(lèi)內(nèi)部的指標(biāo)买优,而不是評(píng)價(jià)系統(tǒng)接口或規(guī)約。測(cè)試覆蓋率尤其用于評(píng)價(jià)測(cè)試代碼是否已經(jīng)覆蓋了產(chǎn)品代碼所有的路徑挺举。

1杀赢、EclEmma coverage安裝

有兩種方法:1、eclipse中點(diǎn)擊工具欄的 help--install new software 顯示如下截圖


點(diǎn)擊Add湘纵,彈出如下

在name中填寫(xiě)安裝軟件的名字(自己命名)脂崔,location中填寫(xiě)如下網(wǎng)址:
http://update.eclemma.org/
接下來(lái),只要一路next就OK了梧喷,安裝成功后eclipse工具欄會(huì)添加一個(gè)新圖標(biāo)

如果出現(xiàn)上面截圖表示成功
2脱篙、第二種方法更簡(jiǎn)單
eclipse中點(diǎn)擊工具欄的 help-- Eclipse marketplace 如下圖

按照紅線標(biāo)注的操作,安裝完后eclipse工具欄出現(xiàn)第一種安裝說(shuō)明最后截圖中的圖標(biāo)伤柄,表示安裝成功。

2文搂、coverage使用

首選選擇你要測(cè)試的Test測(cè)試類(lèi)适刀,右擊,右鍵菜單里面多了一個(gè)Coverage as的選項(xiàng)煤蹭,選擇JUNIT笔喉,這時(shí)測(cè)試程序會(huì)在JUNIT中執(zhí)行一遍,如果代碼有多種情況硝皂,可以多次執(zhí)行常挚,吧多次統(tǒng)計(jì)的測(cè)試代碼覆蓋路進(jìn)行整合,生成覆蓋率統(tǒng)計(jì)結(jié)果稽物。(java application 程序也可以直接用 coverage as 執(zhí)行)

實(shí)例

百度中看到一個(gè)很好的例子奄毡,這里借用一下:

public class HelloWorld {

    public static void main(String[] args) {
        new HelloWorld();
        int rand = (int) (Math.random() * 100);
        if (rand % 2 == 0) {
            System.out.println("Hello, world! 0");
        } else
            System.out.println("Hello, world! 1");

        int result = rand % 2 == 0 ? rand + rand : rand * rand;
        System.out.println(result);
    }
}

按照上面說(shuō)的coverage使用,執(zhí)行一下贝或, 可以看到如下截圖

綠色:代碼被執(zhí)行過(guò)
黃色:代碼部分被執(zhí)行過(guò)
紅色:代碼沒(méi)有被執(zhí)行過(guò)

在下面的Coverage視窗中吼过,可以看到代碼測(cè)試覆蓋率∵浣保看代碼盗忱,是取得隨機(jī)數(shù),if判斷可能出現(xiàn)不滿足羊赵,可能滿足的情況趟佃, 需要多次執(zhí)行該代碼,得到多次的代碼覆蓋率,然后吧多次得到的覆蓋率合并闲昭,得到這個(gè)類(lèi)總的代碼測(cè)試覆蓋率罐寨。
(其中有一句:new HelloWorld(); 該行代碼是為了調(diào)用,該類(lèi)默認(rèn)的構(gòu)造器汤纸。我認(rèn)為:每個(gè)類(lèi)都有默認(rèn)的構(gòu)造器衩茸,只是沒(méi)有顯示的代碼而已,如果這里不寫(xiě)贮泞,代碼覆蓋率會(huì)降低楞慈,第一行public class HelloWorld 綠色也會(huì)變成紅色 )
總的統(tǒng)計(jì)如下:


箭頭所指為合并多次執(zhí)行后的覆蓋率百分比

3、總結(jié)

1)啃擦、coverage 可以測(cè)試java application程序囊蓝,也可以測(cè)試JUnit 測(cè)試類(lèi)
2)、如果要測(cè)試整個(gè)項(xiàng)目中代碼的測(cè)試覆蓋率令蛉,可能比較麻煩聚霜,至少需要吧所有代碼的測(cè)試類(lèi)執(zhí)行一遍,并且把所有代碼執(zhí)行的路徑都考慮到才準(zhǔn)確(不知道有沒(méi)有對(duì)整個(gè)項(xiàng)目測(cè)試的好方法珠叔,最起碼我還不知道 -.-)
3)蝎宇、別忘記測(cè)試異常情況,空指針祷安,或者其他異常后姥芥,執(zhí)行異常代碼,也會(huì)增加代碼測(cè)試覆蓋率的
4)汇鞭、如果得到代碼測(cè)試覆蓋率比較高凉唐,顯而易見(jiàn)能看出代碼安全性會(huì)比較能保證(最起碼測(cè)試無(wú)誤)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市霍骄,隨后出現(xiàn)的幾起案子台囱,更是在濱河造成了極大的恐慌,老刑警劉巖读整,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件簿训,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡米间,警方通過(guò)查閱死者的電腦和手機(jī)煎楣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)车伞,“玉大人择懂,你說(shuō)我怎么就攤上這事×砭粒” “怎么了困曙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵表伦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我慷丽,道長(zhǎng)蹦哼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任要糊,我火速辦了婚禮纲熏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锄俄。我一直安慰自己局劲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布奶赠。 她就那樣靜靜地躺著鱼填,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毅戈。 梳的紋絲不亂的頭發(fā)上苹丸,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音苇经,去河邊找鬼赘理。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扇单,可吹牛的內(nèi)容都是我干的商模。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼令花,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了凉倚?” 一聲冷哼從身側(cè)響起兼都,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稽寒,沒(méi)想到半個(gè)月后扮碧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杏糙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年慎王,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏侍。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赖淤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谅河,到底是詐尸還是另有隱情咱旱,我是刑警寧澤确丢,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站吐限,受9級(jí)特大地震影響鲜侥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诸典,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一描函、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狐粱,春花似錦舀寓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至宋欺,卻和暖如春轰豆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背齿诞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工酸休, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祷杈。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓斑司,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親但汞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宿刮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容