2011-01-17 19 views
39

Mutation testing był tam już od jakiegoś czasu i wydaje się, że istnieją przynajmniej jedna lub dwie komercyjne platformy testowania mutacji dla C/C++. Użyłeś ich? Jakie są twoje doświadczenia? Czy są jakieś alternatywy open source?Jakie istnieją struktury testowania mutacji dla C/C++?

+2

Dobre pytanie, ponieważ nie wiedziałem o testowaniu mutacji. Świetny pomysł ^^ – neuro

+0

Zobacz http://stackoverflow.com/questions/246495/what-mutation-testing-frameworks-exist – Raedwald

Odpowiedz

8

Krótka wyszukiwania następująco:

Powiedziawszy to, musisz zdać sobie sprawę, że testowanie mutacji nie jest szczególnie użyteczne (przynajmniej z niektórych rzeczy, które wcześniej przeczytałem). Jest to interesujące narzędzie w obliczu twardych (mówiąc metaforycznie) twierdzeń i upewnienia się, że wymagania dotyczące danych są przestrzegane (w przypadku sytuacji if and only if).

Moim zdaniem istnieją znacznie bardziej ugruntowane sposoby analizy odporności kodu.

+1

To, co Parasoft (Insure ++) nazywa "testowaniem mutacji", nie przypomina tego, co wszyscy inni nazywają testowaniem mutacji. "Zrewolucjonizowali" to, nie do poznania. http://www.parasoft.com/jsp/products/article.jsp?articleId=291 –

+0

@Jason: wygląda na to, że interesuje się nim, ale pomysł jest taki sam ... weź kod, zmień niektórych operatorów (albo sprawiają, że są "wadliwe", albo "równoważne") i sprawdzają, czy coś działa. Znalezienie niejednoznaczności w kodzie jest czasem przydatne, ale aby być całkowicie szczerym, można napisać własne narzędzie do testowania mutacji (nie jest to trudne) i zaoszczędzić trochę pieniędzy. –

+0

To jest pierwszy wynik, który pojawia się w google, więc pomyślałem, że nadal może być istotne wskazanie, że link MILU prowadzi do 404. – Clearer

4

Zauważ, że narzędzie Parasoft generuje jedynie równoważne mutacje. Odzwierciedla to problem opisany w artykule na temat mutacji w Wikipedii - trudno odróżnić mutacje ekwiwalentne od nierównoważnych, więc zdecydowali się pozostać przy ekwiwalencie.

Wypróbowałem kolejne ciekawe narzędzie, które automatycznie wykrywa niezmienniki w oprzyrządowanym kodzie C i C++ - nazywa się to "Daikon". Zasadniczo robi to samo, co narzędzie generujące równoważne mutacje, ale zamiast identyfikować problematyczny kod, daje zestaw niezmienników, takich jak "A == B + 1". Sądzę, że niezmienniki są bardziej użyteczne, ponieważ gdy patrzysz na odkryty inwariant, dajesz pewność, że twój kod jest poprawny, jeśli niezmiennik ma sens, a następnie możesz przekształcić niezmienniki w twierdzenia i to daje większą pewność przy zmianie kodu.

3

Prosta naprzód python skrypt dla mutacji programów C jest dostępna pod adresem:

https://github.com/parunbabu/mutate.py

autor mówi, że działa lepiej, jeżeli kod badany jest de-komentował wcięte.

i jest również bezpłatny i opensource ... myślę, że to jest to, czego szukasz.

Powiązane problemy