Recientemente, tuve la oportunidad de profundizar en Early, un agente de IA diseñado para la generación automática de pruebas unitarias. Como alguien que trabaja habitualmente con TypeScript y ExpressoTS Framework, tenía muchas ganas de ver cómo Early podía optimizar mi flujo de trabajo. Decidí probar la extensión vscode que crearon en mi nueva biblioteca NPM que estaba desarrollando llamada @expressots/share.
Lo primero que me llamó la atención de Early fue su capacidad para generar automáticamente pruebas unitarias para mi código base existente. En lugar de crear pruebas desde cero, podría concentrarme en refinar las pruebas generadas y mejorar la solidez y capacidad de prueba de mi código. Este cambio aceleró significativamente mi proceso de desarrollo. El otro aspecto interesante que noté es que al 83% del código generado no le hice ningún ajuste, funcionó de inmediato y aumentó la cobertura de mi código. Ahorrame mucho tiempo.
En sólo 8,5 horas, logré:
El hecho de que pudiera lograr todo esto en un solo día fue extraordinario. El escenario ideal en la prueba unitaria es hacerlo mientras estás desarrollando tus funciones. Lo hice después de que ya tenía una biblioteca, por lo que fueron necesarios algunos ajustes para que el código fuera comprobable.
Generación automática de pruebas de casos extremos. Por ejemplo, generó pruebas unitarias para escenarios que involucraban cadenas vacías, incluso cuando se requerían parámetros:
export function printSuccess(message: string, component: string): void { stdout.write(chalk.green(`${message}:`, chalk.bold(chalk.white(`[${component}] ✔️\n`)))); }
Al principio, no habría creado pruebas para cadenas vacías en una función tan sencilla. Sin embargo, el enfoque de Early promovió prácticas de programación defensiva, lo que me impulsó a manejar casos extremos que podría haber pasado por alto.
Mientras refinaba las pruebas generadas, encontré un problema de discrepancia de tipos:
Problema: jest.fn() devuelve cualquiera, pero process.exit devuelve nunca, lo que provoca una falta de coincidencia de tipos en TypeScript.
Solución: modifique el simulacro para que coincida con la firma de proceso.exit, garantizando la corrección del tipo.
Este descubrimiento me impulsó a ajustar mi código para mejorar la seguridad de los tipos, destacando cómo Early puede ayudar a identificar problemas sutiles que de otro modo podrían pasar desapercibidos.
A pesar de la experiencia positiva general, encontré algunos desafíos que, si se abordan, podrían mejorar la usabilidad de Early:
Usando Jest 29.7
expect(Compiler.loadConfig()).rejects.toThrowError("process.exit() was called with code 1");
// Versión corregida
expect(Compiler.loadConfig()).rejects.toThrow("process.exit() was called with code 1");
Observación: Generar pruebas para cada entrada posible, incluidas cadenas vacías, a veces puede ser excesivo.
Sugerencia: introduzca opciones para personalizar el nivel de generación de pruebas, lo que permitirá a los desarrolladores optar por pruebas de programación defensiva según sea necesario.
Visibilidad de los resultados de las pruebas: tuve que cambiar entre Early y Jest para ver qué pruebas pasaron o fallaron.
Estado del árbol de archivos: la jerarquía del proyecto en Early colapsa cuando vuelvo desde otras aplicaciones, lo que me obliga a volver a abrir carpetas repetidamente.
Sugerencia: Mejore la interfaz de usuario para mostrar los resultados de las pruebas en Early, reflejando la estructura de Jest. Mantener el estado del árbol de archivos también mejoraría la experiencia del usuario.
Observación: El uso de cualquier tipo en simulacros puede generar discrepancias de tipos y potencialmente enmascarar errores.
Sugerencia: perfeccione la generación simulada para utilizar firmas precisas, promoviendo una mejor seguridad tipográfica y reduciendo la necesidad de correcciones manuales.
En general, mi experiencia con Early fue muy positiva. La herramienta aceleró significativamente mi proceso de pruebas unitarias, lo que me permitió concentrarme en refinar las pruebas en lugar de escribirlas desde cero. También me animó a considerar casos extremos y mejorar la solidez de mi código.
Las áreas de mejora son relativamente menores y giran en torno a mejorar la usabilidad y la personalización. Abordar estos problemas convertiría a la herramienta en un aliado aún más poderoso en el desarrollo de software.
¡Felicitaciones al equipo de Early por su excelente trabajo! Me entusiasma ver cómo evoluciona la herramienta y me encantaría seguir brindando comentarios para ayudar a perfeccionarla aún más.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3