Éditeurs

Tester c’est douter mais… si une IA le fait pour nous, c’est OK ?

Meme safe roll, un homme qui se trouve intelligent - et si l'IA nous faisait gagner du temps pour nos tests ?

Les tests, tout le monde devrait être assez d’accord pour dire que c’est aussi ennuyeux que c’est important. Et si les écrire ne devenait (presque) qu’un mauvais souvenir ? 👀

Avis aux développeurs PHP parmi vous : c’est la promesse faite par JetBrains aux utilisateurs de son IDE PhpStorm, ceci grâce à l’AI Assistant, qui a récemment pris place au coeur des solutions de l’éditeur.

On va pas se mentir, une IA qui se charge des tests unitaires à notre place, ça fait plutôt rêver. D’autant que près d’un tiers des développeurs PHP n’écriraient tout simplement pas de tests pour leur code (hum).

Alfred et Bruce Wayne dans The Dark Knight Rises, avec le texte 'Some développeurs PHP just want to watch the world burn'

/* En partenariat avec JetBrains */

Automatiser ses tests grâce à l'AI Assistant de JetBrains

Qu’on se le dise, le truc bien relou avec les tests (s’il n’en faut qu’un pour commencer), c’est leur écriture et leur configuration initiale (aled).

Figurez-vous que c’est justement le premier point sur lequel l’AI Assistant de JetBrains est capable de prendre la main, afin de simplifier la vie des devs en proposant un "premier jet" de ce à quoi pourrait ressembler un test.

L’AI Assistant ne se contente pas de créer des tests basiques : la solution est capable de comprendre la structure de votre code et de proposer des tests pertinents afin de couvrir une grande variété de cas d’usage.

Dans un article sur son blog officiel, JetBrains présente la manière dont fonctionne la création et la génération de tests unitaires avec l’AI Assistant dans PhpStorm.

Génération des tests unitaires depuis le menu contextuel AI Actions de PhpStorm

En sélectionnant par exemple la fonction PHP sur laquelle vous souhaitez porter vos tests, l’AI Assistant de JetBrains est capable de fournir une première version de test pour cette classe.

Un aperçu du fichier de test permet au développeur de prendre la main si celui-ci souhaite apporter quelques modifications avant validation.

Aperçu du fichier de test généré par l'AI Assistant de JetBrains dans PhpStorm

Et voilà.

En un simple clic, l’AI Assistant est capable de fournir une version initiale pas du tout dégueu pour votre test, adaptée à votre projet. Une génération qui, somme toute, fait gagner beaucoup de temps — sur un travail de setup qui plus est pas forcément passionnant.

Cette première approche offerte par l’AI Assistant permet aux développeurs de disposer d’une base solide pour leurs tests, qu’ils peuvent ensuite peaufiner et adapter selon leurs besoins spécifiques.

Ah oui tiens, c’est vrai ça : comment on les fait évoluer ces tests ?

Améliorer ses tests avec l’AI Assistant

Bien que l’IA soit canon sur pas mal d’aspects, celle-ci n’est pas encore (à ce jour 👀) dotée d’un pouvoir de mentalisme.

Ainsi, il se peut que vous souhaitiez améliorer le test généré en première intention par l’AI Assistant pour que celui-ci réponde à une problématique bien particulière pour vous, ou à un besoin plus précis et/ou complet.

Pas la peine de vous ruer sur votre clavier pour enchaîner les lignes de code : vous pouvez faire évoluer les tests générés par l’assistant à l’aide de prompts (indications), un peu comme ce qui se fait avec les agents conversationnels grand public comme ChatGPT.

Un bouton "Specify" directement accessible depuis PhpStorm permet "d’étoffer" le prompt à destination de l’AI Assistant, afin de modifier vos tests avec des précisions complémentaires.

Envoi d'un prompt complémentaire à l'AI Assistant depuis PhpStorm

Dans la capture ci-dessus, on lui demande par exemple d’utiliser le framework Mockery plutôt qu’avec les Factories de Laravel pour un test déjà existant.

Après validation, l’AI Assistant se charge de la mise à jour du code en tenant compte de cette nouvelle indication. Vous avez la possibilité de travailler avec cette approche pour faire évoluer de manière itérative vos tests grâce à cet assistant intelligent.

Gardez bien en tête que les derniers ajustements restent à votre charge (pas la peine de s’acharner pendant une heure sur un prompt "parfait" alors que la mise à jour à la mano vous prendrait 2-3 minutes), mais clairement, le plus gros est fait.

De même, l’AI Assistant garde une mémoire de vos prompts afin de s’adapter à votre manière de travailler.

Pour revenir à l’exemple précédent, il est ainsi fort probable que l’AI Assistant propose dans la foulée des tests basés par défaut sur Mockery.

OSS 117 (Jean Dujardin) en train de dire 'Habile, Bill'

Et pourquoi pas le chemin inverse ?

Bonne nouvelle pour les adeptes du TDD : l’AI Assistant peut également vous accompagner dans la génération de code sur base des tests que vous avez écrits.

Pour cela, il vous faut déclencher le lancement d’un chat avec l’assistant après avoir sélectionné le test pour lequel vous souhaiter générer du code.

Le code concerné apparaît dans la fenêtre d’échange avec l’IA, et il est alors possible de demander la génération d’une implémentation pour le test en question.

Génération d'une implémentation pour le test sélectionné

Cerise sur le gâteau, vous avez la possibilité de sauvegarder vos prompts personnalisés pour que ceux-ci apparaissent directement dans le menu contextuel "AI Actions" de PhpStorm (très très cool).

Présence d'un nouveau menu contextuel 'Write Implementation' dans le menu AI Actions
Un exemple ici avec l’action customisée "Write Implementation"

Cette fonctionnalité vous permet de profiter d’actions réutilisables et assistées par l’IA, un véritable booster de productivité pour vous permettre de vous concentrer sur l’essentiel : votre code et sa qualité.

Découvrir comment utiliser l’AI Assistant dans PhpStorm sur le blog de JetBrains

Essayer PhpStorm (essai gratuit de 30 jours)

À propos de l'auteur
Nicolas Lecointre
Chief Happiness Officer des développeurs, ceinture noire de sudo. Pour rire, j'ai créé Les Joies du Code. J'utilise Vim depuis 10 ans parce que je sais pas comment le quitter.