He jugado un poco con pitest para una aplicación pequeña, artificial:
http://pitest.org/
Es una herramienta de Java que automatiza la generación de mutantes. Puede ejecutarlo en su suite de prueba y generará informes HTML para usted que indiquen cuántos mutantes se eliminaron. Pareció bastante efectivo y no requirió mucho esfuerzo para configurarlo. En realidad, hay algunas buenas herramientas en el mundo de Java para este tipo de cosas. Ver también:
http://www.eclemma.org/
Para la cobertura.
Creo que los conceptos detrás de las pruebas de mutación son sólidos. Es solo una cuestión de apoyo y conciencia de la herramienta. Estás peleando por una compensación entre la simplicidad de las métricas de cobertura de códigos tradicionales y la complejidad adicional de esta técnica: realmente solo se trata de herramientas.Si puede generar los mutantes, entonces será ayuda a exponer debilidades en sus casos de prueba. ¿Vale la pena el aumento marginal de esfuerzo sobre las pruebas que ya hace? Con los más feroces, encontré que aparecían casos de prueba que parecían no obvios.
Las pruebas de mutación son un ángulo de ataque que es bastante diferente de las metodologías de prueba unidad/funcional/de integración.
- Usted prueba su conjunto de pruebas, es una meta-prueba de todo su programa de pruebas.
- Inspira casos de prueba adicionales que de otra manera no hubieras considerado.
No entiendo cómo esto se desvía del desarrollo impulsado por pruebas tradicionales. Simplemente no hay forma de cubrir todas las eventualidades matemáticas, y no creo que valga la pena. –
Sí, esa es mi pregunta si vale la pena el esfuerzo en el mundo real. Sé que hay un poco de trabajo teórico al respecto. Pero, ¿funciona en realidad? – Mnementh
¿No se trata de que las pruebas de mutación realmente prueben las pruebas? Quiero decir, si puedes alterar la lógica del código fuente y aún pasar las pruebas, entonces seguramente las pruebas no son del todo correctas. Perdóneme si me falta algo ... – Grundlefleck