大多數已建立的語言都爲其提供了可靠的測試覆蓋工具,但功能深度各不相同。例如,所有各種虛擬機和編譯器都有這樣的異構結構,編寫代碼覆蓋工具在C語言中的工作必須與Lisp中的工作非常不同。代碼覆蓋工具如何以不同語言工作?
- Python有
sys.settrace
直接告訴你具體哪行執行 - Clover(用於Java)使用它自己的編譯器,並增加了調試的元數據(我最後一次使用它,反正)
- Emma(用於Java)在運行中具有類加載器,其重新寫入的字節碼
- COVER(對於Lisp的)已註釋傳遞到儀器的代碼
我間相關捐資代碼覆蓋的實現爲不同的語言:
去C0覆蓋,在那裏你可以跟蹤哪些代碼行已經執行的主要方法是什麼?我提到了本機VM內省和上面的靜態和動態代碼工具 - 還有其他方法嗎?
與C0相比,獲得更多啓發式覆蓋數據(如C1 or C2)似乎是一種與語言無關的任務。對我來說是很大的Karnaugh map操縱;有沒有關於如何真正做到這一點的最佳做法?更多現代邏輯技術如fuzziness發揮作用嗎?
測試覆蓋率的一個被忽略的方面是將結果顯示給程序員,後者通過C1和C2數據越來越難。坦率地說,雖然他們完成了C0的工作,但我卻被大多數測試覆蓋界面所困擾;您看到覆蓋數據有哪些新穎而直觀的界面?
我不太清楚你在這裏要求什麼,它是如何代碼覆蓋率在低層次上工作,你基本上取樣電腦(http: //en.wikipedia.org/wiki/Program_counter),然後將結果映射到您的源代碼?或者他在尋找什麼? – Johan 2009-01-18 21:49:00
有趣的..所以對個人電腦進行採樣是如何(大多數)覆蓋工具爲編譯爲本地代碼的語言工作。然而,這只是獲得C0的一種方法,而且我對可用於其他語言的技術感興趣。除了原始問題中的第二個和第三個問題。 – 2009-01-19 12:11:17