1 puntos por GN⁺ 2024-02-25 | 1 comentarios | Compartir por WhatsApp

El nuevo generador de pruebas basado en LLM de Meta ofrece una mirada al futuro del desarrollo

  • Meta publicó un artículo titulado "Automated Unit Test Improvement using Large Language Models at Meta".
  • El artículo muestra cómo usar IA para acelerar el desarrollo y reducir los errores en el software.
  • Al integrar LLM en el flujo de trabajo de los desarrolladores, propone mejoras de software precisas y completas para mejorar la cobertura de código actual.

Puntos clave

  • TestGen-LLM usa el enfoque "Assured LLM-based Software Engineering" (Assured LLMSE).
  • Usa un enfoque de ensamble que genera mejoras de código con varios LLM, prompts e hiperparámetros, y selecciona la mejor mejora.
  • TestGen-LLM fue diseñado específicamente para mejorar pruebas existentes escritas por humanos.

Estadísticas

  • En la evaluación de productos Reels y Stories de Instagram, el 75% de los casos de prueba generados por TestGen-LLM compiló correctamente, el 57% pasó de forma confiable y el 25% aumentó la cobertura.
  • TestGen-LLM pudo mejorar el 10% de todas las clases a las que se aplicó, y los desarrolladores aceptaron el 73% de las mejoras de pruebas para llevarlas a producción.
  • En el "test-a-thon" donde ingenieros de Meta generaron pruebas para aumentar la cobertura de pruebas de Instagram, la mediana de líneas de código agregadas por las pruebas de TestGen-LLM fue de 2.5.

Insights accionables

  • Es un buen ejemplo de cómo usar LLM para mejorar de forma eficiente la productividad de desarrollo y la confiabilidad del software.
  • El verdadero valor de los LLM está en encontrar y capturar casos límite inesperados.
  • Para usar LLM en producción se necesita orquestación, pipelines y procesamiento.

Cómo funciona TestGen-LLM

  • TestGen-LLM aplica una serie de filtros semánticos a soluciones candidatas generadas por los LLM internos de Meta para conservar solo las pruebas más valiosas.
  • Filtro 1: capacidad de compilación, filtro 2: ejecución (si la prueba pasa), filtro 3: inestabilidad, filtro 4: mejora de cobertura.
  • Estos filtros de procesamiento garantizan la mejora de la suite de pruebas.

Conclusión

  • Este artículo es una buena forma de seguir los avances de los LLM en el espacio de confiabilidad del software, donde muchos desarrolladores ya los están usando.
  • Los LLM podrán encontrar errores y probar sistemas de software cada vez más complejos.

Opinión de GN⁺

  • Este artículo ofrece una visión interesante sobre cómo la inteligencia artificial puede influir en el futuro del desarrollo de software.
  • Herramientas como TestGen-LLM pueden ser de gran ayuda para automatizar el trabajo de los desarrolladores y aumentar la eficiencia.
  • El avance de estas tecnologías apunta a reducir la complejidad del desarrollo de software, mejorar la calidad y ahorrar tiempo a los desarrolladores.

1 comentarios

 
GN⁺ 2024-02-25
Opiniones de Hacker News
  • Hay quienes consideran interesante la tendencia a usar LLM (modelos de lenguaje de gran tamaño) para escribir código de prueba antes que la implementación. Como las pruebas sirven para describir cómo debe comportarse el sistema, existe la visión de que esa es una parte que deberían definir los humanos. Sin embargo, un LLM puede ser útil para señalar áreas no especificadas, y sugerir pruebas unitarias para esas áreas podría ser una forma adecuada de usarlo.
  • Hay críticas a una publicación del blog que afirma que, entre los casos de prueba generados por TestGen-LLM de Meta, la mayoría solo cubrió 2.5 líneas adicionales de código, pero un caso de prueba llegó a cubrir nada menos que 1326 líneas. Se señala que este fue un caso excepcional, y que el propio artículo deja claro que la mayoría de los casos de prueba quedaron muy por debajo de la cobertura de código esperada. Los autores del paper lo describen como un "jackpot" y dejan claro que ese tipo de resultado no es lo normal.
  • Hay opiniones de que escribir buenas pruebas es difícil. La cobertura de código no siempre es algo positivo, y escribir demasiadas pruebas puede volver rígido al programa. Regenerar pruebas con un LLM puede parecer un avance, pero al final podría no ser más que construir un programa detector de cambios.
  • Se señala que el resumen del paper sobre TestGen-LLM no coincide con su contenido real. El resumen menciona una tasa de éxito sobre casos de prueba, pero el informe en realidad trata una tasa de éxito sobre clases de prueba, lo cual es una afirmación muy distinta. En la conclusión también se expresa mal esta diferencia.
  • Hay cierta compasión por los desarrolladores del futuro que tendrán que dar mantenimiento al código generado por LLM. Existe preocupación de que ese código será difícil de gestionar.
  • Existe preocupación de que el código de pruebas generado por LLM pueda crear un entorno hostil para los desarrolladores. Podría darse la situación de tener que aprobar una y otra vez pruebas generadas por LLM que son difíciles de mantener. Es posible que escribir pruebas se acelere, pero eso no significa necesariamente que el mantenimiento vaya a ser más fácil. Las pruebas ayudan a revisar el diseño del código, y si no son fáciles de escribir, tal vez el diseño no sea bueno. Las pruebas ofrecen tranquilidad automatizada y ayudan a prevenir errores potenciales, pero mientras más alta es la cobertura, menor es el beneficio en relación con la inversión. Los LLM solo pueden ahorrar tiempo cuando un desarrollador con experiencia ya sabe qué debe probarse.
  • Se comparte la experiencia de haber usado GPT-4 para generar pruebas unitarias para un módulo de TypeScript, y que produjo pruebas funcionales con éxito.
  • Se plantea la duda de cómo puede saber la IA qué pruebas debería escribir. La mejor forma en que la IA puede ayudar en el desarrollo de software sería responder cuando el programador hace preguntas sobre el código, a veces con sugerencias de código y a veces no. La IA debería poder ayudar a entender el código y a comprender cómo mejorarlo.
  • Hay opiniones de que no se puede tener una postura valiosa sobre el código generado por IA sin experiencia práctica usando herramientas reales y revisando sus resultados en una base de código bien conocida. El código generado por IA es un tema muy politizado y mucha gente tiene opiniones muy fuertes. Aun así, existe el deseo de probarlo de verdad. Como estas tecnologías tienen costos de desarrollo muy altos, puede ser difícil justificar ese gasto si las herramientas de IA no mejoran de forma importante. A pesar de ello, hay optimismo sobre lo que podría lograrse en el futuro.
  • Se proporciona un enlace al resumen en audiolibro del paper.