Saltar al contenido principal

Mejorar la cobertura de código con Devin

La mayoría de las aplicaciones en producción no tienen un 100% de cobertura de código. Los equipos de ingeniería tienen que priorizar rigurosamente y tienden a centrarse en escribir pruebas para los flujos críticos con el fin de obtener el máximo beneficio del tiempo invertido. Devin puede cerrar esta brecha analizando el estilo de la suite de pruebas existente de una base de código e incrementando la cobertura de funciones menos críticas pero igualmente importantes. Para este ejemplo, vamos a usar una aplicación de ejemplo de código abierto en TypeScript basada en la especificación RealWorld, que ya tiene algunas pruebas pero no una cobertura completa: https://github.com/SeuRonao/realworld-express-prisma Puedes seguir la ejecución completa aquí o leer el resto de esta publicación, que destaca cada paso del proceso de Devin. Iremos resaltando varias partes del espacio de trabajo de Devin, como el Editor o la Shell.

Prompt inicial

Comenzamos nuestro Run con un prompt sencillo que le indica a Devin que configure nuestro entorno de desarrollo y evalúe la cobertura de código existente de nuestra aplicación:
Devin
En su shell, Devin primero clona nuestro repositorio desde GitHub, interpreta el archivo README e instala las dependencias de nuestro proyecto en su entorno local.
Devin
Luego, Devin usa su editor integrado para crear nuestro archivo .env, de modo que la aplicación pueda ejecutarse localmente. Cuando trabajas con Devin, también tienes la opción de abrir VSCode por tu cuenta para realizar ediciones manuales o revisar los archivos en los que Devin está trabajando.
Devin

Definir una línea base de cobertura

Luego, Devin ejecuta la suite de pruebas en su Shell. Una de las principales ventajas de Devin es que no solo puede modificar o crear código para tu equipo, sino que también puede trabajar directamente en su navegador y su terminal para realizar interacciones de mayor nivel con tu base de código, su entorno de desarrollo o incluso con tu aplicación en ejecución.
Devin
A continuación, podemos ver cómo Devin interpretó y trasladó los resultados de su Shell a nuestro chat, de forma que sean más legibles para las personas y estén más resumidos.
Devin

Elaborar un plan de mejora

Ahora podemos pasar a la tarea principal: aumentar la cobertura de código. Parece que profileViewer.ts es un buen lugar para empezar, dado que su cobertura es prácticamente inexistente por defecto. Le pedimos a Devin que nos indique los siguientes pasos, y nos va informando de lo que va ocurriendo durante todo el proceso.
Devin
Devin puede leer el archivo existente, determinar qué casos de prueba podríamos querer implementar en función de la funcionalidad actual y, luego, escribir las nuevas pruebas por nosotros sin intervención por nuestra parte. Después de terminar de implementar los nuevos casos de prueba, Devin nos ofrece un resumen final de sus cambios:
Devin

Revisión de código

También comparte el archivo nuevo con nosotros para que podamos descargarlo y revisarlo. Como alternativa, podríamos haberle pedido a Devin que cree un pull request directamente en GitHub con este nuevo archivo para que se revisara como parte de nuestro flujo normal de revisión de código. Decido simplemente revisarlo en el editor integrado de Devin para no tener que descargar el archivo.
Devin
En general, los cambios se ven bien, pero queremos asegurarnos de que no haya errores en tiempo de ejecución que hayamos pasado por alto, así que le pedimos a Devin que ejecute nuevamente la suite de pruebas y nos informe los resultados.
Devin
Las pruebas se ejecutan como se esperaba y hemos aumentado nuestra cobertura general del 28.57% de las funciones al 57.14% de las funciones, que es exactamente lo que queríamos lograr. Todo el proceso le tomó a Devin menos de 10 minutos de trabajo para implementarlo, a pesar de que nos ausentamos a mitad de camino antes de darle nuestro siguiente conjunto de instrucciones. Puedes aumentar la cobertura de pruebas y eliminar una tarea tediosa del backlog de tu equipo de ingeniería simplemente delegándosela a Devin. Si te encuentras recurriendo con frecuencia a Devin para aumentar la cobertura de código, incluso podrías convertir este prompt en un Playbook detallado para poder iniciar fácilmente nuevas Runs para diferentes partes de tu aplicación. Si quieres aprender más sobre qué tipos de prompts funcionan bien con Devin, revisa algunos de nuestros ejemplos en la documentación.