Tutorials

IA para PHP: cómo automatizar las pruebas de unidad con AI Assistant

Read this post in other languages:

Pruebas. Si se parece un poco a mí, estará de acuerdo en que es algo tan importante como aburrido. Es una de esas cosas que no se disfrutan mucho mientras se hacen, pero que se sabe que reportarán dividendos más adelante.

Entonces ¿por qué las pruebas son tan poco gratificantes?

Para mí, el mayor obstáculo es el gran esfuerzo que conlleva la configuración inicial. Sé que una vez que tenga una prueba configurada, podré modificarla y retocarla a lo largo de la vida del proyecto. Pero empezar es lo que más me cuesta.

¿Y si esa configuración inicial de escribir una prueba pudiera simplificarse? ¿Y si pudiéramos obtener gratuitamente el borrador de una prueba, utilizarlo como punto de partida y simplemente modificarlo según sea necesario? ¿Y si pudiéramos dedicarnos a las partes divertidas y hacer que un ordenador se encargara de las aburridas?

Aquí es donde la IA puede ayudarnos.

Recientemente, hemos añadido una potente herramienta a todos nuestros IDE, incluido PhpStorm: JetBrains AI Assistant. En este artículo del blog, me gustaría analizar cómo podemos utilizar AI Assistant para automatizar las partes aburridas de la programación, para así poder centrarnos en las partes más emocionantes de las pruebas.

Pruebas de unidad automatizadas con AI Assistant

La generación de pruebas de unidad es un ejemplo perfecto de cómo AI Assistant puede ayudarnos. Consideremos el siguiente fragmento de código:

Este es un fragmento tomado de un proyecto llamado RFC Vote, que es de código abierto. Encontrará el código fuente completo aquí. Este proyecto permite a la comunidad PHP debatir sobre las solicitudes de comentarios (RFC) abiertas. Los usuarios pueden esgrimir argumentos a favor y en contra, y mantener debates constructivos sobre la evolución de PHP.

Esta clase concreta se encarga de crear un comentario sobre un argumento existente. Un comentario pertenece a un usuario, tiene una referencia a un argumento y tiene un cuerpo. Por último, cada vez que se escriba un comentario, se enviarán notificaciones a todos los usuarios que sigan un argumento específico.

Utilicemos AI Assistant para que nos estructure una prueba y veamos lo que es capaz de hacer.

Comience situando el cursor en el cuerpo de este método __invoke y, a continuación, pulse Alt+Intro y seleccione AI Actions | Generate Unit Tests en el menú contextual.

AI Assistant esbozará ahora un borrador de una prueba para esta clase. Si desea saber cómo hace todo esto AI Assistant, puede leer este artículo. Cuando AI Assistant haya terminado, verá una versión del borrador como esta:

La acción más directa es pulsar el botón Accept all, lo que creará un nuevo archivo de prueba en la ubicación correcta y copiará este borrador de implementación en el archivo de prueba real. No obstante, también puede pulsar el botón Refreshpara generar una implementación completamente nueva si ha detectado algún problema evidente.

En mi caso, actualicé una o dos veces, pulsé Accept all y ejecuté mi prueba.

No está mal, ¿verdad?

Ahora, espere. Hay un par de detalles más que señalar.

En primer lugar, no todas las generaciones funcionarán sin problemas desde el principio. Por ejemplo, algunas versiones incluían la característica RefreshDatabase, una práctica común en las pruebas de Laravel. Sin embargo, en este proyecto, tengo las pruebas de la base de datos configuradas de forma un poco diferente, por lo que tuve que hacer un pequeño ajuste en el resultado generado. A veces, AI Assistant también genera código que no se adapta totalmente a su estilo de código. Hace todo lo posible por tener en cuenta los ajustes de estilo del código, pero algunos detalles son difíciles de acertar.

A pesar de algunas deficiencias, tenga en cuenta que nuestro objetivo no es generar la prueba perfecta, sino disponer de una estructura que nos sirva de base. AI Assistant es sorprendentemente bueno a la hora de entender el contexto de lo que queremos probar, y hace muchas cosas bien. Ahorra tiempo y nos permite centrarnos en las partes más emocionantes de las pruebas.

Automatización de Pest

2023 ha mostrado un crecimiento significativo del relativamente nuevo marco de pruebas Pest. En PhpStorm también nos hicimos cargo del desarrollo del complemento Pest el año pasado. En estos momentos, la compatibilidad de AI Assistant con Pest es un trabajo en curso, y estará disponible en la próxima versión principal: PhpStorm 2024.1. No se lo pierda: le demostraremos cómo los usuarios de Pest pueden sacar partido de AI Assistant en nuestros próximos artículos del blog.

Conclusión

Ser capaz de estructurar las pruebas de unidad de forma automática ―con un trabajo manual mínimo― ya es bastante impresionante, pero aún se puede optimizar el proceso.

Eche un vistazo a nuestro próximo artículo del blog de esta serie, en el que analizaremos más detenidamente cómo podemos optimizar la generación de pruebas con JetBrains AI Assistant para ahorrar aún más tiempo. Suscríbase a nuestro blog en la sección de suscripción que encontrará más abajo y no se pierda nuestras novedades.

Enlaces útiles

Recursos:

Vídeos:

 

Artículo original en inglés de:

Luiz Di Bella

Brent Roose

image description

Discover more