世界目睹了一些災(zāi)難性事件,僅僅是因?yàn)檐浖械腻e(cuò)誤。其中一起事件發(fā)生在2008年,行李處理系統(tǒng)軟件的測(cè)試覆蓋實(shí)踐中的故障導(dǎo)致500 +航班取消。
測(cè)試覆蓋率是軟件質(zhì)量的重要指標(biāo),也是軟件維護(hù)的重要組成部分。它通過(guò)提供不同承保項(xiàng)目的數(shù)據(jù)來(lái)幫助評(píng)估測(cè)試的有效性。這種洞察力允許通過(guò)為未經(jīng)測(cè)試的代碼定義新的測(cè)試用例來(lái)改進(jìn)測(cè)試,從而提高代碼質(zhì)量,最終增加代碼覆蓋率并降低成本。
為什么需要代碼覆蓋率?– 目的和好處
在項(xiàng)目生命周期的早期階段預(yù)防缺陷
它創(chuàng)建額外的測(cè)試用例以增加覆蓋范圍
通過(guò)減少UAT缺陷和生產(chǎn)缺陷可以實(shí)現(xiàn)更高的投資回報(bào)率
它有助于查找一組測(cè)試用例未執(zhí)行的程序區(qū)域
通過(guò)管理基于風(fēng)險(xiǎn)的測(cè)試方法,測(cè)試生活將變得順暢
幫助確定代碼覆蓋率的定量度量,從而間接度量應(yīng)用程序或產(chǎn)品的質(zhì)量。
如何選擇代碼覆蓋率工具?
這是選擇用于應(yīng)用程序測(cè)試的代碼覆蓋率工具的真正挑戰(zhàn)。高效的工具可以幫助衡量測(cè)試工作的有效性 根據(jù)用于編碼的語(yǔ)言,有幾個(gè)選項(xiàng)可以創(chuàng)建代碼覆蓋率報(bào)告。
一些工具,如istanbul(JavaScript測(cè)試覆蓋率工具)會(huì)將結(jié)果直接輸出到您的終端中,而其他工具可以生成完整的HTML報(bào)告,讓您探索代碼的哪一部分缺少覆蓋率。
此外,還有其他適用于所有主要語(yǔ)言的覆蓋測(cè)試工具,其中一些不僅與單元測(cè)試相關(guān),還與執(zhí)行的整體測(cè)試(單元、集成、系統(tǒng)、手冊(cè)等)相關(guān)。以下是一些趨勢(shì)代碼覆蓋工具的列表,這些工具將幫助您在運(yùn)行測(cè)試過(guò)程時(shí)選擇一個(gè)。
1. 默認(rèn)的視覺(jué)工作室代碼覆蓋率
Visual Studio Enterprise 將代碼覆蓋率集合作為內(nèi)置功能。它可以應(yīng)用于托管 (CLI) 和非托管(本機(jī))代碼。使用測(cè)試資源管理器嘗試運(yùn)行測(cè)試方法時(shí),代碼覆蓋率作為選項(xiàng)提供。可以選擇所有測(cè)試或測(cè)試的子集。它可以幫助您在查看代碼時(shí)可視化覆蓋范圍。下表的結(jié)果顯示了在每個(gè)程序集、類和方法中運(yùn)行的代碼的百分比。此外,源代碼編輯器還會(huì)顯示哪些代碼已經(jīng)過(guò)測(cè)試。
圖 1 – 結(jié)果表:Visual Studio
報(bào)告可以以塊或行的形式獲得。管理代碼覆蓋率結(jié)果以及合并不同運(yùn)行的結(jié)果也很容易。
2. 科伯圖拉
Cobertura是最常用和廣為人知的代碼覆蓋工具之一。它作為一種免費(fèi)的 Java 工具而廣受歡迎,該工具可以計(jì)算執(zhí)行的各種測(cè)試訪問(wèn)的代碼百分比。它可用于識(shí)別 Java 程序的哪些部分缺少測(cè)試覆蓋率。它基于jcoverage。
執(zhí)行可以通過(guò) Ant、Command Line、Eclipse 插件、Maven 插件來(lái)完成。它易于使用,可以在沒(méi)有源代碼的情況下測(cè)量覆蓋范圍。它提供HTML或XML格式的報(bào)告,并具有測(cè)試類和方法的行和分支的能力。
3. Coverage.py
Coverage.py 是Python的代碼覆蓋工具。使用 Coverage.py 的主要階段包括執(zhí)行、分析和報(bào)告。它監(jiān)視 Python 程序,記錄代碼的哪些部分已執(zhí)行,然后分析源代碼以識(shí)別可以執(zhí)行但未執(zhí)行的代碼。
Coverage.py 隨 Tidelift 一起提供,以提供一項(xiàng)企業(yè)訂閱。其他方式包括通過(guò)命令行執(zhí)行,API以及Django和Mako的插件。
4. 格科夫-利科夫
Gcov 是與 GCC 一起使用的測(cè)試覆蓋程序。它分析程序以幫助創(chuàng)建更高效、運(yùn)行更快的代碼,以發(fā)現(xiàn)代碼中未經(jīng)測(cè)試的部分。
它充當(dāng)分析工具,有助于分析一些基本的性能統(tǒng)計(jì)信息,例如:
每行代碼執(zhí)行的次數(shù)
實(shí)際執(zhí)行哪些代碼行
每段代碼使用多少計(jì)算時(shí)間
Lcov 是一個(gè)圖形 Gcov.It 前端,用于收集多個(gè)源文件的 gcov 數(shù)據(jù)并創(chuàng)建 HTML 頁(yè)面,其中包含帶有覆蓋率信息注釋的源代碼。它還添加了概述頁(yè)面,以便在文件結(jié)構(gòu)中輕松導(dǎo)航。Lcov 支持語(yǔ)句、函數(shù)和分支覆蓋率測(cè)量。
5. 測(cè)試井 CTC ++
Testwell CTC++ 是一個(gè)強(qiáng)大的基于檢測(cè)的代碼覆蓋率和動(dòng)態(tài)分析工具,適用于 C 和C++代碼。它可以在C#,Java和Objective-C代碼上使用特定的附加組件。它基本上也可用于分析任何嵌入式目標(biāo)機(jī)器上的代碼。
CTC++提供線路覆蓋,語(yǔ)句覆蓋,功能覆蓋,決策覆蓋,多條件覆蓋,修改條件/決策覆蓋(MC / DC),條件覆蓋。
作為動(dòng)態(tài)分析工具,CTC++ 在代碼中顯示執(zhí)行計(jì)數(shù)器(執(zhí)行的次數(shù))。它還可用于測(cè)量函數(shù)執(zhí)行成本(通常是時(shí)間),并在測(cè)試時(shí)啟用函數(shù)進(jìn)入/退出跟蹤。
該工具用戶友好且快速。報(bào)告生成可以是純文本,HTML,XML,JSON(JavaScript對(duì)象表示法)和Excel輸入形式。在某些環(huán)境中,例如Microsoft Visual Studio,可以直接從編譯器IDE使用CTC++。
6. NCover
NCover 是 .NET 程序和應(yīng)用程序的代碼覆蓋率工具。NCover 旨在與構(gòu)建過(guò)程集成,并具有廣泛的命令行支持。代碼覆蓋過(guò)程很簡(jiǎn)單,可以自動(dòng)化。NCover 應(yīng)用程序套件由三個(gè)工具 NCover.Explorer.exe、NCover.Console.exe 和 NCover.Reporting.exe 組成。
NCover.Explorer.exe是一個(gè)GUI程序,允許生成和查看詳細(xì)的代碼覆蓋率信息。
它支持語(yǔ)句覆蓋率、分支覆蓋率和圈復(fù)雜度。它提供了單獨(dú)選擇低、中、高和完整級(jí)別的代碼覆蓋率。它非常易于使用且快速,也可以在開(kāi)源和商業(yè)許可證上使用。
結(jié)論:
為了獲得更好的產(chǎn)品質(zhì)量,根據(jù)項(xiàng)目的特定需求和所需的代碼覆蓋率級(jí)別,可以輕松選擇代碼覆蓋率工具。所有可用的代碼覆蓋工具都足以滿足基于代碼語(yǔ)言和結(jié)構(gòu)的獨(dú)立需求的代碼覆蓋所需的功能。
審核編輯:郭婷
-
API
+關(guān)注
關(guān)注
2文章
1511瀏覽量
62397 -
代碼
+關(guān)注
關(guān)注
30文章
4827瀏覽量
69054 -
編輯器
+關(guān)注
關(guān)注
1文章
806瀏覽量
31292
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式仿真平臺(tái)SkyEye的覆蓋率分析相關(guān)資料下載
重點(diǎn)厘清覆蓋率相關(guān)的概念以及在芯片開(kāi)發(fā)流程中跟覆蓋率相關(guān)的事項(xiàng)
Verilog代碼覆蓋率檢查
USCIS API的應(yīng)用程序發(fā)熱覆蓋率下
![USCIS API的應(yīng)用程序發(fā)熱<b class='flag-5'>覆蓋率</b>下](https://file.elecfans.com/web2/M00/49/C2/pYYBAGKhvFqAUX-JAAATkH8VQ2c734.jpg)
在線測(cè)試覆蓋率的實(shí)現(xiàn)方法與重要性
嵌入式代碼覆蓋率統(tǒng)計(jì)方法和經(jīng)驗(yàn)
![嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>統(tǒng)計(jì)方法和經(jīng)驗(yàn)](https://file.elecfans.com/web1/M00/D8/D3/o4YBAF_1YqiAZu9UAAAxHZKXLMg754.png)
嵌入式代碼覆蓋率如何進(jìn)行統(tǒng)計(jì)有哪些方法和經(jīng)驗(yàn)
![嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>如何進(jìn)行統(tǒng)計(jì)有哪些方法和經(jīng)驗(yàn)](https://file.elecfans.com/web1/M00/D9/F0/pIYBAF_5IymAL7APAAClWTgnAEQ018.png)
統(tǒng)計(jì)嵌入式代碼覆蓋率的方法和經(jīng)驗(yàn)
![統(tǒng)計(jì)嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的方法和經(jīng)驗(yàn)](https://file.elecfans.com/web1/M00/E7/B9/pIYBAGBhb12AYhw9AAAxHZKXLMg997.png)
怎么才能寫出高覆蓋率的Verilog代碼?
高覆蓋率的Verilog代碼的編寫技巧
代碼覆蓋工具的重要性
![<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b><b class='flag-5'>工具</b>的<b class='flag-5'>重要性</b>](https://file.elecfans.com/web2/M00/4E/CC/pYYBAGK9DECAFBmAAAB_oVwPTY4050.png)
更好地測(cè)量代碼覆蓋率的 9 個(gè)技巧
![更好地測(cè)量<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>的 9 個(gè)技巧](https://file.elecfans.com/web2/M00/52/E8/poYBAGLOlCqAFr98AADFMQ8UCp8885.png)
如何獲得100%的安全關(guān)鍵系統(tǒng)結(jié)構(gòu)代碼覆蓋率
代碼覆蓋率記錄
![<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋率</b>記錄](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論