2011-06-27 14 views
6

任何人都可以提供可用於在源代碼(而不是字節碼)級別上在Java程序中進行突變的工具的建議嗎?我需要爲我的源代碼添加錯誤。如果存在的話,我更喜歡帶有GUI的應用程序。如何執行我的Java程序的變異測試?

+0

這在現實世界中的小應用程序中嵌入所有突變 – Bohemian

+0

簡單地替換一些隨機字符是可以做到的,但在大多數情況下,這將是容易的(即,如果你沒有擊中字符串或評論或者真的很幸運地被替換,那麼結果程序將不會被編譯)。 –

+5

「這在現實世界中應用很少」是一個糟糕的藉口。當張量,拓撲或微積分數學被開發出來時,他們的「真實世界使用率很低」。這是個有趣的問題。代碼變異具有非常現實的世界應用。 –

回答

3

當我參加了GMU的測試軟件工程課程we used Mu Java,其中一章。 HTH

+0

謝謝!我也試過了,但它對我不起作用。 @Override註釋引起異常.. – damluar

3

這是開源測試覆蓋率工具Jester使用的技術。如果您無法找到合適的工具並想自己創建一個工具,那麼查看它的源代碼可能會有所幫助。

4

我發現PIT突變測試工具,我很喜歡。有了MuJava,我有由@Override註釋引起的異常。似乎它不支持Java 5/6。

+3

PIT的良好概述在這裏:http://dev.theladders.com/2013/02/mutation-testing-with-pit-a-step-beyond-normal-code-coverage/ –

3

如果您的要求真的是源代碼突變,然後我知道的選項是

小丑 - 提供突變運營商是非常不穩定的數量有限。 Jeff Offutt將其描述爲應用分支測試的非常昂貴的方式。我認爲可以定義自己的運營商,所以這可能不完全公平。

穆爪哇 - 不支持Java 5

朱迪 - 不很瞭解這個除了它的存在

熔岩 - 聽起來很基本的,我不認爲它支持JAVA 5

從下面的答案我看你現在使用PIT。我認爲這是一個非常好的選擇(我寫它可能會有一定的偏見),但它是一個字節碼突變系統。

1

這一個基準:

MμClipse只支持JUnit 3和不再保持。Jester至於它,很費力,需要一個複雜的配置;再加上不再維護。 我能找到的最佳工具是Javalanche I had wrote a entire article about this !

2

「這在現實世界中的應用很少」。強烈反對,我在英國一家非常大的媒體公司簽約,PIT(http://pitest.org/)對突變檢測非常有用。大多數CI構建設置失敗,沒有85%覆蓋PIT突變測試。 回覆:「替換一些隨機字符......」突變並不一定是這個意思。 PIT突變僅限於可編輯的變化。

+0

如果您需要100%的突變覆蓋率,您如何處理等效突變? – henry

1

主要的突變框架(Major's website)爲JUnit測試提供了一個編譯器集成的mutator和突變分析器。

Major's mutator集成在Java 7編譯器中。它提供了一些變異操作,並支持用於突變源代碼兩種選擇:

  1. 生成和編譯
  2. 產生突變體和出口突變源文件
相關問題