1 points par GN⁺ 2024-02-25 | 1 commentaires | Partager sur WhatsApp

Le nouveau générateur de tests basé sur les LLM de Meta offre un aperçu de l’avenir du développement

  • Meta a publié un article intitulé "Automated Unit Test Improvement using Large Language Models at Meta".
  • Cet article montre comment l’IA peut accélérer le développement et réduire les bugs logiciels.
  • En intégrant les LLM au workflow des développeurs, il propose des améliorations logicielles précises et complètes pour améliorer la couverture de code existante.

Points clés

  • TestGen-LLM utilise l’approche « Assured LLM-based Software Engineering » (Assured LLMSE).
  • Il adopte une approche d’ensemble qui génère des propositions d’amélioration du code à l’aide de plusieurs LLM, prompts et hyperparamètres, puis sélectionne la meilleure.
  • TestGen-LLM a été spécialement conçu pour améliorer des tests existants écrits par des humains.

Statistiques

  • Lors de l’évaluation des produits Reels et Stories d’Instagram, 75 % des cas de test générés par TestGen-LLM ont pu être compilés correctement, 57 % ont réussi de manière fiable, et 25 % ont augmenté la couverture.
  • TestGen-LLM a permis d’améliorer 10 % de toutes les classes auxquelles il a été appliqué, et les développeurs ont accepté 73 % des propositions d’amélioration de tests pour les déployer en production.
  • Lors d’un « test-a-thon » où les ingénieurs de Meta généraient des tests pour augmenter la couverture de test d’Instagram, la médiane des lignes de code ajoutées par les tests de TestGen-LLM était de 2,5.

Enseignements pratiques

  • C’est un bon exemple de la manière dont les LLM peuvent améliorer efficacement la productivité des développeurs et la fiabilité logicielle.
  • La véritable valeur des LLM réside dans leur capacité à trouver et à détecter des edge cases inattendus.
  • Pour utiliser les LLM en production, il faut de l’orchestration, des pipelines et du traitement.

Fonctionnement de TestGen-LLM

  • TestGen-LLM applique une série de filtres sémantiques aux solutions candidates générées par les LLM internes de Meta afin de ne conserver que les tests les plus utiles.
  • Filtre 1 : possibilité de compilation, filtre 2 : exécution (réussite ou échec du test), filtre 3 : instabilité, filtre 4 : amélioration de la couverture.
  • Ces filtres de traitement garantissent l’amélioration de la suite de tests.

Conclusion

  • Cet article constitue un bon moyen de suivre les progrès des LLM dans le domaine de la fiabilité logicielle, que de nombreux développeurs utilisent déjà.
  • Les LLM deviendront capables de trouver des bugs et de tester des systèmes logiciels de plus en plus complexes.

L’avis de GN⁺

  • Cet article offre un éclairage intéressant sur l’impact potentiel de l’intelligence artificielle sur l’avenir du développement logiciel.
  • Des outils comme TestGen-LLM peuvent grandement aider à automatiser le travail des développeurs et à améliorer l’efficacité.
  • Les avancées de ces technologies vont dans le sens d’une réduction de la complexité du développement logiciel, d’une amélioration de la qualité et d’un gain de temps pour les développeurs.

1 commentaires

 
GN⁺ 2024-02-25
Avis Hacker News
  • Certains trouvent intéressant que l’usage des LLM (grands modèles de langage) pour écrire du code de test tende à passer avant l’implémentation. Comme les tests servent à décrire comment le système doit fonctionner, il y a l’idée que cette partie devrait être définie par des humains. En revanche, les LLM peuvent être utiles pour signaler des zones non explicitées, et proposer des tests unitaires pour ces zones pourrait être une manière appropriée de les utiliser.
  • Des critiques visent le billet de blog affirmant que, parmi les cas de test générés par le TestGen-LLM de Meta, la plupart n’ont couvert que 2,5 lignes de code supplémentaires, tandis qu’un seul cas de test en a couvert pas moins de 1326. Cela est présenté comme un cas exceptionnel, et l’article précise que la plupart des cas de test restent très en dessous de la couverture de code attendue. Les auteurs parlent d’un « jackpot », indiquant clairement que ce résultat n’est pas courant.
  • Certains estiment qu’il est difficile d’écrire de bons tests. La couverture de code n’est pas nécessairement une bonne chose en soi, et écrire trop de tests peut rigidifier un programme. Régénérer des tests à l’aide d’un LLM peut sembler être un progrès, mais cela peut au final se résumer à fabriquer un simple programme de détection de changements.
  • Il est souligné que le résumé de l’article sur TestGen-LLM ne correspond pas à son contenu réel. Le résumé évoque un taux de réussite sur les cas de test, alors que le rapport traite en réalité d’un taux de réussite sur les classes de test, ce qui est très différent. La conclusion exprime aussi mal cette distinction.
  • Certains compatissent déjà avec les futurs développeurs qui devront maintenir du code généré par LLM. Ils craignent qu’un tel code soit difficile à gérer.
  • Des inquiétudes existent quant au fait que du code de test généré par LLM puisse créer un environnement hostile pour les développeurs. On pourrait se retrouver à devoir faire valider en permanence des tests générés par LLM, difficiles à maintenir. L’écriture des tests peut être accélérée, mais cela ne signifie pas forcément que leur maintenance sera plus simple. Les tests aident à examiner la conception du code, et si les tests ne sont pas faciles à écrire, c’est peut-être que la conception n’est pas bonne. Ils apportent une forme d’assurance automatisée et aident à éviter des erreurs potentielles, mais plus la couverture augmente, plus le rendement sur investissement diminue. Les LLM ne peuvent faire gagner du temps que si un développeur expérimenté sait déjà quoi tester.
  • Une personne raconte avoir utilisé GPT-4 pour générer des tests unitaires pour un module TypeScript, et avoir obtenu des tests qui fonctionnaient correctement.
  • Certains s’interrogent sur la façon dont l’IA peut savoir quels tests écrire. La meilleure manière pour l’IA d’aider au développement logiciel serait qu’elle réponde aux questions des programmeurs sur le code, avec parfois des suggestions de code et parfois non. Elle devrait pouvoir aider à comprendre le code et à voir comment l’améliorer.
  • Certains estiment qu’on ne peut pas avoir d’avis pertinent sur le code IA sans expérience pratique, c’est-à-dire sans avoir utilisé de vrais outils et examiné les sorties sur une base de code que l’on connaît bien. Le code IA est un sujet très politique, sur lequel beaucoup ont des opinions tranchées. Mais il y a aussi une envie réelle d’essayer. Comme ces technologies coûtent très cher à développer, il pourrait être difficile de justifier ce coût si les outils d’IA ne s’améliorent pas fortement. Malgré cela, il y a de l’optimisme quant à ce qui pourra être accompli à l’avenir.
  • Un lien vers un résumé audio du papier est fourni.