編程珠璣之性能監視工具2工具篇

    其實,這一章翻譯成性能監視工具還是有點誤導人的(profiler 這個詞明明就是分析工具)。作者在這一章裏,最想表達的就是我們需要一個合適的代碼分析工具(profiler)來幫助我們更好的窺探設計出來的程序,他建議如果找不到就自己造一個。可是神農嘗百草的我悲劇的發現按譯文的給出的“性能監視工具”基本上沒有類似的對執行語句進行行統計的工具了,都是一些很恢弘的monitor,離我想要的相差甚遠。可是,很不甘心,這都2014年了怎麼會沒這樣的存在?最後想起來這個和測試裏的語句覆蓋很類似,然後往這個方向靠就出來很多很多的覆蓋率測試工具(coverage tool)了。覆蓋測試是衡量測試質量的一個重要指標。在對一個軟件產品進行了單元測試、組裝測試、集成測試以及接受測試等繁多的測試之後,爲了對軟件的質量產生一定的信心,這就需要對測試的質量進行考察。如果測試僅覆蓋了代碼的一小部分,那麼不管寫了多少測試用例,也不能相信軟件質量是有保證的。相反,如果測試覆蓋到了軟件的絕大部分代碼,就能對軟件的質量有一個合理的信心。下面首先介紹幾種比較常用的:

1.java 

       1)EMMA是一個免費且開源的Java代碼覆蓋率測試工具,100%純Java編寫,不依賴與任何第三方庫,同時它對應用程序執行速度的影響非常小,但是ANT TASK的參數指定較弱,coverage參數需要追加配置文件。EMMA支持對類,方法,代碼行和基本的分支語句的覆蓋率測試,並提供了多種格式的報告,包括純文本,HTML和XML,所有的報告都可以進行詳細設置以獲得定製報告。 使用EMMA時,不需要獲得源代碼就可進行覆蓋率測試,此外,EMMA還支持對整個jar文件測試。

     2)EclEmma 比Emma多了圖形界面以及對集成開發環境的支持。

2.C/C++   

      gcov+lcov 是linux 下針對C/C++的很好用的覆蓋率測試工具。

     1)gcov 伴隨GCC發佈,配合GCC共同實現對C/C++文件的語句覆蓋和分支覆蓋測試; 與程序概要分析工具(profiling tool,例如gprof)一起工作,可以估計程序中哪一段代碼最耗時; 注:程序概要分析工具是分析代碼性能的工具。gcov可以統計每一行代碼的執行頻率,實際上哪些代碼確實被執行, 每一段代碼(section code)的耗時(執行時間)。

     2)lcov 是gcov圖形化的前端工具,是Linux Test Project維護的開放源代碼工具,最初被設計用來支持Linux內核覆蓋率的度量,基於Html輸出,並生成一棵完整的HTML樹 輸出包括概述、覆蓋率百分比、圖表,能快速瀏覽覆蓋率數據,支持大項目,提供三個級別的視圖:目錄視圖、文件視圖、源碼視圖。


   我這裏最後採用的是cygwin+gcov,嘗試用lcov,但是不知道什麼原因沒有輸出。相信對於用Linux的同學來說,應該這就不是問題了,放心大膽的用吧。


參考文獻:

1.覆蓋率測試工具

2.Linux平臺Lcov簡介

3.Linux平臺Gcov簡介

4.關於C++ code coverage tool 的研究 (對gcov 實現原理感興趣的可以看看)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章