Volver al glosario
Testing

Pruebas de Mutación

Una técnica para evaluar la calidad de los tests introduciendo pequeños cambios (mutaciones) al código y verificando si los tests los detectan. Las mutaciones no detectadas indican tests débiles.

Definicion

Las pruebas de mutación crean "mutantes" — copias del código con pequeños cambios como invertir operadores (> a <), eliminar declaraciones o cambiar valores de retorno. Los buenos tests deberían fallar al ejecutarse contra mutantes ("matarlos"). Los mutantes supervivientes revelan brechas en la cobertura de tests o aserciones. Las herramientas incluyen Stryker (JavaScript/TypeScript), PIT (Java) y mutmut (Python). Mutation score = mutantes matados / total de mutantes.

Por que es importante

La cobertura de código puede ser alta mientras los tests siguen siendo débiles (ej. tests que ejercitan código sin verificar resultados). Las pruebas de mutación miden la efectividad real de los tests. La investigación muestra que las pruebas de mutación encuentran 2-4 veces más defectos que las pruebas basadas en cobertura.

Ejemplo

Código: if (age >= 18) return true. Un mutante cambia >= a >. Si los tests no lo detectan (todos los usuarios de prueba son >18, ninguno exactamente 18), el mutante sobrevive, revelando un test de caso límite faltante.

Terminos relacionados

mutation testingStrykerPITmutant testingtest qualitymutation score

Automatiza Code Review con diffray

Sistema de IA multi-agente para code review. Encuentra bugs, vulnerabilidades de seguridad y problemas de arquitectura automaticamente.