1. 程式人生 > >各種程式語言的程式碼覆蓋率工具彙總

各種程式語言的程式碼覆蓋率工具彙總

對於Linux下的C/C++程式碼,可以在gcc/g++工具編譯程式碼時加上“–coverage”選項來生成可用於覆蓋率分析的二進位制檔案,然後用gcov命令來生成覆蓋率統計情況,也可用lcov工具來生成html版本的可讀性很好的程式碼覆蓋率報告。

下面列舉一下各種程式語言的程式碼覆蓋率工具吧。
c/c++:    gcc+gcov+lcov;(單元測試:CUnit、CPPUnit、Google GTest等)
Java :    Maven cobertura 外掛,Clover,EMMA,Jtest;eclipse中也有eclemma外掛
:    PyUnit + coverage.py;
PHP

:    phpunit + –coverage-html + Xdebug ;
Perl:    Test::Class 和 Devel::Cover;
Shell:    shUnit2 + shcov;

更多的工具資料請參考如下:
程式碼覆蓋率工具: http://en.wikipedia.org/wiki/Code_coverage
單元測試框架:http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks

gcc manual: man gcc (搜尋–coverage)

http://ltp.sourceforge.NET/coverage/lcov.php

shunit2.googlecode.com

http://sdet.org/?p=212

http://toast.taobao.org/

覆蓋率測試工具(coverage tool)
java:
Emma:優點:1 開源軟體;2 支援ANT TASK;Emma 是開源的,同時它對應用程式執行速度的影響非常小。
缺點:1 ANT TASK的引數指定較弱,coverage引數需要追加配置檔案。
EMMA是一個免費且開源的Java程式碼覆蓋率測試工具,100%純Java編寫,不依賴與任何第三方庫。和其他程式碼覆蓋率測試工具不同,EMMA支援大型專案的團隊開發,每個開發人員都可以從中受益。
EMMA通過對Class檔案進行增強以測試覆蓋率,它提供了Offline和Fly兩種模式,在Fly模式下,EMMA不改動編譯後的Class檔案,僅僅在Class檔案被ClassLoader裝載時才進行增強。【AOP技術】
EMMA支援對類,方法,程式碼行和基本的分支語句的覆蓋率測試,並提供了多種格式的報告,包括純文字,HTML和XML,所有的報告都可以進行詳細設定以獲得定製報告。
使用EMMA時,不需要獲得原始碼就可進行覆蓋率測試,此外,EMMA還支援對整個jar檔案測試。
EMMA預設提供了對Ant的整合,通過擴充套件EMMA還可以提供對Maven和Eclipse的支援。

EclEmma:
EclEmma的出現彌補了 Emma 使用者一個大的遺憾 ---- 缺乏圖形介面以及對整合開發環境的支援。將 Eclipse 和 Emma 這兩個在各自領域最為優秀的工具結合起來,這就是 EclEmma 為我們提供的。接下來,我們就要在後續章節中和讀者朋友一起看看 EclEmma 為開發人員提供了什麼。


Cobertura:
優點:1 開源軟體;2 支援MARVEN
缺點:1 可定製引數太少,UTF-8編碼檔案,直接掛掉,從檔案的輸出上來看,還是以xml,html生成為主。
http://www.ibm.com/developerworks/cn/java/j-lo-eclemma/index.html 使用 EclEmma 進行覆蓋測試
2007 年 5 月 10 日;級別: 初級 ;甘 志 ([email protected]), 軟體工程師, IBM 中國軟體開發中心實驗室
覆蓋測試是衡量測試質量的一個重要指標。在對一個軟體產品進行了單元測試、組裝測試、整合測試以及接受測試等繁多的測試之後,我們能不能就此對軟體的質量產生一定的信心呢?這就需要我們對測試的質量進行考察。如果測試僅覆蓋了程式碼的一小部分,那麼不管我們寫了多少測試用例,我們也不能相信軟體質量是有保證的。相反,如果測試覆蓋到了軟體的絕大部分程式碼,我們就能對軟體的質量有一個合理的信心。本文將介紹一個優秀的開源軟體測試工具 EclEmma,它能夠對由 Java 語言編寫的程式進行覆蓋測試,從而對程式執行的結果生成詳盡的覆蓋測試報告。

========================

linux+ c/c++ +gcc:

1. gcov是什麼?

Gcov is GCC Coverage

是一個測試程式碼覆蓋率的工具

是一個命令列方式的控制檯程式

伴隨GCC釋出,配合GCC共同實現對C/C++檔案的語句覆蓋和分支覆蓋測試;
與程式概要分析工具(profiling tool,例如gprof)一起工作,可以估計程式中哪一段程式碼最耗時; 
注:程式概要分析工具是分析程式碼效能的工具。

 
2. gcov能做什麼?

gcov可以統計

每一行程式碼的執行頻率

實際上哪些程式碼確實被執行了

每一段程式碼(section code)的耗時(執行時間)
因此,gcov可以幫你優化程式碼,當然這個優化動作還是應該有開發者完成。


1. Lcov是什麼?


是GCOV圖形化的前端工具
是Linux Test Project維護的開放原始碼工具,最初被設計用來支援Linux核心覆蓋率的度量
基於Html輸出,並生成一棵完整的HTML樹
輸出包括概述、覆蓋率百分比、圖表,能快速瀏覽覆蓋率資料
支援大專案,提供三個級別的檢視:目錄檢視、檔案檢視、原始碼檢視

========================

========================
JavaScript:
JavaScript測試覆蓋率檢測工具JSCoverage


========================
PHP:
PHPUnit是一個輕量級的PHP測試框架。它是在PHP5下面對JUnit3系列版本的完整移植,是xUnit測試框架家族的一員(它們都基於模式先鋒Kent Beck的設計)。
單元測試是幾個現代敏捷開發方法的基礎,使得PHPUnit成為許多大型PHP專案的關鍵工具。
這個工具也可以被Xdebug擴充套件用來生成程式碼覆蓋率報告 ,並且可以與phing整合來自動測試,最後它還可以和Selenium整合來完成大型的自動化整合測試。