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++?
Odpowiedz
Krótka wyszukiwania następująco:
- PlexTest: http://www.itregister.com.au/products/plextest_detail.htm
- Ubezpiecz ++: http://www.parasoft.com/jsp/products/insure.jsp;jsessionid=baacpvbaDywLID?itemId=63
- Milu (może być tylko dla C): http://www.dcs.kcl.ac.uk/pg/jiayue/milu/
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.
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 –
@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. –
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
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.
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.
- 1. Narzędzie do testowania mutacji dla Pythona 2.7
- 2. Jakie narzędzia istnieją do testowania wielowątkowego kodu .net?
- 3. Czy istnieją struktury hurtowni danych?
- 4. Jakie inne alternatywy dla logowania log4net istnieją?
- 5. Jakie narzędzia do autotestowania istnieją dla Clojure
- 6. Jakie wizualizery debugowania istnieją?
- 7. Jakie języki programowania mogą wspierać testowanie mutacji?
- 8. Moduły testowania jednostek - Jakie są kluczowe funkcje
- 9. Jakie ramy testowania jednostkowego?
- 10. Jakie struktury danych drzewa javascript są dostępne?
- 11. Jakie narzędzia XSLT 2.0 istnieją?
- 12. Czy istnieją zautomatyzowane platformy testujące jednostki do testowania wewnętrznej struktury wątków?
- 13. Wywołanie mutacji GraphQL z innej mutacji?
- 14. Czy testowanie mutacji jest przydatne w praktyce?
- 15. Jakie narzędzia Java istnieją do testowania wydajności procesora, pamięci, dysku i sieci we/wy komputera?
- 16. Czy istnieją sprawdzone metody testowania bezpieczeństwa w sklepie deweloperskim Agile?
- 17. Jakie konwencje istnieją dla zamawiania argumentów w metodach?
- 18. Jakie rodzaje czystych przypadków użycia istnieją dla danego/kiedy?
- 19. Jakie jest preferowane środowisko testowania jednostkowego dla Perla?
- 20. Jakie są najlepsze narzędzia do testowania aplikacji dla urządzeń iPhone?
- 21. Jakie są dobre ramy testowania jednostek dla projektów Common Lisp?
- 22. Jakie są sposoby unikania mutacji obiektu w Dart-lang?
- 23. Jakie narzędzia do krojenia programów istnieją?
- 24. Jakie projekty przykładowe ASP.NET MVC istnieją?
- 25. Jakie struktury używane w aplikacjach java Desktop
- 26. Jakie ramy testowania są używane w Railsach?
- 27. Czy istnieją jakieś biblioteki/frameworki dla SCons?
- 28. Prędkość testowania dla testowania instalacji tensorflow
- 29. Jakie struktury CSS okazały się przydatne?
- 30. Czy istnieją interfejsy jednego implementatora do testowania urządzenia przeciwdziałającego?
Dobre pytanie, ponieważ nie wiedziałem o testowaniu mutacji. Świetny pomysł ^^ – neuro
Zobacz http://stackoverflow.com/questions/246495/what-mutation-testing-frameworks-exist – Raedwald