[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-google-adk-19":3},{"content":4,"date":5,"image":6,"sideArticles":7},"\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"es\">\r\n\r\n\u003Chead>\r\n    \u003Cmeta charset=\"UTF-8\">\r\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    \u003Cmeta name=\"description\"\r\n        content=\"Laboratorio 19: Aprende a implementar la suite de pruebas generada por agents-cli. Domina el testing unitario y de integración para garantizar la calidad de tus agentes de IA.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Testing IA, Pytest, agents-cli, CI/CD, Quality Assurance, Automatización, Python, uv, Evals\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Testing Automatizado | Curso Agentes IA\u003C/title>\r\n    \u003Cstyle>\r\n        body {\r\n            font-family: sans-serif;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        h1,\r\n        h2,\r\n        h3 {\r\n            color: #333;\r\n        }\r\n\r\n        ul {\r\n            list-style-type: disc;\r\n            margin-left: 20px;\r\n        }\r\n\r\n        code {\r\n            background-color: #f4f4f4;\r\n            padding: 2px 5px;\r\n            border-radius: 3px;\r\n            font-family: monospace;\r\n        }\r\n    \u003C/style>\r\n\u003C/head>\r\n\r\n\u003Cbody>\r\n    \u003Ch1>Testing Automatizado (La Red de Seguridad)\u003C/h1>\r\n\r\n    \u003Cp>\u003Cstrong>Autor:\u003C/strong> \u003Ca href=\"https://www.youtube.com/@EduardoMartinezAgrelo\" target=\"_blank\">Eduardo Martínez\r\n            Agrelo\u003C/a>\u003C/p>\r\n\r\n    \u003Cp>En la ingeniería de software tradicional, los tests aseguran que el código es predecible. En el desarrollo de\r\n        agentes de IA, donde las respuestas son probabilísticas, los tests son nuestra única defensa contra la regresión\r\n        y el caos. En este laboratorio aprenderemos a utilizar la suite de pruebas automatizada que\r\n        \u003Cstrong>agents-cli\u003C/strong> genera por defecto, integrando el rigor del testing en nuestro ciclo de vida de IA.\r\n    \u003C/p>\r\n\r\n    \u003Ch2>La carpeta tests/: El estándar de Google\u003C/h2>\r\n\r\n    \u003Cp>Cuando generamos un proyecto con el scaffolding profesional, se nos entrega una estructura de pruebas\r\n        preconfigurada lista para ser ejecutada con \u003Ccode>pytest\u003C/code>:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Tests Unitarios:\u003C/strong> Validamos de forma aislada que nuestras herramientas (como la consulta a\r\n            BigQuery del lab anterior) devuelven datos válidos antes de que el agente los procese.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Tests de Integración:\u003C/strong> Ponemos a prueba el razonamiento del agente, simulando preguntas\r\n            reales y verificando que la IA sea capaz de invocar la herramienta correcta y entregar una respuesta\r\n            coherente.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Ejecución en entornos aislados\u003C/h2>\r\n\r\n    \u003Cp>Una de las mayores ventajas de este flujo industrial es que las pruebas no se ejecutan en el Python global de\r\n        vuestro sistema, sino en el entorno virtual gestionado por el proyecto:\u003C/p>\r\n    \u003Cp>\u003Ccode>uv run pytest tests/\u003C/code>\u003C/p>\r\n    \u003Cp>Este comando garantiza que los tests se ejecuten con las versiones exactas de las librerías definidas en el\r\n        archivo \u003Ccode>uv.lock\u003C/code>, asegurando que si una prueba pasa en local, pasará también en los servidores de\r\n        integración de la nube.\u003C/p>\r\n\r\n    \u003Ch2>Hacia la Integración Continua (CI/CD)\u003C/h2>\r\n\r\n    \u003Cp>Entender este flujo es el primer paso para automatizar la calidad en un equipo de ingeniería moderno:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Validación Preventiva:\u003C/strong> Los ingenieros senior nunca despliegan sin que el sistema de CI\r\n            corra esta suite de pruebas. Si un cambio en el prompt rompe la lógica, el test fallará y el despliegue se\r\n            detendrá.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Confianza en la Iteración:\u003C/strong> Podéis modificar las instrucciones de vuestro agente con la\r\n            tranquilidad de que, si cometéis un error que afecte a la precisión, vuestros tests os avisarán al instante.\r\n        \u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Implementación práctica\u003C/h2>\r\n\r\n    \u003Cp>En este laboratorio, abriremos la carpeta \u003Ccode>tests/\u003C/code> que generó nuestra CLI. Programaremos una prueba\r\n        unitaria para validar que nuestra conexión con BigQuery es sólida y un test de integración que verifique si el\r\n        agente es capaz de extraer datos numéricos reales. Al ejecutar el comando de \u003Ccode>pytest\u003C/code>, observarás los\r\n        indicadores de éxito en tu terminal, transformando tu repositorio en una pieza de ingeniería blindada y lista\r\n        para procesos de integración continua.\u003C/p>\r\n\r\n    \u003Ch2>Conclusión: Software de IA en el que puedes confiar\u003C/h2>\r\n    \u003Cp>Has aprendido que un ingeniero de IA no solo escribe prompts, sino que escribe salvaguardas. Ya tienes una suite\r\n        de pruebas profesional. Con la garantía de calidad establecida, el siguiente paso es configurar la\r\n        infraestructura de producción para realizar el despliegue definitivo a Google Cloud.\u003C/p>\r\n\u003C/body>\r\n\r\n\u003C/html>","May 12, 2026","https://storage.googleapis.com/mp-blog/images/curso-gcp-google-adk-19.jpg",[8,14,19,24],{"id":9,"title":10,"description":11,"image":12,"date":13},"curso-gcp-apache-spark-01","Spark: Infraestructura como Código con Terraform | Curso Spark, Scala y Terraform","Aprende a desplegar clústeres de Big Data profesionalmente. Domina Terraform para crear infraestructura como código (IaC) en Google Cloud y automatiza tu entorno de Dataproc para Spark.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-01.jpg","March 12, 2026",{"id":15,"title":16,"description":17,"image":18,"date":13},"curso-gcp-apache-spark-02","Spark: Ingesta (Raw to Bronze) y Formatos Columnares | Curso Spark, Scala y Terraform","Domina la ingesta de datos con Spark. Aprende a convertir JSONs pesados en formato Parquet, optimiza tu almacenamiento en un 85% y domina los esquemas estrictos con Scala.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-02.jpg",{"id":20,"title":21,"description":22,"image":23,"date":13},"curso-gcp-apache-spark-03","Spark: Limpieza y Calidad (Bronze to Silver) | Curso Spark, Scala y Terraform","Domina la limpieza de datos en Spark. Aprende a usar Scala para implementar la capa Silver (Plata) de tu arquitectura Medallón, utilizando Case Classes para mayor seguridad.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-03.jpg",{"id":25,"title":26,"description":27,"image":28,"date":13},"curso-gcp-apache-spark-04","Spark: Analítica Avanzada (Silver to Gold) | Curso Spark, Scala y Terraform","Domina el Análisis Avanzado con Spark. Aprende a calcular métricas de negocio con Window Functions y a extraer el Top 3 de canciones por país y día para tu capa Gold.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-04.jpg",1778604634354]