1 pontos por GN⁺ 2024-02-25 | 1 comentários | Compartilhar no WhatsApp

O novo gerador de testes baseado em LLM da Meta oferece uma visão do futuro do desenvolvimento

  • A Meta publicou o artigo "Automated Unit Test Improvement using Large Language Models at Meta".
  • O artigo mostra como usar IA para acelerar o desenvolvimento e reduzir bugs de software.
  • Ao integrar LLMs ao fluxo de trabalho dos desenvolvedores, ele propõe melhorias de software precisas e completas para aprimorar a cobertura de código atual.

Pontos principais

  • O TestGen-LLM usa a abordagem 'Assured LLM-based Software Engineering' (Assured LLMSE).
  • Ele usa uma abordagem de ensemble que gera melhorias de código com vários LLMs, prompts e hiperparâmetros, e seleciona a melhor melhoria.
  • O TestGen-LLM foi projetado especificamente para melhorar testes já escritos por humanos.

Estatísticas

  • Na avaliação dos produtos Reels e Stories do Instagram, 75% dos casos de teste gerados pelo TestGen-LLM compilaram com sucesso, 57% passaram de forma confiável e 25% aumentaram a cobertura.
  • O TestGen-LLM conseguiu melhorar 10% de todas as classes às quais foi aplicado, e os desenvolvedores aceitaram 73% das melhorias de teste e as colocaram em produção.
  • Em um "test-a-thon" em que engenheiros da Meta geraram testes para aumentar a cobertura de testes do Instagram, a mediana das linhas de código adicionadas pelos testes do TestGen-LLM foi de 2,5.

Insights práticos

  • Este é um bom exemplo de como LLMs podem ser usados para melhorar com eficiência a produtividade de desenvolvimento e a confiabilidade de software.
  • O verdadeiro valor dos LLMs está em encontrar e capturar edge cases inesperados.
  • Para usar LLMs em produção, são necessários orquestração, pipelines e processamento.

Como o TestGen-LLM funciona

  • O TestGen-LLM aplica uma série de filtros semânticos às soluções candidatas geradas pelo LLM interno da Meta para preservar apenas os testes de maior valor.
  • Filtro 1: capacidade de compilação, Filtro 2: execução (se o teste passa), Filtro 3: instabilidade, Filtro 4: melhoria de cobertura.
  • Esses filtros de processamento garantem a melhoria da suíte de testes.

Conclusão

  • Este artigo é uma boa forma de acompanhar os avanços dos LLMs na área de confiabilidade de software, algo para o qual muitos desenvolvedores já usam LLMs.
  • Os LLMs serão cada vez mais capazes de encontrar bugs e testar sistemas de software cada vez mais complexos.

Opinião do GN⁺

  • Este artigo oferece insights interessantes sobre como a inteligência artificial pode impactar o futuro do desenvolvimento de software.
  • Ferramentas como o TestGen-LLM podem ser de grande ajuda para automatizar o trabalho dos desenvolvedores e aumentar a eficiência.
  • O avanço dessas tecnologias está seguindo na direção de reduzir a complexidade do desenvolvimento de software, melhorar a qualidade e economizar tempo dos desenvolvedores.

1 comentários

 
GN⁺ 2024-02-25
Comentários do Hacker News
  • Há quem ache interessante a tendência de usar LLMs (grandes modelos de linguagem) para escrever código de teste antes da implementação. Como os testes servem para descrever como o sistema deve funcionar, existe a visão de que essa é a parte que os humanos deveriam definir. Ainda assim, um LLM pode ser útil para apontar áreas que não foram especificadas, e sugerir testes unitários para essas áreas pode ser um uso apropriado da tecnologia.
  • Há críticas a um post no blog que destacou que, entre os casos de teste gerados pelo TestGen-LLM da Meta, a maioria cobria apenas 2,5 linhas adicionais de código, enquanto um único caso cobriu impressionantes 1326 linhas. Isso é um caso excepcional, e o artigo deixa claro que a maioria dos testes fica muito abaixo da cobertura de código esperada. Os autores do artigo chamam isso de "jackpot", deixando explícito que esse tipo de resultado não é comum.
  • Há a opinião de que escrever bons testes é difícil. Cobertura de código não é necessariamente algo bom por si só, e escrever testes demais pode tornar o programa rígido. Regenerar testes com LLM pode parecer um avanço, mas no fim isso pode se resumir apenas a criar um programa detector de mudanças.
  • Há quem aponte que o resumo do artigo sobre o TestGen-LLM não corresponde ao conteúdo real. O resumo menciona taxa de sucesso para casos de teste, mas o relatório de fato trata da taxa de sucesso para classes de teste, o que é uma afirmação bem diferente. A conclusão também representa essa diferença de forma incorreta.
  • Há compaixão pelos desenvolvedores do futuro que terão de manter código gerado por LLM. Existe a preocupação de que esse código seja difícil de administrar.
  • Há preocupação de que código de teste gerado por LLM crie um ambiente hostil para os desenvolvedores. Pode surgir a situação de precisar aprovar repetidamente testes gerados por LLM que são difíceis de manter. A escrita de testes pode até ser acelerada, mas isso não significa que a manutenção ficará mais fácil. Testes ajudam a revisar o design do código, e se não for fácil testar, talvez o design não seja bom. Testes oferecem tranquilidade automatizada e ajudam a evitar erros potenciais, mas quanto maior a cobertura, menor tende a ser o retorno sobre o investimento. LLMs só podem economizar tempo quando um desenvolvedor experiente já sabe o que deve ser testado.
  • Houve o relato de uma experiência usando GPT-4 para gerar testes unitários para um módulo TypeScript, e os testes produzidos funcionaram com sucesso.
  • Há dúvidas sobre como a IA pode saber quais testes devem ser escritos. A melhor forma de a IA ajudar no desenvolvimento de software seria responder às perguntas dos programadores sobre o código, às vezes com sugestões de código e às vezes sem elas. A IA deveria ajudar a entender o código e como melhorá-lo.
  • Há a opinião de que não é possível ter uma visão valiosa sobre código de IA sem experiência prática usando ferramentas reais e revisando a saída em uma base de código bem conhecida. Código de IA é um tema muito político, e muitas pessoas têm opiniões fortes. Ainda assim, existe vontade de experimentar de verdade. Como essas tecnologias têm custo de desenvolvimento muito alto, pode ser difícil justificar esse custo se as ferramentas de IA não melhorarem de forma significativa. Mesmo assim, há otimismo sobre o que poderá ser alcançado no futuro.
  • É fornecido um link para o resumo em audiolivro do artigo.