IA para la generación de pruebas: dónde ayuda y dónde miente
La IA escribe pruebas rápido. También escribe pruebas que parecen reales pero verifican las cosas equivocadas.
Pegas una función en una IA. Treinta segundos después, tienes doce pruebas que pasan. Tu porcentaje de cobertura sube. Te sientes productivo.
Entonces, un error llega a producción. Miras esas doce pruebas y te das cuenta de que ninguna lo habría detectado.
La IA probó lo que tu código hace, no lo que se supone que debe hacer.
La IA es útil, pero debes saber cómo usarla.
Dónde gana la IA:
- Generar código repetitivo (boilerplate) como bloques de setup y teardown.
- Escribir ayudantes de fábrica (factory helpers) y objetos de datos repetitivos.
- Crear muchas variaciones de un único patrón de prueba bueno.
- Manejar casos de borde (edge cases) obvios como
null, cadenas vacías o cero.
Dónde falla la IA:
- Pruebas basadas en la implementación: Escribe pruebas que siguen la estructura del código en lugar de la lógica de negocio. Si refactorizas el código, las pruebas fallan incluso si el resultado sigue siendo correcto.
- Casos de borde superficiales: Encuentra errores obvios pero pasa por alto errores específicos del dominio. No conoce las peculiaridades de tu zona horaria, las restricciones de tu base de datos o tus reglas de negocio específicas.
- Mocks frágiles: Simula (mocks) servicios internos que deberían permanecer reales. Esto hace que las pruebas sean lentas de mantener y fáciles de romper durante las refactorizaciones.
Cómo usar la IA sin crear "teatro de pruebas" (test theater):
- Define el contrato primero. Escribe una frase en lenguaje sencillo sobre lo que la prueba debe demostrar. Ejemplo: "Un código expirado debe devolver el monto original".
- Dale esa frase a la IA. Deja que la IA escriba el código, pero tú debes ser el dueño de la intención.
- Realiza mocks solo en el límite (boundary). Usa instancias reales para tus módulos internos. Solo simula (mock) APIs externas o bases de datos.
- Escribe un caso de borde del dominio a mano. La IA se encarga de los bordes "obvios". Tú debes encargarte de los casos de borde de las "3 AM" que realmente causan incidentes en producción.
No dejes que la IA decida qué verifica la prueba. Úsala para escribir el código, pero tú proporciona la lógica.
Fuente: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
