Desarrollo guiado por pruebas con agentes de IA

Aprende las mejores prácticas para combinar TDD con agentes de codificación de IA como Windsurf y Claude 3.5 Sonnet para automatizar y optimizar tu pipeline de desarrollo de software.

Desarrollo guiado por pruebas con agentes de IA

¿Qué es TDD (Desarrollo Guiado por Pruebas)?

En esencia, TDD gira en torno a un proceso cíclico conocido como Rojo-Verde-Refactorizar. El ciclo comienza con la fase “Rojo”, donde el desarrollador escribe un caso de prueba automatizado que define una funcionalidad o comportamiento deseado. Esta prueba se escribe intencionalmente para fallar al principio porque el código correspondiente aún no existe. Este fallo inicial es fundamental ya que garantiza que la prueba realmente evalúa la funcionalidad deseada y podrá detectar errores una vez que se implemente el código.

La fase “Verde” consiste en escribir la mínima cantidad de código necesaria para que la prueba previamente fallida pase. Este principio anima a los desarrolladores a enfocarse en el requerimiento inmediato definido por la prueba, mantener una base de código limpia y evitar la sobreingeniería.

Finalmente, la fase “Refactorizar” se centra en mejorar la estructura, legibilidad y mantenibilidad tanto del código de pruebas como del código de producción, asegurando que todas las pruebas existentes sigan pasando. La refactorización garantiza que la base de código se mantenga sana y adaptable a cambios futuros sin introducir regresiones, con la suite de pruebas existente como red de seguridad durante esta fase.

¿Cómo automatizar completamente tu pipeline de TDD?

Hay muchos factores que afectan el rendimiento de los agentes de IA a la hora de programar. Desde el modelo LLM hasta cómo estructuras tu código y tu pipeline de desarrollo. Hemos comprobado que TDD es efectivo con Windsurf y Claude 3.5 sonnet. A continuación, se muestra una tarea de ejemplo implementada con TDD.

¿Qué necesitas?

Antes de comenzar a programar, necesitamos lo siguiente:

Pruebas suficientes

Asegúrate de que ya tienes pruebas según TDD y que cubren la mayor parte del alcance de tu problema que consideras lógico y útil para el agente de IA. No necesitas cambiar ni personalizar nada solo por el agente de IA. Si tus pruebas y su convención de nombres siguen un estándar, mucho mejor. Como primer paso, el agente de IA verá estas pruebas para comenzar la implementación.

Aquí tienes un ejemplo de una prueba que verifica si un documento ha sido insertado correctamente en MongoDB:

MongoDB test example

Interfaces

Una interfaz en Java (o cualquier otro lenguaje de programación) es una estructura que define cómo deben lucir las clases y qué métodos deben implementar. Para guiar aún más al agente de IA, sería útil crear una interfaz para tu repositorio de inserción de documentos:

Java interface example Java interface code

Descripción específica de la tarea

Por último, necesitamos una descripción específica de la tarea. Normalmente, puedes usar JIRA o issues de GitHub donde defines la tarea. Esta es la nuestra:

Task description screenshot

Comienza con Vibe Coding

Vibe coding significa que describes lo que necesitas en lenguaje natural (o incluso con comandos de voz), y la IA genera el código en tiempo real. Profundizamos en Vibe Coding en este blog. Aquí está el prompt que usé en Windsurf para completar la tarea por mí:

Prompt example for Windsurf

Implementa la siguiente consulta como una combinación de una o más consultas nombradas y código Java.

Encuentra todos los conductores que hayan completado al menos X viajes con una calificación superior a 5 en un rango de fechas dado y que nunca hayan recibido una calificación inferior a 3 estrellas.

Nota:
No necesitas encontrar una sola consulta que resuelva esta tarea (puedes usar una combinación de código Java y consultas nombradas), pero debes tener en cuenta el rendimiento del ORM, es decir, asegúrate de que tu solución también sea razonablemente rápida si tienes muchas entidades. Durante la sesión de discusión deberías poder explicar qué tipos de problemas pueden surgir con consultas mal escritas.

@Ass1_2_2Test.java#L35-60 estas son las pruebas correspondientes. Está implementado en @DriverDAO.java#L34-63

Mencionar los archivos es el aspecto más importante al hacer vibe coding. Ahora siéntate y observa cómo el agente de IA hace su magia. Implementó la clase, ejecutó las pruebas y reiteró hasta que todas pasaron:

AI Agent coding flow

Preguntas frecuentes

¿Qué es el Desarrollo Guiado por Pruebas (TDD)?

El Desarrollo Guiado por Pruebas (TDD) es un enfoque de desarrollo de software donde se escriben pruebas automatizadas antes del código real. El proceso sigue un ciclo Rojo-Verde-Refactorizar: escribir una prueba que falla (Rojo), implementar el código para que la prueba pase (Verde) y luego refactorizar el código manteniendo todas las pruebas en verde.

¿Cómo pueden los Agentes de IA automatizar el pipeline de TDD?

Agentes de IA como Windsurf, especialmente cuando se combinan con modelos como Claude 3.5 Sonnet, pueden automatizar la generación de código, ejecutar pruebas y realizar mejoras iterativas, haciendo que el proceso de TDD sea más rápido y eficiente.

¿Cuáles son los requisitos previos para automatizar TDD con agentes de IA?

Para automatizar TDD con agentes de IA, necesitas un conjunto completo de pruebas, interfaces claramente definidas y descripciones de tareas específicas. Una convención estandarizada de nombres para las pruebas y documentación clara ayudan a guiar al agente de IA para obtener resultados óptimos.

¿Qué es Vibe Coding?

Vibe Coding es un enfoque impulsado por IA donde los desarrolladores describen los requisitos en lenguaje natural (o por voz), y la IA genera el código en tiempo real, iterando hasta que todas las pruebas pasen y la solución cumpla con los requisitos.

Yasha es un talentoso desarrollador de software especializado en Python, Java y aprendizaje automático. Yasha escribe artículos técnicos sobre IA, ingeniería de prompts y desarrollo de chatbots.

Yasha Boroumand
Yasha Boroumand
CTO, FlowHunt

Impulsa tu desarrollo con agentes de IA

Descubre cómo los ingenieros de flujos de IA y agentes de codificación de FlowHunt pueden automatizar tu proceso de desarrollo para lograr la máxima eficiencia e innovación.

Saber más