c++ - puntuales - tipos de mutaciones geneticas
¿Qué marcos de pruebas de mutaciones existen para C/C++? (3)
Tenga en cuenta que la herramienta de Parasoft solo genera mutaciones equivalentes. Eso se hace eco del problema descrito en el artículo de Wikipedia sobre pruebas de mutaciones: es difícil distinguir entre mutaciones equivalentes y no equivalentes, por lo que decidieron seguir con el equivalente.
Probé con otra herramienta interesante que puede descubrir invariantes automáticamente en código instrumentado de C y C ++: se llama "Daikon". Básicamente, está haciendo lo mismo que una herramienta que genera mutaciones equivalentes, pero en lugar de identificar un código problemático, le proporciona un conjunto de invariantes como "A == B + 1". Creo que las invariantes son más útiles porque cuando miras el invariante descubierto te da la seguridad de que tu código es correcto si invariante tiene sentido, y luego puedes convertir invariantes en afirmaciones y eso te da más confianza cuando cambias el código.
Las pruebas de mutaciones han estado disponibles por un tiempo, y parece que hay al menos uno o dos marcos comerciales de pruebas de mutaciones para C / C ++. ¿Los has usado? ¿Cuáles son tus experiencias? ¿Hay alguna alternativa de código abierto?
Una breve búsqueda resultó en:
- PlexTest : http://www.itregister.com.au/products/plextest_detail.htm
- Asegure ++ : http://www.parasoft.com/jsp/products/insure.jsp;jsessionid=baacpvbaDywLID?itemId=63
- MILU (puede ser solo para C): http://www.dcs.kcl.ac.uk/pg/jiayue/milu/
Dicho esto, debes darte cuenta de que las pruebas de mutación no son particularmente útiles (al menos de algunas de las cosas que he leído anteriormente). Es una herramienta interesante cuando se hace frente a afirmaciones duras (metafóricamente hablando) y para asegurarse de que se tengan en cuenta los requisitos de datos (cuando se trata de situaciones if and only if
).
En mi opinión, hay formas mucho más establecidas de analizar la solidez del código.
Una secuencia de comandos python directa para mutantes c programas está disponible en:
https://github.com/parunbabu/mutate.py
el autor dice que funciona mejor si el código bajo prueba es comentado y sangrado.
y también es gratuito y de código abierto ... creo que esto es lo que estás buscando.