1. 程式人生 > >eclipse程式碼測試覆蓋率小工具---coverage

eclipse程式碼測試覆蓋率小工具---coverage

1.什麼是程式碼測試覆蓋率? 基於程式碼的測試覆蓋評測測試過程中已經執行的程式碼的多少,與之相對的是要執行的剩餘程式碼的多少。程式碼覆蓋可以建立在控制流(語句、分支或路徑)或資料流的基礎上。控制流覆蓋的目的是測試程式碼行、分支條件、程式碼中的路徑或軟體控制流的其他元素。資料流覆蓋的目的是通過軟體操作測試資料狀態是否有效,例如,資料元素在使用之前是否已作定義。 覆蓋率等於覆蓋面積/總面積 2.coverage如何安裝? 1.在eclipse工具欄點選help->Eclipse Marketplace。 在這裡插入圖片描述

2.輸入“coverage”搜尋,點選install。

在這裡插入圖片描述 3.當eclipse工具欄出現如圖的圖示即為安裝成功。在這裡插入圖片描述

3.coverage如何使用 首選選擇你要測試的Test測試類,右擊,右鍵選單裡面多了一個Coverage as的選項,選擇JUNIT,這時測試程式會在JUNIT中執行一遍,如果程式碼有多種情況,可以多次執行,吧多次統計的測試程式碼覆蓋路進行整合,生成覆蓋率統計結果。(java application 程式也可以直接用 coverage as 執行)

例項 百度中看到一個很好的例子,這裡借用一下:

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);
    }
}

按照上面說的coverage使用,執行一下, 可以看到如下截圖 在這裡插入圖片描述

綠色:程式碼被執行過
黃色:程式碼部分被執行過
紅色:程式碼沒有被執行過

在下面的Coverage視窗中,可以看到程式碼測試覆蓋率。看程式碼,是取得隨機數,if判斷可能出現不滿足,可能滿足的情況, 需要多次執行該程式碼,得到多次的程式碼覆蓋率,然後吧多次得到的覆蓋率合併,得到這個類總的程式碼測試覆蓋率。 (其中有一句:new HelloWorld(); 該行程式碼是為了呼叫,該類預設的構造器。我認為:每個類都有預設的構造器,只是沒有顯示的程式碼而已,如果這裡不寫,程式碼覆蓋率會降低,第一行public class HelloWorld 綠色也會變成紅色 ) 總的統計如下: 在這裡插入圖片描述

箭頭所指為合併多次執行後的覆蓋率百分比

4、總結 1.coverage 可以測試java application程式,也可以測試JUnit 測試類 2.如果要測試整個專案中程式碼的測試覆蓋率,可能比較麻煩,至少需要吧所有程式碼的測試類執行一遍,並且把所有程式碼執行的路徑都考慮到才準確。 3.別忘記測試異常情況,空指標,或者其他異常後,執行異常程式碼,也會增加程式碼測試覆蓋率的。 4.如果得到程式碼測試覆蓋率比較高,顯而易見能看出程式碼安全性會比較能保證。