Tutorials

IA pour PHP : comment automatiser les tests unitaires avec l’AI Assistant

Read this post in other languages:

Les tests. Si vous voyez les choses comme moi, vous conviendrez qu’ils sont à la fois importants et ennuyeux. Ils font partie de ces tâches dont on sait qu’elles nous apporteront quelque chose de positif, mais que l’on trouve rébarbatives sur le moment.

Qu’est-ce qui fait que les tests sont si laborieux ?

En ce qui me concerne, c’est la charge de travail liée à la configuration initiale qui est le principal problème. Je sais qu’une fois qu’un test en mis en place, je pourrai y apporter des modifications et l’adapter tout au long de la durée de vie du projet, c’est vraiment le démarrage qui me rebute le plus.

Ne serait-ce pas génial si la phase initiale d’écriture d’un test pouvait être simplifiée ? Si on disposait d’un plan général pour les tests à utiliser comme point de départ et qu’on n’avait plus qu’à l’adapter en fonction de nos besoins ? Si on pouvait se focaliser sur les parties les plus sympas d’un projet et laisser notre ordinateur s’occuper des tâches ennuyeuses ?

L’IA peut nous aider sur ces différents points.

Nous avons récemment introduit un outil d’IA puissant dans tous nos IDE, dont PhpStorm : l’AI Assistant. Dans cet article, j’explique comment utiliser l’AI Assistant pour automatiser les tâches de programmations ennuyeuses et pouvoir se concentrer sur les parties les plus intéressantes du processus de tests.

Tests unitaires automatisés avec l’AI Assistant

La génération de tests unitaires constitue un très bon exemple du type d’aide que l’AI Assistant peut apporter. Prenons l’extrait de code suivant :

Cet extrait provient du projet open source RFC Vote. Vous pouvez trouver l’intégralité du code source ici. Ce projet permet à la communauté PHP de discuter des demandes de commentaires (RFC) ouvertes. Les participants peuvent partager des arguments pour ou contre et avoir des discussions constructives sur l’évolution de PHP.

Cette classe permet de créer un commentaire sur un argument existant. Un commentaire appartient à un utilisateur, fait référence à un argument et a un corps. Enfin, chaque fois qu’un commentaire est écrit, des notifications doivent être envoyées à tous les utilisateurs suivant l’argument spécifique.

Nous allons utiliser l’AI Assistant pour créer un test et voir ce que cela donne.

Commencez par placer le curseur dans le corps de la méthode __invoke, puis appuyez sur Alt+Entrée et sélectionnez AI Actions | Generate Unit Tests dans le menu contextuel.

L’AI Assistant va maintenant écrire pour vous une ébauche de test pour cette classe. Si vous souhaitez savoir comment l’AI Assistant procède, lisez cet article. Lorsque l’AI Assistant a terminé, vous disposez d’une première version, comme ci-dessous :

Vous pouvez alors appuyer sur le bouton Accept all, ce qui créera un nouveau fichier de test au bon endroit et copiera cette ébauche dans le fichier de test réel, ou choisir d’appuyer sur le bouton Refresh afin de générer une nouvelle implémentation au cas où vous ayez détecté des problèmes.

Pour ma part, j’ai actualisé une ou deux fois avant d’opter pour Accept all et d’exécuter mon test.

Pratique, non ?

Mais attendez, il y a quelques points à préciser.

Tout d’abord, toutes les générations de tests ne fonctionnent pas forcément parfaitement du premier coup. Par exemple, certaines versions incluent le trait RefreshDatabase, une pratique courante dans les tests Laravel. Cependant, dans ce projet, les tests de base de données sont configurés un peu différemment, j’ai donc dû apporter un petit ajustement à la sortie générée. Parfois, il arrive aussi que le résultat proposé par l’AI Assistant ne corresponde pas exactement à votre style de code. Bien qu’il prenne en compte les paramètres de style de code, certains détails sont plus complexes à traiter et il peut y avoir quelques imperfections.

Ceci dit, il faut garder à l’esprit que l’objectif n’est pas de générer le test parfait, mais d’avoir une structure pour nous servir de base. L’AI Assistant a une excellente compréhension du contexte de ce que nous souhaitons tester et son efficacité nous permet de gagner du temps et de nous concentrer sur les aspects les plus intéressants des tests.

Automatisation pour Pest

Bien que le framework de test Pest soit relativement récent, son utilisation a connu une croissance significative en 2023. Par ailleurs, l’équipe PhpStorm a pris en charge le développement du plugin Pest en octobre l’année dernière. La prise en charge de Pest par l’AI Assistant est en cours de développement et sera disponible dans la prochaine version majeure, PhpStorm 2024.1. Nous allons bientôt publier plusieurs articles de blog montrant comment les utilisateurs de Pest peuvent bénéficier de l’AI Assistant., alors restez à l’écoute.

Conclusion

Avoir la possibilité de créer automatiquement des tests unitaires avec un minimum d’intervention manuelle est déjà très satisfaisant, mais il reste encore quelques ajustements à apporter.

Nous vous invitons à lire cet article de blog, dans lequel nous examinons plus en détail comment optimiser la génération de tests avec l’AI Assistant pour gagner encore plus de temps. Pour ne rien manquer de notre actualité, abonnez vous à notre blog dans la section ci-dessous !

Liens utiles

Ressources :

Vidéos :

Auteur de l’article original en anglais :

Delphine Massenhove

Brent Roose

image description

Discover more