¿Cómo aprovechar la inteligencia artificial para realizar pruebas unitarias?
La inteligencia artificial, y en particular los modelos de lenguaje como los LLM, están revolucionando el área de desarrollo de software al facilitarnos la creación de pruebas unitarias. Estas herramientas permiten testear código de manera eficiente, ahorrando tiempo y esfuerzo. En este artículo, exploraremos cómo implementar pruebas unitarias de forma efectiva utilizando inteligencia artificial.
¿Qué pasos seguir para probar funciones en Python?
Si tienes una función escrita en Python, como por ejemplo getTweets, puedes usar inteligencia artificial para generar scripts de pruebas unitarias automáticamente. Aquí te mostramos cómo hacerlo:
Solicita a una herramienta AI generar un script: Puedes usar herramientas como Copilot para que generen scripts para tu función. Generalmente, basta con proporcionar el contexto de la función y su propósito.
Ejecución y ajuste de los test: Una vez que tienes el script, ejecútalo para comprobar las pruebas. Si el test falla porque, por ejemplo, la cantidad de tweets no coincide con un valor esperado, ajusta el script. Un buen ajuste puede ser comprobar que el número de resultados sea “menor o igual” al límite, en lugar de exactamente igual.
Revisión de resultados y tipos: Después de ejecutar los tests, verifica que los datos retornados cumplan con los requisitos: columnas correctas, tipos de datos adecuados, etc.
Ejemplo práctico: Función calcularMedia
Otro ejemplo es una función simple para calcular la media de una lista de números. Aquí, al generar los tests, puedes validar que el cálculo de la media sea correcto mediante listas aleatorias con resultados predefinidos.
¿Cómo integrar herramientas como ChatGPT en el ciclo de testing?
También puedes usar ChatGPT para potenciar tus pruebas. Por ejemplo, importando librerías como scikit-learn para crear datasets de pruebas y separarlos en conjuntos de entrenamiento y test:
Importa y estructura datos: Crea un dataset y usa una función para dividirlo en conjuntos de entrenamiento y prueba.
Implementación de librerías para pruebas unitarias: Utiliza librerías como unittest para asegurar que las divisiones de tus conjuntos cumplen con condiciones específicas (por ejemplo, proporciones esperadas).
Ejecución y detección de errores: Ejecuta estos tests para validar si existen fallos, y ajusta los parámetros según sea necesario. La IA puede indicarte errores justo cuando las condiciones establecidas no se cumplen.
Código ejemplo usando unittest y scikit-learn
from sklearn.model_selection import train_test_split
import unittest
# Función para dividir un datasetdefdividir_dataset(X, test_size=0.2):return train_test_split(X, test_size=test_size)classTestDividirDataset(unittest.TestCase):deftest_tamanos_correctos(self): X =[i for i inrange(10)] X_train, X_test = dividir_dataset(X, test_size=0.2) self.assertEqual(len(X_train),8) self.assertEqual(len(X_test),2)if __name__ =='__main__': unittest.main()
Desafíos adicionales
Como desafío, puedes aplicar estos conceptos y herramientas a un script que realice web scraping. Por ejemplo, examina el contenido descargado de TechCrunch en un DataFrame, y utiliza IA para generar pruebas unitarias automáticas que aseguren la calidad de tus procesos de limpieza y estructuración de datos. ¡Deja tus resultados y experiencias en los comentarios para motivar a otros desarrolladores!
Este enfoque no solo fortalece la robustez de tu código, sino que también te introduce en un ecosistema de desarrollo más moderno y ágil, ofreciendo además beneficios inmensos de aprendizaje y eficiencia.
11.01.24: Me está costando entender el contenido de este curo, pero sé que no será la primera ni última vez que lo repase. Así que, es seguro que, al próximo repaso, lo entiendo mucho mejor.
<u>Principales beneficios y funcionalidades:</u>
Autocompletado inteligente: Copilot sugiere pruebas basadas en el código existente, ahorrando tiempo y reduciendo errores.
Generación de pruebas: ChatGPT permite crear pruebas completas a partir de descripciones sencillas.
TDD (Desarrollo Dirigido por Pruebas): Se pueden escribir pruebas antes de implementar la funcionalidad, asegurando una cobertura de código más alta.
Pruebas exhaustivas: Copilot sugiere una variedad de casos de prueba, incluyendo escenarios límite y de error.
Optimización de código: Al identificar áreas con poca cobertura de pruebas, se puede mejorar la calidad del código.
<u>Recomendaciones:</u>
Revisión manual: Siempre es necesario revisar las pruebas generadas por la IA para garantizar su corrección y pertinencia.
Especificidad en las instrucciones: Cuanto más claras sean las indicaciones a Copilot y ChatGPT, mejores serán los resultados.
Combinación de herramientas: Utilizar ambas herramientas puede maximizar los beneficios y complementar sus capacidades.
Copilot y ChatGPT son herramientas poderosas que pueden transformar la forma en que se desarrollan y prueban aplicaciones React y JavaScript. Al aprovechar sus capacidades, los desarrolladores pueden aumentar su productividad y crear software de mayor calidad
Gracias por tu aporte
Me impresiona el alcance de GitHub Copilot
Muy buena clase
Hola a todos.
Realicé unas pruebas unitarias siguiendo estos pasos básico:
1. Uso el asistente de prompt de GitHub Copilot que se activa con Ctlr + Shift + I.
2. Prompt para la clase de aritmética y trigonometría.
3. Funciones de prueba para cada método de instancia de la clase anterior.
No tardé más de 1 minuto en esa tarea. Algo básico lo realiza con gran facilidad este asistente de codificación.
Pruebas usando Github Copilot
Al solicitar las pruebas unitarias a Copilot , nos dice que validemos el contenido del df.
#Genera un script para hacer pruebas unitarias a este codigo
if __name__ =='__main__':print(df) # Imprime el dataframe
df.to_csv('techcrunch.csv', index=False) # Guarda el dataframe en un archivo csv
print("Archivo guardado en techcrunch.csv")print("Pruebas unitarias completadas")