任何人都可以提供可用於在源代碼(而不是字節碼)級別上在Java程序中進行突變的工具的建議嗎?我需要爲我的源代碼添加錯誤。如果存在的話,我更喜歡帶有GUI的應用程序。如何執行我的Java程序的變異測試?
回答
這是開源測試覆蓋率工具Jester使用的技術。如果您無法找到合適的工具並想自己創建一個工具,那麼查看它的源代碼可能會有所幫助。
我發現PIT突變測試工具,我很喜歡。有了MuJava,我有由@Override註釋引起的異常。似乎它不支持Java 5/6。
PIT的良好概述在這裏:http://dev.theladders.com/2013/02/mutation-testing-with-pit-a-step-beyond-normal-code-coverage/ –
如果您的要求真的是源代碼突變,然後我知道的選項是
小丑 - 提供突變運營商是非常不穩定的數量有限。 Jeff Offutt將其描述爲應用分支測試的非常昂貴的方式。我認爲可以定義自己的運營商,所以這可能不完全公平。
穆爪哇 - 不支持Java 5
朱迪 - 不很瞭解這個除了它的存在
熔岩 - 聽起來很基本的,我不認爲它支持JAVA 5
從下面的答案我看你現在使用PIT。我認爲這是一個非常好的選擇(我寫它可能會有一定的偏見),但它是一個字節碼突變系統。
這一個基準:
MμClipse只支持JUnit 3和不再保持。Jester至於它,很費力,需要一個複雜的配置;再加上不再維護。 我能找到的最佳工具是Javalanche I had wrote a entire article about this !
「這在現實世界中的應用很少」。強烈反對,我在英國一家非常大的媒體公司簽約,PIT(http://pitest.org/)對突變檢測非常有用。大多數CI構建設置失敗,沒有85%覆蓋PIT突變測試。 回覆:「替換一些隨機字符......」突變並不一定是這個意思。 PIT突變僅限於可編輯的變化。
如果您需要100%的突變覆蓋率,您如何處理等效突變? – henry
主要的突變框架(Major's website)爲JUnit測試提供了一個編譯器集成的mutator和突變分析器。
Major's mutator集成在Java 7編譯器中。它提供了一些變異操作,並支持用於突變源代碼兩種選擇:
- 生成和編譯
- 產生突變體和出口突變源文件
- 1. Java程序執行行爲的差異
- 2. 如何在執行junit測試後防止java程序退出
- 3. PHPUnit測試執行異常流程
- 4. JS測試驅動程序中測試用例的異步執行
- 5. 如何在異常之後繼續執行Android檢測程序測試?
- 6. 我該如何測試執行命令行程序的PHP類方法?
- 7. 如何讓我的Perl測試按給定順序執行?
- 8. 我如何指定測試中的方法執行順序?
- 9. 如何按順序執行異步摩卡測試(NodeJS)?
- 10. 如何執行.net應用程序的內部測試性能?
- 11. 如何執行Web應用程序的性能測試
- 12. 如何安排Java程序的執行?
- 13. 我如何執行ROR測試
- 14. 我可以得到java程序測試用例的執行軌跡嗎?
- 15. 我的休眠測試程序在執行期間死機
- 16. 我如何創建Java測試執行結果/報告
- 17. 測試程序java
- 18. TestNG測試程序沒有執行
- 19. 程序執行速度測試
- 20. 如何在Selenium-Java Webdriver測試項目中指定執行Java類的順序
- 21. 如何測試需要cmd行參數的併發Java程序?
- 22. 如何在執行另一個測試後執行測試?
- 23. Visual Studio 2012有序測試,如何監視測試執行
- 24. Java多線程:我如何啓動執行線程的外部Java程序?
- 25. 如何用html測試java小程序?
- 26. 測試框架如何停止運行測試的執行?
- 27. SAS中的變量執行測試
- 28. java - 程序的執行
- 29. 暫停測試執行,直到應用程序變爲空閒
- 30. 使用線程進行JUnit測試 - 測試執行程序行爲
這在現實世界中的小應用程序中嵌入所有突變 – Bohemian
簡單地替換一些隨機字符是可以做到的,但在大多數情況下,這將是容易的(即,如果你沒有擊中字符串或評論或者真的很幸運地被替換,那麼結果程序將不會被編譯)。 –
「這在現實世界中應用很少」是一個糟糕的藉口。當張量,拓撲或微積分數學被開發出來時,他們的「真實世界使用率很低」。這是個有趣的問題。代碼變異具有非常現實的世界應用。 –