La nueva temporada de The Witcher empieza el día 17 de Diciembre y como soy súper fan he estado viendo otra vez los capítulos antiguos donde te cuentan *spoiler alert*
que el protagonista es un mutante *spoiler alert*
🙀
Pero, ¿esto qué tiene que ver con Kotlin y los tests? Con The Witcher en realidad poco, pero los mutantes sí que están relacionados: Hoy os voy a hablar de Mutation Testing en Kotlin.
Mutation Testing es una técnica utilizada para evaluar la calidad de los tests de una aplicación e identificar tests a añadir mediante pequeñas modificaciones en el código.
La idea es hacer alguna modificación en nuestro código que cambie el flujo de ejecución. Por ejemplo, invertir la condición de un “if” y ejecutar los tests para ver si alguno de ellos falla y captura al mutante.
Cuando participé en Programar es una mierda me preguntaron por el coverage, y expliqué por qué para mí no era un medida muy fiable de si nuestro código estaba bien testeado porque es fácil falsearlo. Sin embargo, Mutation testing sí me parece una métrica más robusta.
Es verdad que el coverage es una medida muy extendida, pero Mutation Testing no tanto. No conozco empresas que lo tengan en producción (si conocéis algún me encantaría saberlo para tener más datos) por eso pensé en intentar utilizarlo en algún proyecto en producción.
Y eso os voy a contar:
plugins {
...
id("info.solidsoft.pitest") version "1.7.0"
}
...
allprojects {
apply(plugin = "info.solidsoft.pitest")
pitest {
setProperty("junit5PluginVersion", "0.12")
setProperty("testPlugin", "junit5")
setProperty("targetClasses", listOf("target package"))
}
}
Para ejecutarlo por linea de comandos
./gradlew pitest