• 對代碼覆蓋率價值的初步認識

    0
    C/C++ Go 代碼覆蓋率 7983 次瀏覽

    關于代碼覆蓋率,之前6年的工作經歷中,只是依稀聽聞過。之前的組織里,從未關注過這個指標,只是有一段時間用NUnit做了單元測試,主要是測試一些關鍵類關鍵方法是否正常,對代碼覆蓋率的印象就真的一直是停留在聽聞的程度。汗一個!

    前些時日,關于自動測試的討論中有人提及到代碼覆蓋率,激發了我的好奇,到底什么是代碼覆蓋率?最重要的是于測試工作而言有怎樣的價值呢?今天花了一點時間查了一下,有了初步的認識。大致歸納如下:

    一。基本概念

       代碼覆蓋率是單元測試活動任務之一;

       覆蓋率分語句覆蓋率(即通常所說的行覆蓋率)和分支覆蓋率。

    二。價值

       代碼覆蓋率的分析能在一定程度上評判代碼質量,一般覆蓋率高的代碼出錯的幾率會相對低一些。但是高覆蓋率只是表示執行了很多的代碼,并不意味著這些代碼被 很好地執行了。所以,似乎覆蓋率測試結果出來并不能幫我準確的評價代碼質量。那么我們為什么要做覆蓋率測試呢?如何讓它給我們帶來價值呢?

       1. 盡早評估代碼質量。

    比如在開發的過程中,定時的去看整個項目的代碼覆蓋率,監控覆蓋報告可以幫助開發團隊迅速找出不斷增長的但是沒有相應測試的代碼。例如,在一周開始 時運行覆蓋報告,顯示項目中一個關鍵的軟件包的覆蓋率是 70%。如果幾天后,覆蓋率下降到了 60%,那么您可以推斷:軟件包的代碼行增加了,但是沒有為新代碼編寫相應的測試(或者是新增加的測試不能有效地覆蓋新代碼)。能夠監控事情的發展,無疑 是件好事。定期地查閱報告使得設定目標(例如獲得覆蓋率、維護代碼行的測試案例的比例等)并監控事情的發展變得更為容易。如果您發現測試沒有如期編寫,您 可以提前采取一些行動,例如對開發人員進行培訓、指導或幫助。

       2. 為功能測試關注點提供情報

    假設覆蓋報告在指出沒有經過足夠測試的代碼部分方面非常有效,那么質量保證人員可以使用這些數據來評定與功能測試有關的關注區域,可以更有針對性地加強這些區域的測試,因為沒有被測試代碼覆蓋到的區域,出錯的幾率應該相對更高。

       3. 估計修改已有代碼所需的時間

    對一個開發團隊而言,針對代碼編寫測試案例自然可以增加集體的信心。與沒有相應測試案例的代碼相比,經過測試的代碼更容易重構、維護和增強。測試案例因為 暗示了代碼在測試工作中是如何工作的,所以還可以充當內行的文檔。在另一方面,沒有經過相應測試的代碼更難于理解和安全地修改。因此,知道代碼有沒有被測 試,并看看實際的測試覆蓋數值,可以讓開發人員和管理人員更準確地預知修改已有代碼所需的時間。

       -----

       當然,這樣的理解還是比較淺層的,我想實際應用中除了以上三點之外,還有一個很重要的工作就是提高測試代碼的質量來更好的體現代碼覆蓋率的價值。

    原文出處:http://www.51testing.com/?uid-101957-action-viewspace-itemid-70695

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色