Yeda AI Tips · #098

English

Nunca confíes en tests escritos por IA para validar código escrito por IA

Los tests pasan. El código sigue estando mal. Esta es la trampa: tu asistente de IA escribió el código con una suposición errónea — y luego escribió los tests con la misma suposición errónea. Coinciden entre sí, y ambos están mal. Una suite en verde prueba consistencia, no corrección.

Por qué una sola mente no puede calificar su propia tarea

Los tests unitarios funcionan como red de seguridad porque codifican una segunda opinión independiente sobre lo que el código debería hacer. Cuando un humano escribe tests para su propio código, esa independencia ya está debilitada — por eso existen el code review y QA. Cuando una sola sesión de un LLM escribe ambos lados, la independencia colapsa por completo: la mala lectura de la especificación que produjo el bug está ahí mismo en el contexto, moldeando cada aserción que el modelo escribe después.

Esto no es hipotético. Un estudio empírico sobre flujos de generación de tests con LLMs encontró que los tests generados después de código defectuoso detectan solo el 14% de las fallas, frente al 25% de los tests generados de forma independiente de la implementación — los errores se propagan, e "implementaciones y tests incorrectos son mutuamente consistentes, enmascarando defectos en lugar de revelarlos". Un segundo estudio que midió la influencia del código incorrecto en la generación de tests encontró que los tests generados para código incorrecto sufren una tasa de detección de bugs 47% peor en ejemplos a nivel de repositorio.

Los modos de falla a vigilar

Reglas prácticas

SituaciónQué hacer
La IA escribió código + tests juntosVerifica el código contra cada invariante declarado en la especificación, no contra sus propios tests
La IA escribió los testsLee cada línea assert; verifica los valores esperados a mano o desde la especificación, nunca desde la salida del programa
Necesitas tests para código de IAGenera los tests a partir de los requisitos en una sesión nueva, sin la implementación en el contexto
Suite en verde sospechosaReproduce el comportamiento tú mismo con una ejecución manual del sistema real
Lógica de alto riesgoAgrega mutation testing o tests basados en propiedades como árbitro independiente

La regla unificadora: el oráculo — la fuente de "qué es correcto" — debe venir de fuera de la ejecución del modelo que produjo el código. Eso es la especificación, tu propia reproducción, o una verificación mecánicamente independiente.

Movidas avanzadas: independencia mecánica

En resumen

Nunca dejes que los tests de la IA sean el único juez del código de la IA. Que pasen tests escritos por la misma mente que escribió el bug es acuerdo, no evidencia. Consigue tu oráculo desde afuera: la especificación, tus propias manos, o una corrida de mutation testing que intente matar la suite.

Recursos

Read this article in English

¿Construyendo con asistentes de AI coding? Yeda AI diseña, audita y lleva a producción sistemas LLM.

Habla con nosotros · Lee el blog