Documentación · Conceptos

Resultados y puntaje

En qué puede terminar un cast, cuáles resultados entran al puntaje y cuáles se reportan aparte.

Un cast puede terminar de ocho maneras. Solo dos mueven el puntaje.

kalku info outcomes
ResultadoQué significaEn el puntaje
killedUn test notó el defectoCuenta
survivedCorrieron todos los tests que alcanzan la línea, y ninguno lo notóCuenta
timeoutEl wekufe pasó su plazo; un ciclo infinito no es un assert que fallaSe reporta aparte
no_coverageNingún test ejecuta el código donde está el wekufe, así que nada lo juzgóSe reporta aparte
compile_errorEl wekufe no compila, así que no dice nada sobre la suiteSe reporta aparte
crashedEl cast no produjo un veredicto: el kalku murió, no pudo correr sus tests, o el wekufe tomó más memoria que su techoSe reporta aparte
nondeterministicSe lanzó varias veces y no estuvo de acuerdo consigo mismo; un resultado en el que nadie debería confiarSe reporta aparte
equivalentEl wekufe no se puede distinguir del originalSe reporta aparte

El puntaje

puntaje = killed / (killed + survived)

Y nada más. Los timeouts, las caídas y la cobertura faltante se muestran al lado del puntaje, nunca dentro de él: un ciclo infinito no es un assert que falla, y fingir que lo es infla el número.

score 60% · 3 killed · 2 survived · 1 compile error

Qué cuenta como kill

  • Un test solo cuenta como que mató a un wekufe si pasa en el código original. Un test que falla en ambos es un test roto, no un kill.
  • Un timeout nunca cuenta como kill.
  • Un site que ningún test alcanza es no_coverage, no un sobreviviente ni un kill.

Un sobreviviente es un hoyo

Un wekufe que sobrevive es un hoyo en la suite, con un archivo, una línea y un diff. La respuesta habitual es escribir el test que falta. Cuando el wekufe de verdad no se puede distinguir del original, se declara como mutante equivalente, con una razón escrita.