Depuis la sortie de ChatGPT en novembre dernier, les utilisateurs n’ont de cesse d’étendre chaque jour les cas d’utilisation de cet outil d’intelligence artificielle (IA) afin de faciliter et accélérer leurs tâches aussi bien triviales que fastidieuses. Récemment, les contributeurs au projet StarRocks, - la plateforme permettant de faciliter et accélérer les analyses de données en temps réel, - se sont livrés à une activité bien particulière consistant à utiliser ChatGPT pour des tests automatisés de base de données afin de voir s’il pourrait remplacer des outils tels que SQLsmith, SQLancer et bien plus encore. À l’issue des séances d’apprentissage et de tests, il s’avère que les résultats sont assez impressionnants et prometteurs. Mais pourrait-il remplacer des outils matures de test automatisés ?ChatGPT face à SQLsmith
SQLsmith est un outil de tests automatisés de base de données qui génère des requêtes SQL aléatoires basées sur un schéma de table fixe et qui exécute les requêtes sur les bases de données pour tester ses performances et sa robustesse. Pour tester les aptitudes de ChatGPT dans les tests automatisés, l’équipe de StarRocks a fourni les instructions suivantes : « Please generate the select statements with five table join, aggregate, sort, limit, window function, multi subqueries, multi string functions, multi date functions, json functions for testl_basic tables by in Starrocks syntax ». Selon les instructions reçues, ChatGPT a produit la requête complexe ci-dessous :
Étant donné que ChatGPT a réussi générer facilement des requêtes SQL complexes et aléatoires basées sur des entrées en langage naturel, les développeurs de StarRocks déclarent que « ChatGPT est bien placé pour remplacer le travail de SQLsmith ». Mais pour l’heure, cela ne signifie pas que ChatGPT pourrait systématiquement remplacer complètement SQLsmith dans toutes ses tâches.
Dans leur démarche, les mainteneurs de StarRocks ont poussé encore plus loin leurs tests en cherchant à voir si l’outil d’intelligence artificielle peut valablement être utilisé pour maintenir des outils de tests automatisés de base de données. Quiconque a utilisé ces outils reconnaît qu’il s’agit d’un problème majeur. Chaque fois qu’une nouvelle fonction, un nouvel opérateur ou un nouveau type de données est ajouté, les ingénieurs doivent mettre à jour le code source de leurs outils comme SQLsmith et SQLancer. C’est à la fois fastidieux et chronophage.
Pour s’assurer que ChatGPT pouvait effectivement assumer cette tâche, les développeurs de StarRocks ont demandé à ChatGPT d’écrire une requête à l’aide des fonctions StarRocks JSON. Initialement, ChatGPT a répondu que StarRocks ne prenait pas en charge les fonctions JSON. Mais après avoir transmis les documents JSON de StarRocks à ChatGPT, l’outil d’intelligence artificielle a pu apprendre des documents fournis et a réussi à générer une requête SQL avec les fonctions JSON de StarRocks. Ci-dessous, une copie des instructions en langage naturel et les requêtes générées par l’IA.
Vu les résultats obtenus, les testeurs soutiennent que s’il « est clair que ChatGPT n’est peut-être pas prêt à être déployé actuellement, il démontre une incroyable capacité à apprendre et à s’adapter rapidement lorsque le matériel d’apprentissage nécessaire est fourni ».
ChatGPT contre SQLancer
Voyant à quel point ChatGPT s’est bien comporté par rapport à SQLsmith, l’équipe de StarRocks s’est lancée dans un nouveau test de ChatGPT, cette fois-ci en cherchant à voir comment l’IA se comparait à SQLancer en testant le principe de partitionnement logique ternaire (TLP) de SQLancer. SQLancer (Synthesized Query Lancer) en lui-même est un outil qui permet de tester automatiquement les systèmes de gestion de bases de données (SGBD) afin de trouver des bogues logiques, c’est-à-dire des bogues qui amènent le SGBD à récupérer un ensemble de résultats incorrect dans leur implémentation.
Pour ce faire, un schéma du principe TLP, dans lequel une requête SQL aléatoire (Q) et un prédicat (P) ont été fournis, avec trois prédicats (P, non P, et P est null) appliqués à la requête. Une Union All est ensuite effectuée sur les résultats des trois requêtes. Au départ, ChatGPT n’était pas à même de gérer ces différents scénarios. Mais après près d’une douzaine de sessions de...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.