世界已經(jīng)目睹了一些災(zāi)難性事件,僅僅是因?yàn)檐浖械腻e(cuò)誤。2008 年發(fā)生了一起此類(lèi)事件,行李處理系統(tǒng)軟件的測(cè)試覆蓋實(shí)踐出現(xiàn)故障導(dǎo)致 500 多個(gè)航班取消。
測(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)更好的 ROI
它有助于找到一組測(cè)試用例未執(zhí)行的程序區(qū)域
通過(guò)管理基于風(fēng)險(xiǎn)的測(cè)試方法,測(cè)試將變得更加順暢
幫助確定代碼覆蓋率的定量測(cè)量,間接測(cè)量應(yīng)用程序或產(chǎn)品的質(zhì)量
如何選擇代碼覆蓋工具
真正的挑戰(zhàn)是選擇哪些代碼覆蓋工具用于應(yīng)用程序測(cè)試。一個(gè)有效的工具可以幫助衡量測(cè)試工作的有效性 根據(jù)用于編碼的語(yǔ)言,有幾個(gè)選項(xiàng)可以創(chuàng)建代碼覆蓋率報(bào)告。下面列出了一些與編碼語(yǔ)言相關(guān)的流行工具:
一些工具,如 istanbul(一個(gè) JavaScript 測(cè)試覆蓋工具)會(huì)將結(jié)果直接放入您的終端,而其他工具可以生成完整的 HTML 報(bào)告,讓您探索您缺少覆蓋的代碼部分。
此外,還有其他適用于所有主要語(yǔ)言的覆蓋測(cè)試工具,其中一些不僅與單元測(cè)試相關(guān),而且與執(zhí)行的整體測(cè)試(單元、集成、系統(tǒng)、手冊(cè)等)相關(guān)。下面是一些有助于運(yùn)行測(cè)試程序的趨勢(shì)代碼覆蓋工具列表。
1. 默認(rèn) Visual Studio 代碼覆蓋率
Visual Studio Enterprise 具有代碼覆蓋率集合作為內(nèi)置功能。它可以應(yīng)用于托管(CLI)和非托管(本機(jī))代碼。在嘗試使用測(cè)試資源管理器運(yùn)行測(cè)試方法時(shí),代碼覆蓋率作為一個(gè)選項(xiàng)提供。您可以選擇所有測(cè)試或其中的子集。它可以幫助您在查看代碼時(shí)可視化覆蓋范圍。下表顯示了在每個(gè)程序集、類(lèi)和方法中運(yùn)行的代碼的百分比。此外,源代碼編輯器會(huì)顯示哪些代碼已經(jīng)過(guò)測(cè)試。
圖 1:結(jié)果表:Visual Studio
報(bào)告可以以塊或行的形式獲得。管理代碼覆蓋結(jié)果以及合并來(lái)自不同運(yùn)行的結(jié)果也很容易。
2. 覆蓋范圍
Cobertura 是最常用和廣為人知的代碼覆蓋工具之一。它是一種免費(fèi)的Java工具,可以計(jì)算被執(zhí)行的各種測(cè)試訪問(wèn)的代碼百分比。它可用于識(shí)別 Java 程序的哪些部分缺少測(cè)試覆蓋。它基于jcoverage。
可以通過(guò) Ant、命令行、Eclipse 插件或 Maven 插件執(zhí)行。它易于使用,無(wú)需源代碼即可測(cè)量覆蓋率。它以 HTML 或 XML 格式提供報(bào)告,并具有測(cè)試類(lèi)和方法的行和分支的能力。
3. Coverage.py
Coverage.py 是Python的代碼覆蓋工具。使用 Coverage.py 的主要階段包括執(zhí)行、分析和報(bào)告。它監(jiān)視 Python 程序,記錄代碼的哪些部分已被執(zhí)行,然后分析源代碼以識(shí)別可能已執(zhí)行但未執(zhí)行的代碼。
Coverage.py 可用于 Tidelift 以提供一個(gè)企業(yè)訂閱。其他方式包括通過(guò)命令行、API 以及 Django 和 Mako 插件執(zhí)行。
4. Gcov-Lcov
Gcov 是一個(gè)與 GCC 一起使用的測(cè)試覆蓋程序。它分析程序以幫助創(chuàng)建更高效、更快運(yùn)行的代碼,以發(fā)現(xiàn)代碼中未經(jīng)測(cè)試的部分。
它充當(dāng)分析工具,有助于分析一些基本的性能統(tǒng)計(jì)信息,例如:
每行代碼執(zhí)行的次數(shù)
實(shí)際執(zhí)行了哪些代碼行
每段代碼使用多少計(jì)算時(shí)間
Lcov 是 Gcov 的圖形前端。它收集多個(gè)源文件的 gcov 數(shù)據(jù)并創(chuàng)建 HTML 頁(yè)面,其中包含帶有覆蓋信息注釋的源代碼。它還添加了概覽頁(yè)面,以便在文件結(jié)構(gòu)中輕松導(dǎo)航。Lcov 支持語(yǔ)句、函數(shù)和分支覆蓋率測(cè)量。
5.Testwell CTC++
Testwell CTC++ 是一款功能強(qiáng)大的基于儀器的代碼覆蓋和動(dòng)態(tài)分析工具,適用于C和C++代碼。它可以用于具有特定附加組件的C# 、Java和Objective-C代碼。它也可以用來(lái)在任何嵌入式目標(biāo)機(jī)器上分析代碼。
CTC++提供行覆蓋、語(yǔ)句覆蓋、函數(shù)覆蓋、決策覆蓋、多條件覆蓋、修改條件/決策覆蓋(MC/DC)、條件覆蓋。
作為動(dòng)態(tài)分析工具,CTC++在代碼中顯示了執(zhí)行計(jì)數(shù)器(執(zhí)行了多少次)。它還可用于測(cè)量函數(shù)執(zhí)行成本(通常是時(shí)間)并在測(cè)試時(shí)啟用函數(shù)進(jìn)入/退出跟蹤。
該工具用戶(hù)友好且快速。報(bào)告生成可以是純文本、HTML、XML、JSON(JavaScript Object Notation)和 Excel 輸入形式。在某些環(huán)境中,例如 Microsoft Visual Studio,可以直接從編譯器 IDE 使用 CTC++。
6. 無(wú)蓋
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ù)雜度。它提供了分別選擇低、中、高和完整級(jí)別的代碼覆蓋率的規(guī)定。它非常易于使用和快速,也可用于開(kāi)源和商業(yè)許可。
結(jié)論
為了更好的產(chǎn)品質(zhì)量,根據(jù)項(xiàng)目的具體需求和所需的代碼覆蓋率水平,很容易選擇代碼覆蓋率工具。基于代碼語(yǔ)言和結(jié)構(gòu)的獨(dú)立需求,所有可用的代碼覆蓋工具都足以滿(mǎn)足代碼覆蓋所需的能力。
審核編輯:郭婷
-
JAVA
+關(guān)注
關(guān)注
19文章
2975瀏覽量
105150 -
編譯器
+關(guān)注
關(guān)注
1文章
1642瀏覽量
49287 -
GUI
+關(guān)注
關(guān)注
3文章
662瀏覽量
39893
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論