Resumen

Automatizar las pruebas unitarias es una de las tareas donde la inteligencia artificial muestra un valor inmediato y práctico. Herramientas como GitHub Copilot y ChatGPT permiten generar unit tests en segundos, reduciendo una de las tareas que más se posterga en el desarrollo de software. A continuación se explican las técnicas y lecciones clave para aprovechar estas herramientas al máximo.

¿Cómo generar pruebas unitarias con GitHub Copilot?

El punto de partida es una función ya escrita. En el ejemplo se trabaja con una función llamada get_tweets, que extrae tuits de un hashtag específico a través de la API de Twitter [0:20]. Para solicitar los tests basta con escribir un comentario dentro del código:

python

Dame un script para hacer unit test a la función get_tweets

Copilot interpreta el comentario y genera automáticamente un bloque de pruebas. Utiliza assert, una instrucción nativa de Python que lanza un error cuando una condición no se cumple [0:42].

¿Qué hacer cuando el test generado falla?

Al ejecutar el test, se produjo un error porque Copilot asumió que siempre se retornarían exactamente 50 tuits. Sin embargo, la función puede devolver menos de 50 si no existen suficientes publicaciones con ese hashtag [1:02]. La solución fue ajustar la condición de igualdad estricta (==) a una comparación de tipo menor o igual (<=):

python assert len(tweets) <= 50

Esta situación ilustra un punto fundamental: la IA no siempre tiene el contexto completo del negocio. El desarrollador debe revisar y adaptar las pruebas generadas. Tras la corrección, el test validó correctamente [1:24]:

  • Que se retornen las columnas esperadas: text, user e is_tweet.
  • Que la cantidad de registros no supere 50.
  • Que los tipos de dato sean texto, texto y booleano.

¿Cómo testear funciones matemáticas simples?

Con una segunda función llamada calcular_media, que calcula el promedio de una lista de números, se repitió el proceso [1:50]. El comentario utilizado fue:

python

Genera un script para hacer unit test de la función calcular_media

Copilot generó listas aleatorias con resultados precalculados y las comparó contra la salida de la función. Al ejecutar, todos los tests pasaron sin errores, confirmando que la función opera correctamente [2:20].

¿Cómo usar ChatGPT para crear pruebas unitarias más completas?

ChatGPT permite un enfoque diferente: se le puede pedir que genere tanto el dataset de prueba como la función de test en formato notebook [2:35]. El prompt usado fue:

"Crea un dataset de prueba y una función en una notebook para hacer un unit test a la siguiente función."

La función analizada importa Scikit-learn para dividir un dataset en conjuntos de entrenamiento y test, una tarea habitual en el entrenamiento de modelos de inteligencia artificial [2:50].

ChatGPT respondió con:

  • Un dataset generado manualmente con dos columnas y 10 registros.
  • La función de separación de datos.
  • La librería unittest para ejecutar las pruebas.

¿Qué valida el test generado por ChatGPT?

El test verifica que las longitudes de los conjuntos resultantes correspondan con la proporción definida: 80 % para entrenamiento y 20 % para test [3:25]. Al ejecutar, el resultado fue exitoso.

Para demostrar la utilidad, se modificó intencionalmente el porcentaje a 70 %, lo que provocó un fallo inmediato con un mensaje de error claro [3:40]. La librería unittest es especialmente útil porque ofrece reportes detallados sobre qué condición exacta no se cumplió.

¿Por qué la IA facilita adoptar pruebas unitarias en tus proyectos?

Muchos desarrolladores omiten las pruebas unitarias porque no es su expertise o porque las restricciones del proyecto no lo exigen [3:55]. La inteligencia artificial elimina esa barrera al generar pruebas de forma rápida y automatizada.

Como reto práctico, se propone aplicar estas técnicas a un script de web scraping sobre TechCrunch que guarda noticias en un data frame y les aplica funciones de limpieza [4:10]. La invitación es usar cualquier herramienta de IA para generar las pruebas y compartir los resultados en los comentarios.