2011-06-27 13 views
6

Czy każdy może podać sugestie dotyczące narzędzi, których można użyć do tworzenia mutacji w programie Java na poziomie kodu źródłowego (bez kodu bajtowego)? Muszę zasiać mój kod źródłowy błędami. Wolałbym aplikację z GUI, jeśli taki istnieje.Jak mogę przeprowadzić test mutacji mojego programu Java?

+0

ten ma niewielki zastosowanie w realnym świecie – Bohemian

+0

Po prostu zastąpienie niektórych losowych znaków przez innych może zrobić, ale w większości przypadków będzie to letal (tzn. Wynikowy program nie będzie możliwy do kompilacji, jeśli nie trafiłeś ciągu znaków lub komentarza, lub wymieniono go na szczęście). –

+5

"Ma to małe zastosowanie w realnym świecie" to kiepska wymówka. Kiedy opracowano matematykę tensorową, topologiczną lub matematyczną, miały one bardzo "mało praktyczne zastosowanie na świecie". To interesujące pytanie. Mutacja kodu ma bardzo realne zastosowania na świecie. –

Odpowiedz

3

Kiedy wziąłem klasę inżynierii oprogramowania na testowanie na GMU, we used Mu Java, dla jednego z rozdziałów. HTH

+0

Dzięki! Próbowałem też, ale to nie działa dla mnie. @Averride adnotacja powoduje wyjątki .. – damluar

3

Jest to technika używana przez narzędzie pokrycia testu open source Jester. Spojrzenie na jego źródło może być pomocne, jeśli nie jesteś w stanie znaleźć odpowiedniego narzędzia i chcesz je zbudować samodzielnie.

4

Znalazłem narzędzie do testowania mutacji PIT, które bardzo lubię. Z MuJava mam wyjątki spowodowane adnotacjami @Override. Wydaje się, że nie obsługuje "Java 5/6".

+3

Dobry przegląd PIT tutaj: http://dev.theladders.com/2013/02/mutation-testing-with-pit-a-step-beyond-normal-code-coverage/ –

3

Jeśli wymóg jest naprawdę dla kodu źródłowego mutacji następnie opcje Jestem świadomy są

Jester - Zapewnia ograniczoną liczbę operatorów mutacji, które są dość niestabilne. Jeff Offutt opisał to jako bardzo drogi sposób na zastosowanie testów branżowych. Uważam jednak, że możliwe jest zdefiniowanie własnych operatorów, więc prawdopodobnie nie jest to w pełni sprawiedliwe.

Mu Java - Nie obsługuje Java 5

Judy - Nie wiem zbyt wiele o tym innym niż to, że istnieje

Lawa - Brzmi dość proste i nie sądzę, że obsługuje Java 5

Z odpowiedzi poniżej widzę, że teraz używasz PIT. Myślę, że to naprawdę świetny wybór (napisałem to, może mieć pewne odchylenie), ale jest to system mutacji kodu bajtowego.

1

Tu jest punktem odniesienia:

MμClipse JUnit 3 obsługuje tylko i nie jest już aktualizowany. Jester, jak dla niego, jest pracochłonny i wymaga skomplikowanej konfiguracji; plus nie jest już utrzymywany. Najlepsze narzędzie jakie można znaleźć to Javalanche I had wrote a entire article about this !

2

"Ma to małe zastosowanie w realnym świecie". Zdecydowanie się nie zgadzam, kontraktuję się w bardzo dużej firmie medialnej w Wielkiej Brytanii, a PIT (http://pitest.org/) jest niezwykle przydatny do testowania mutacji. Większość kompilacji CI jest ustawiona na niepowodzenie bez 85% pokrycia testowania mutacji PIT. Odp: "zastępowanie niektórych losowych znaków ..." Mutacja nie musi tego oznaczać. Mutacje PIT są ograniczone do zmian kompilowanych.

+0

Jak radzisz sobie z odpowiednimi mutacjami, jeśli potrzebujesz 100% pokrycia mutacji? – henry

1

Ramy mutacji głównych (Major's website) zapewniają zintegrowany kompilator mutator i analizator mutacji dla testów JUnit.

Mutator Major jest zintegrowany z kompilatorem Java 7.Zapewnia kilku operatorów mutacji i obsługuje dwie opcje mutacji kodu źródłowego:

  1. generowania i osadzić wszystkie mutanty podczas kompilacji
  2. wytworzenia mutantów i eksportowych zmutowane pliki źródłowe
Powiązane problemy