Utilisation de ChatGPT pour l’automatisation des tests logiciel

ChatGPT Automatisation des tests logiciels

C’est le sujet dont tout le monde parle dans l’IT en ce début d’année 2023 !

Une nouvelle IA conversationnelle, sous forme de Chatbot, qui serait capable de discuter avec vous comme un humain et de répondre à toutes vos questions, même les plus complexes, voire de réaliser des tâches pour vous !

ChatGPT a battu tous les records Internet en devenant viral dès la première semaine de son lancement. Un million d’utilisateurs en 5 jours, c’est du jamais vu.

Comment utiliser ChatGPT pour faciliter l’automatisation des tests logiciel ?

Une IA conversationnelle qui peut répondre à des questions basées sur le langage naturel et créer des poèmes, écrire des scénarios de films, écrire des publications sur les réseaux sociaux, rédiger des essais descriptifs et faire des tonnes de choses incroyables. Lorsque nous avons eu accès à la plate-forme, notre première pensée a été de savoir comment utiliser cette incroyable plate-forme pour faciliter la vie des testeurs d’applications Web et mobiles. Et surtout, comment nous pouvons utiliser cet outil pour faciliter l’automatisation de ces tests ?

Le premier cas d’utilisation était lié à la génération de cas de test. Des choses comme écrire des cas de test pour tester Google ou une liste de cas de test pour tester un formulaire de connexion. Mais l’une des fonctionnalités les plus importantes de ChatGPT est qu’il peut également écrire du code. C’est également dans plusieurs langages de programmation, tirant parti de tous les frameworks de test automatisés les plus populaires et sur plusieurs technologies.

Nous avons immédiatement exploré comment nous pourrions tirer parti de ChatGPT pour les tests d’automatisation et dans quelle mesure. Nous avons commencé par générer des cas de test simples, puis avons utilisé ChatGPT pour créer un pipeline d’automatisation de test complexe avec des étapes CI/CD et du code bash pour tester une application avec plusieurs microservices.

Et pour tout cela, ChatGPT nous a fourni un code bien documenté avec des instructions simples à comprendre sur la façon d’utiliser le code.

Cet article présentera notre parcours étape par étape sur la façon dont nous avons créé un pipeline de test d’automatisation à l’aide de ChatGPT. Mais d’abord, pour les non-initiés, regardons ChatGPT, un chatbot construit sur le GPT-3.5.

De plus, avant d’aller plus loin, il est important de souligner que tout le code généré ci-dessous n’est pas parfait. Ils sont assez proches du code exécutable dans la plupart des cas ; cependant, il reste des problèmes, allant d’erreurs de syntaxe à des étapes cruciales manquantes en raison de lacunes contextuelles. Mais les développeurs expérimentés peuvent fournir suffisamment de passe-partout pour qu’il devienne facile à modifier, à déboguer et à exécuter de manière indépendante.

Qu’est-ce que ChatGPT ?

Le 30 novembre 2022, OpenAI a publié un chatbot de traitement du langage de conversation basé sur le dernier modèle de langage Generative Pre Training (GPT). Le chatbot, nommé ChatGPT, construit au-dessus du GPT-3.5 peut créer des réponses cohérentes et bien articulées aux requêtes sur un large domaine de sujets.

GPT-3.5, le modèle de langage fonctionnant dans les coulisses de ChatGPT, est un modèle de langage auto-régressif qui prédit les mots suivants dans une séquence de mots en fonction du contexte des mots qui le précèdent. GPT utilise des technologies de pointe de traitement du langage naturel et d’apprentissage en profondeur pour créer des sorties linguistiques d’une telle qualité qu’il brouille la frontière entre les réponses de la machine et celles de l’homme.

Découvrez comment ChatGPT, qui est basé sur ChatGPT-3.5, peut être utilisé pour l’automatisation des tests en regardant cette vidéo.

Commencer par un simple script de test d’automatisation à l’aide de ChatGPT

Nous avons commencé par une invite très simple. Créons un code simple utilisant Selenium avec Java qui peut ouvrir Google.com et imprimer son titre. Et surtout, le code doit pouvoir s’exécuter sur la grille Selenium du cloud LambdatTest . Nous avons donc ouvert la plateforme et tapé notre première question.

Question : Écrivez un code Selenium et Java pour ouvrir google.com et imprimer son titre. Le code doit s’exécuter sur LambdaTest

ChatGPT : Pour écrire un test Selenium en Java pour ouvrir Google.com et imprimer son titre, qui s’exécutera sur LambdaTest, vous pouvez utiliser le code suivant :

ChatGPT test logiciel 1

Ce test ouvrira Google.com dans un navigateur Chrome sur un système d’exploitation Windows 10, obtiendra le titre de la page et l’imprimera sur la console. Pour exécuter le test sur LambdaTest, assurez-vous que la bibliothèque Selenium Java est installée, puis compilez et exécutez le code à l’aide d’un compilateur Java tel que javac et java. Le test sera exécuté sur la grille LambdaTest et les résultats seront affichés dans votre tableau de bord LambdaTest .

La réponse ci-dessus montre que la plate-forme a automatiquement ajouté des fonctionnalités LambdaTest complexes telles que l’URL du concentrateur, les fonctionnalités souhaitées et l’invite d’ajout de clés d’accès et de noms d’utilisateur. Tout cela est nécessaire pour exécuter le test sur LambdaTest.

ChatGPT pour un cas de test d’automatisation complexe

Nous savons maintenant que l’écriture de scripts d’automatisation simples est un jeu d’enfant pour ChatGPT. Cependant, la simplicité ne suffit pas toujours. Lorsque nous effectuons une automatisation Web, nous sommes souvent obligés de faire face à un scénario de test d’automatisation complexe, qu’il s’agisse de tester des API ou de tester des microservices. ChatGPT, une version affinée de la série GPT-3.5, peut-il nous faciliter la vie si nous transmettons un cas de test d’automatisation complexe ? Découvrons-le !

Q : Supposons que j’ai une plate-forme de test selenium qui permet aux utilisateurs de pointer leurs tests Selenium sur hub.lambdatest.com. Cette plate-forme se compose de 4 microservices responsables des détails suivants.

  1. Le premier microservice accepte les tests Selenium et appelle le second microservice pour créer une entité de test dans la base de données.
  2. Le premier service se connecte ensuite au troisième service, qui lui fournit un conteneur docker Linux où sont présents les pots Selenium et les navigateurs Web.
  3. Après avoir reçu les détails du conteneur Docker, le premier service transmet les requêtes HTTP au conteneur Docker.
  4. Le quatrième service collecte les journaux d’exécution des tests à partir du conteneur Docker et expose les API pour renvoyer différents journaux pour chaque test Selenium.

Appelons le premier service hub_service, le deuxième service test_management_service, le troisième service linux_container_service et le quatrième service log_management_service. Écrivez une définition de cuncumber pour tester cette plate-forme.

Nous avons donc posé ce scénario de test sous forme de question à ChatGPT et voici ce que nous avons obtenu :

ChatGPT :

ChatGPT test logiciel 2

Cette définition Cucumber couvre les principales fonctionnalités de la plate-forme, notamment l’envoi d’un test Selenium au hub_service, la création d’une entité de test dans la base de données, l’obtention d’un conteneur Docker pour exécuter le test et la collecte des journaux d’exécution des tests. Il inclut également des assertions pour garantir que le test s’exécute avec succès et que les journaux de test peuvent être récupérés.

Si nécessaire, vous pouvez ajouter des étapes et des scénarios supplémentaires pour couvrir des fonctionnalités plus spécifiques ou des cas extrêmes.

Ajout de cas de test négatifs avec ChatGPT

En parlant de cas extrêmes, il est important de noter que la définition de cuncumber que nous avons reçue de ChatGPT pour notre scénario de test complexe ne prend pas en compte les cas de test négatifs. Demandons à ChatGPT, qui est construit sur ChatGPT-3.5, d’inclure correctement les cas de test négatifs.

Q : Générer des tests négatifs lorsque test_service et linux_container_service échouent

ChatGPT : Voici quelques scénarios de test négatifs supplémentaires qui peuvent être ajoutés à la définition de cuncumber pour tester les échecs dans le test_management_service et le linux_container_service :

ChatGPT test logiciel 3

Ces scénarios testent les échecs dans test_management_service et linux_container_service, respectivement, et incluent des assertions pour s’assurer que le test ne s’exécute pas et qu’un message d’erreur s’affiche indiquant l’échec. Vous pouvez ajouter des scénarios de test négatifs similaires pour d’autres microservices si nécessaire.

Mélangeons des cas de test positifs et négatifs dans Cuncumber

Avec ChatGPT, nous avons maintenant des cas de test positifs et négatifs pour un scénario de test d’automatisation complexe. Nous pouvons aller plus loin maintenant et créer des définitions de test Cucumber révisées pour les cas de test positifs et négatifs. Nous avons donc demandé à ChatGPT (construit sur ChatGPT-3.5) de faire de même.

Q : Écrire des tests de cuncumber pour les cas positifs et négatifs pour les quatre services

ChatGPT : Voici une définition révisée de Cucumber qui inclut des scénarios de test pour les cas positifs et négatifs pour les quatre services :

ChatGPT test logiciel 4

Cette définition de cuncumber comprend des scénarios de test pour les cas positifs et négatifs pour les quatre services. Le scénario positif couvre les principales fonctionnalités de la plate-forme, tandis que les scénarios négatifs testent les défaillances de chacun des microservices. Ces scénarios incluent des assertions pour garantir que la plateforme se comporte comme prévu dans les cas positifs et négatifs.

Utiliser Playright et Cucumber avec ChatGPT

Juste comme ça, nous avons sorti des fichiers de test Cucumber générés instantanément pour un scénario de test très complexe. Faisons appel à ChatGPT pour automatiser les cas Cucumber avec le framework Playwright . Et donc nous avons demandé :

Q : Générer l’implémentation du test Playwright pour les cas Cucumber ci-dessus

ChatGPT : Voici un exemple d’implémentation Playwright de la définition de cuncumber fournie dans la réponse précédente :

ChatGPT test logiciel

Exécuter le test sur le Cloud d’un site internet

Félicitations à ChatGPT pour avoir distribué un script de test Playwright prêt à l’emploi basé sur des cas de test Cucumber. Cependant, ce script Playwright pourrait être moins utile pour quelqu’un qui utilise une plate-forme d’exécution de test basée sur le cloud telle que le site LambdaTest. Pourquoi? Le script peut nécessiter des modifications dans la déclaration des fonctionnalités et l’authentification auprès du cloud LambdaTest.

Il serait donc intéressant de savoir si ChatGPT est capable de nous aider avec un script Playwright prêt à l’emploi pour le cloud LambdaTest. Et mon Dieu, nous avons été stupéfaits.

Q : Faites pointer les tests Selenium ci-dessus vers hub.lambdatest.com

ChatGPT : Pour faire pointer les tests Selenium ci-dessus vers hub.lambdatest.com, vous devrez modifier la variable TEST_URL pour qu’elle pointe vers l’URL appropriée sur LambdaTest. Par exemple :

1 const TEST_URL = ‘https://hub.lambdatest.com/wd/hub’;

Vous devrez peut-être également fournir des options de configuration supplémentaires, telles que le navigateur et la plate-forme souhaités, ainsi que vos informations d’identification LambdaTest. Cela peut généralement être fait en utilisant la fonction playwright.chromium.launch ou en passant des paramètres supplémentaires à la fonction page.goto.

Par exemple :

Vous devrez peut-être également modifier les scénarios de test pour refléter la fonctionnalité spécifique fournie par LambdaTest. Par exemple, vous devrez peut-être mettre à jour les étapes de création d’une entité de test dans la base de données ou de collecte des journaux d’exécution des tests.

Ceci est un exemple d’implémentation et peut ne couvrir que certaines des étapes nécessaires pour les tests d’automatisation LambdaTest for Playwright . Reportez-vous à la documentation LambdaTest pour plus d’informations sur la configuration et l’exécution des tests Playwright sur la plateforme.

Pouvons-nous faire cela pour chaque microservice ?

Jusqu’ici tout va bien. Cependant, ne serait-il pas formidable si nous pouvions modifier le script de test ci-dessus pour les quatre microservices dont nous avons discuté dans notre scénario de test complexe, c’est-à-dire hub_service, test_management_service, linux_container_service et log_management_service.

Q : Modifiez les scénarios de test ci-dessus pour interroger directement les quatre microservices

ChatGPT : Pour modifier les cas de test ci-dessus afin d’interroger directement les quatre microservices, vous devrez mettre à jour les variables TEST_URL et TEST_LOGS_API pour pointer vers les URL appropriées pour chaque microservice.

Par exemple :

Cette implémentation révisée interroge les quatre microservices directement à l’aide des URL spécifiées dans les variables “HUB_SERVICE_URL”, “TEST_MANAGEMENT_SERVICE_URL”, “LINUX_CONTAINER_SERVICE_URL” et “LOG_MANAGEMENT_SERVICE_URL”. Vous pouvez mettre à jour ces variables vers les URL appropriées pour votre implémentation spécifique.

Vous devrez peut-être également mettre à jour les scénarios de test pour refléter les fonctionnalités spécifiques fournies par chaque microservice. Par exemple, vous devrez peut-être ajouter des étapes supplémentaires pour créer une entité de test dans la base de données ou collecter des journaux d’exécution de test.

N’oubliez pas qu’il ne s’agit que d’un exemple d’implémentation et qu’il ne couvre peut-être pas tout le nécessaire.

Vérifier la création de l’entité de test dans la base de données

Comme l’a souligné ChatGPT, nous devons spécifier une URL pour le test_management_service. Signalons cela à testservice.lambdatesinternal.com. De plus, il serait intéressant de voir si nous pouvons nous appuyer sur ChatGPT, construit sur ChatGPT-3.5 pour vérifier si nous obtenons un résultat dans la base de données en ajoutant une touche de MySQL.

Q : Supposons que test_management_service pointe vers testservice.lambdatesinternal.com. Ajoutez des scénarios de test supplémentaires pour vérifier si l’entité de test est créée avec succès dans la base de données. Supposons que test_management_service utilise MySQL

ChatGPT : Voici quelques cas de test supplémentaires qui peuvent être ajoutés pour vérifier si l’entité de test est créée avec succès dans la base de données par le test_management_service :

Ces cas de test couvrent la création et la vérification de l’entité de test dans la base de données à l’aide de test_management_service. Le premier cas de test envoie une demande au test_management_service et affirme que la réponse est réussie, indiquant que l’entité de test a été créée.

Le deuxième cas de test interroge la base de données pour vérifier que l’entité de test a été créée. Vous devrez modifier le bloc page.evaluate pour inclure le code de connexion à la base de données MySQL et exécuter la requête appropriée.

N’oubliez pas qu’il ne s’agit que d’un exemple d’implémentation et qu’il ne peut couvrir que certaines des étapes nécessaires pour interagir avec test_management_service et la base de données MySQL. Reportez-vous à la documentation test_management_service et MySQL pour plus d’informations sur l’accès et l’interrogation de la base de données.

Affiner MySQL Touch avec ChatGPT

Nous avons même obtenu un hit dans la base de données pour le bon microservice. Il est maintenant temps de relier les points avec la base de données à l’aide de MySQL. Et donc, nous avons demandé au ChatGPT de :

Q : Ajouter une logique pour se connecter et interroger Mysql dans les cas de test ci-dessus

ChatGPT : pour ajouter une logique de connexion et d’interrogation de MySQL dans les cas de test ci-dessus, vous pouvez utiliser le package mysql npm pour établir une connexion à la base de données et exécuter des requêtes.

Voici un exemple de la façon dont cela peut être fait :

Cette implémentation utilise mysql.create.

Ajoutons de la résilience au code avec ChatGPT

Impressionnant! Maintenant que nous avons la requête MySQL, notre préoccupation immédiate est de nous assurer que les tests sont résilients. Si un microservice devient temporairement indisponible, le test doit automatiquement réessayer. Alors ajoutons-y de la résilience. ChatGPT, seriez-vous si gentil ?

Q : Ajoutez de la résilience dans les cas de test ci-dessus où test_management_service devient temporairement indisponible en ajoutant des tentatives.

ChatGPT : pour ajouter de la résilience aux cas de test ci-dessus où le test_management_service peut devenir temporairement indisponible, vous pouvez ajouter des tentatives en utilisant une boucle et un délai entre chaque nouvelle tentative.

Voici un exemple de la façon dont cela peut être fait :

Cette implémentation inclut une boucle qui relance le test jusqu’à maxRetries fois, avec un retryDelay de 1 seconde entre chaque nouvelle tentative. Le test échouera si l’entité de test n’est pas trouvée dans la base de données après un nombre maximal de tentatives. Cela peut garantir que le test réussira toujours même si le test_management_service devient temporairement indisponible.

N’oubliez pas qu’il ne s’agit que d’un exemple d’implémentation et qu’il ne peut couvrir que certaines étapes nécessaires pour ajouter des tentatives au test. Vous devrez peut-être ajuster la logique et le délai de nouvelle tentative en fonction de vos besoins spécifiques.

Rendre plus sécurisé grâce aux variables d’environnement

ChatGPT (version affinée de ChatGPT-3.5) peut-il nous aider à ajouter les valeurs de connexion MySQL en tant que variables d’environnement ? Voyons.

Q : Je souhaite transmettre les valeurs de connexion mysql via des variables d’environnement

ChatGPT : pour transmettre les valeurs de connexion MySQL en tant que variables d’environnement dans les cas de test ci-dessus, vous pouvez utiliser l’objet process.env pour accéder aux valeurs lors de l’exécution.

Voici un exemple de la façon dont cela peut être fait :

Planifier une action GitHub et récupérer les résultats des tests avec l’API d’un site internet

De l’écriture d’un script d’automatisation pour les tests front à la génération d’une requête de base de données et à la connexion des points. Ne serait-ce pas un conte de fées si nous pouvions demander à ChatGPT de nous aider à effectuer des tests continus en configurant une action GitHub pour notre scénario de test, en planifiant les tests et en récupérant les résultats des tests depuis la plate-forme LambdaTest à l’aide des API LambdaTest ?

Nous avons donc demandé au ChatGPT de :

Q : Écrivez une action GitHub pour exécuter tous les tests ci-dessus tous les jours à 9h00 et dirigez-les vers LambdaTest. En outre, écrivez une étape pour récupérer le résultat du test à partir de LambdaTest à l’aide de leurs API.

ChatGPT : Voici un exemple d’action GitHub qui exécute les tests ci-dessus tous les jours à 9 h 00 et les dirige vers LambdaTest :

Cette action est déclenchée par un événement programmé tous les jours à 9h00, comme spécifié sur le bloc. Il effectue les étapes suivantes :

  1. Consultez le référentiel à l’aide de l’action actions/checkout.
  2. Configurez Node.js à l’aide de l’action actions/setup-node.
  3. Installez les dépendances à l’aide de npm install.
  4. Exécutez les tests à l’aide du test npm.

Les variables d’environnement TEST_URL, USERNAME et ACCESS_KEY sont transmises à l’action pour configurer les tests à exécuter sur LambdaTest. Les valeurs USERNAME et ACCESS_KEY sont extraites des secrets du référentiel, qui peuvent être configurés dans les paramètres du référentiel.

Pour récupérer les résultats de test de LambdaTest à l’aide de leurs API, vous pouvez utiliser le package http-client npm pour envoyer des requêtes HTTP à l’API LambdaTest.

Voici un exemple de la façon de récupérer les résultats du test :

Cette fonction envoie une requête GET à l’API LambdaTest pour récupérer les résultats du test pour l’ID de session spécifié. Les valeurs username et accessKey sont transmises en tant qu’informations d’identification d’authentification de base HTTP. Le corps de la réponse est renvoyé par la fonction et est accessible pour récupérer les résultats du test.

Vous pouvez inclure cette fonction dans votre script de test et l’appeler après avoir exécuté les tests pour récupérer les résultats des tests. Vous pouvez également ajouter la gestion des erreurs et les tentatives à la fonction au cas où.

Un fichier Package.json avec les étapes ci-dessus

L’étape suivante consistait à rendre tout ce processus portable. Créez un fichier package.json qui téléchargera toutes les dépendances et créera l’environnement pour exécuter les scripts de test mentionnés ci-dessus.

Q : Écrivez un fichier package.json avec différents scripts pour exécuter les tests ci-dessus et récupérer les résultats à partir des API LambdaTest.

ChatGPT : voici un exemple de fichier package.json avec différents scripts pour exécuter les tests ci-dessus et récupérer les résultats des API LambdaTest :

Ce fichier package.json inclut les scripts suivants :

  • test : exécute les tests à l’aide de Playwright.
  • fetch-results : récupère les résultats du test à partir de LambdaTest à l’aide du script fetch-results.js.
  • run-tests : exécute les tests et récupère les résultats dans l’ordre.

Pour exécuter les tests et récupérer les résultats, vous pouvez utiliser le script run-tests en exécutant npm run run-tests. Cela exécutera les scripts de test et de récupération des résultats dans l’ordre.

Vous devrez créer le script fetch-results.js pour contenir la logique de récupération des résultats de test à partir de LambdaTest, comme illustré dans l’exemple précédent.

N’oubliez pas qu’il ne s’agit que d’un exemple d’implémentation et qu’il peut ne pas inclure.

Mettons tout cela sur le GitHub Repo

Nous avons maintenant le début d’un flux de travail de test d’automatisation complet. Dans les prochaines étapes, nous souhaitons transférer tout cela sur GitHub avec un fichier YAML GitHub Actions complet pour automatiser le flux de travail sur GitHub.

Q : Créer un référentiel GitHub avec tous les fichiers Cucumber, les fichiers de test, les nodejs et le code d’action GitHub

ChatGPT : Pour créer un référentiel GitHub avec tous les fichiers nécessaires à l’exécution des tests Selenium, vous pouvez suivre ces étapes :

  1. Créez un nouveau référentiel sur GitHub.
  2. Clonez le référentiel sur votre machine locale.
  3. Créez un répertoire pour les tests Selenium, tel que tests/.
  4. Créez les fichiers de fonctionnalité Cucumber et les fichiers de test dans le répertoire tests/.
  5. Initialisez le référentiel en tant que projet Node.js en exécutant npm init dans le répertoire racine du référentiel.
  6. Installez les dépendances nécessaires, telles que Playwright et le package http-client npm, en exécutant npm install –save-dev playwright et npm install –save http-client.
  7. Créez le fichier package.json avec les scripts pour exécuter les tests et récupérer les résultats, comme indiqué dans l’exemple précédent.
  8. Créez le fichier de workflow GitHub Action dans le répertoire .github/workflows/, comme indiqué dans l’exemple précédent.
  9. Validez et transférez les modifications vers le référentiel.

Une fois le référentiel configuré, vous pouvez exécuter les tests et récupérer les résultats en poussant un commit ou en déclenchant manuellement le flux de travail GitHub Action. Les tests seront exécutés sur LambdaTest et les résultats seront récupérés à l’aide de l’API LambdaTest.

N’oubliez pas qu’il ne s’agit que d’un exemple d’implémentation et qu’il peut ne pas inclure toutes les étapes nécessaires à la configuration d’une plate-forme de test Selenium complète. Vous devrez peut-être ajuster les étapes en fonction de vos besoins spécifiques.

Un script Bash pour tout exécuter localement sur Mac

Maintenant que nous avons une configuration de flux de travail complète, nous voulons exécuter tout cela localement sur notre machine Mac. Nous avions besoin d’un script Bash pour cloner le référentiel et automatiser toutes les étapes ci-dessus. Un autre défi ici que nous avons observé dans le ChatGPT est que parfois il ne crée pas l’intégralité du script et manque des étapes cruciales. Nous avons donc dû demander à nouveau de créer un script Bash complet.

Q : Écrire un script Bash pour automatiser les étapes ci-dessus sur mon Mac

ChatGPT : pour automatiser les étapes de création d’un référentiel GitHub avec des tests Selenium sur un Mac, vous pouvez écrire un script bash qui effectue les actions suivantes :

  1. Créez un nouveau référentiel sur GitHub.
  2. Clonez le référentiel sur la machine locale.
  3. Créez un répertoire pour les tests Selenium, tel que tests/.
  4. Créez les fichiers de fonctionnalité Cucumber et les fichiers de test dans le répertoire tests/.
  5. Initialisez le référentiel en tant que projet Node.js en exécutant npm init dans le répertoire racine du référentiel.
  6. Installez les dépendances nécessaires, telles que Playwright et le package http-client npm, en exécutant npm install –save-dev playwright et npm install –save http-client.
  7. Créez le fichier package.json avec les scripts pour exécuter les tests et récupérer les résultats, comme indiqué dans l’exemple précédent.
  8. Créez le fichier de workflow GitHub Action dans le répertoire .github/workflows/, comme indiqué dans l’exemple précédent.
  9. Validez et transférez les modifications vers le référentiel.

Voici un exemple de script Bash qui effectue ces actions :

Q : Remplissez le fichier Bash ci-dessus et ne générez pas l’explication

ChatGPT : Voici un script bash terminé qui automatise les étapes de création d’un référentiel GitHub avec des tests Selenium sur un Mac :

Script Bash vers flux de travail GitHub

Maintenant que nous avons un script Bash complet pour exécuter et configurer tout notre pipeline, nous voulons que le même soit également exécuté sur GitHub. Nous avions donc besoin d’un fichier de workflow GitHub à ajouter au référentiel pour exécuter la configuration.

Q : Modifiez le script Bash ci-dessus pour générer également le fichier de workflow GitHub

ChatGPT : pour modifier le script Bash afin de générer également le fichier de workflow GitHub Action, vous pouvez inclure le contenu du fichier de workflow dans le script et utiliser la commande echo pour l’écrire dans le fichier.

Voici un exemple de la façon dont cela peut être fait :

Maintenant, modifions enfin les définitions de cuncumber

Donc, en tant qu’étape finale, nous voulons maintenant modifier les définitions de cuncumber afin que le microservice de gestion des journaux puisse générer des réponses à la fois en XML et en JSON.

Q : Modifier les définitions de cuncumber pour inclure les cas où log_management_service peut générer une réponse en XML ainsi qu’en JSON

Pour modifier les définitions de Cucumber afin d’inclure les cas où le log_management_service peut générer la réponse en XML ainsi qu’en JSON, vous pouvez utiliser l’en-tête HTTP Content-Type pour spécifier le format souhaité.

Voici un exemple de la façon dont cela peut être fait :

Pour implémenter la demande au log_management_service ; vous pouvez utiliser un outil tel qu’un package request npm pour envoyer une requête HTTP avec l’en-tête Content-Type défini sur application/json ou application/xml, selon le format souhaité.

Voici un exemple de la façon dont cela peut être fait :

Ce que nous avons appris lorsque nous avons créé des tests d’automatisation avec ChatGPT

Toute l’expérience était amusante. Nous avions la chair de poule à chaque fois que la plateforme dépassait nos attentes. Mais voici un apprentissage réaliste de toutes les expérimentations ci-dessus. À la fois bon et mauvais.

Avantages de ChatGPT pour l’automatisation des tests

Ajouter de la résilience

L’une des choses que les testeurs manquent ou considèrent comme une surcharge est l’ajout de résilience au code d’automatisation. Il est généralement dépriorisé en tant qu’élément priorité2-priorité3. Cependant, comme nous l’avons vu dans notre exemple ci-dessus, nous pouvons facilement créer du code pour ajouter de la résilience au script d’automatisation.

Assurer la sécurité

L’ajout de bonnes pratiques axées sur la sécurité doit être une priorité dès le premier jour. Cependant, si vous avez un code hérité non sécurisé ou si vous manquez de temps pour trouver des vulnérabilités de sécurité dans le code, ChatGPT – un chatbot basé sur ChatGPT-3.5 peut vous aider. De plus, nous avons vu dans les exemples ci-dessus que certains des morceaux de code créés par ChatGPT étaient sécurisés par défaut. Par exemple, exploiter la fonctionnalité GitHub Secrets. Mais parfois, vous devrez peut-être demander à la plateforme de créer un code sécurisé. Par exemple, nous avons dû demander à ChatGPT d’utiliser délibérément des variables d’environnement.

Permettre aux testeurs de surmonter la courbe d’apprentissage

ChatGPT est un excellent outil pour surmonter les limites liées à la connaissance d’une technologie particulière. Par exemple, si vous êtes un expert Selenium mais que vous ne connaissez pas bien les pipelines GitHub, vous pouvez utiliser ChatGPT pour au moins commencer et créer des codes de démarrage pour vous aider à créer des workflows GitHub. Nous avons également démontré la même chose dans les exemples ci-dessus.

Cependant, une mise en garde est que ChatGPT n’est pas parfait ou infaillible. C’est juste un autre outil pour vous faciliter la vie, mais si vous voulez vraiment réussir, vous ne pouvez pas être complètement dépendants de ChatGPT. Vous auriez à faire une plongée profonde dans la technologie.

Accélérer le débogage du code

En matière de débogage, ChatGPT est un ajout utile à la boîte à outils de tout développeur de logiciel. Il existe des exemples que vous pouvez trouver sur Internet où des personnes ont copié-collé leur code dans ChatGPT et ont obtenu la raison exacte de l’échec en tant que réponse de sortie. Encore une fois, ce n’est pas infaillible à 100 %, et ChatGPT peut passer à côté de problèmes évidents, mais cela peut néanmoins vous aider à démarrer ou vous donner une nouvelle perspective lors du débogage du code.

Inconvénients de ChatGPT pour l’automatisation des tests

Bien que ChatGPT, construit sur ChatGPT-3.5, présente de nombreux avantages et utilisations, il y a quelques inconvénients à prendre en compte.

Il est basé sur des modèles statistiques et ne comprend pas le sens sous-jacent

ChatGPT est construit sur GPT-3.5, qui est un modèle de langage autorégressif. Cependant, l’un des plus grands défis de cette approche est qu’elle dépend très fortement des modèles statistiques.

Ce modèle d’apprentissage prédit à l’aide de modèles statistiques quels devraient être les prochains mots en fonction des mots qui ont été utilisés auparavant. Cependant, il n’a pas une compréhension sous-jacente de la signification de ces mots.

Cela signifie qu’il ne peut pas être utilisé aussi efficacement dans des situations où les questions ou les déclarations de l’utilisateur nécessitent une compréhension d’un contexte qui n’a pas été expliqué auparavant.

Bien que ces limitations puissent sembler mineures, c’est un gros problème si vous dépendez de ChatGPT pour les tests. Par exemple, la précision de ChatGPT diminuera considérablement si vous devez créer des cas de test qui nécessitent une compréhension approfondie préalable du système sous test.

Lacunes d’apprentissage

La technologie sous-jacente de ChatGPT, le modèle de langage GPT-3.5, est un modèle de langage d’apprentissage en profondeur qui a été formé sur de grands ensembles de données de contenu généré par l’homme. Ici, nous supposons qu’il a également appris Code en tant que texte ; par conséquent, il a été en mesure de créer des codes aussi précis.

Cela signifie qu’il ne peut pas répondre avec précision à des choses qu’il n’a pas apprises auparavant ou peut donner des informations erronées si son apprentissage n’a pas été mis à jour.

Par exemple, si sa dernière phase d’apprentissage était sur un framework qui a depuis déprécié la moitié de ses méthodes, alors le code qu’il créera utilisera ces méthodes dépréciées. L’utilisateur devra donc s’assurer que le code final qu’il utilise est à jour.

Code incomplet

Un autre défi de la création de code via ChatGPT est que vous devez gérer du code partiellement écrit. Cela est également évident dans nos exemples ci-dessus, où nous avons dû délibérément demander le code complet pour l’automatisation bash.

Donc, si vous dépendez du code basé sur ChatGPT, vous devez d’abord comprendre le code incomplet, le terminer ou le modifier en fonction de vos besoins. Et comme vous pouvez l’imaginer, c’est souvent une chose difficile à faire car il y a tellement de choses qui pourraient mal tourner. Même si vous parvenez à obtenir ce que vous voulez, le produit final ne sera probablement pas aussi bon que si vous deviez écrire le code à partir de zéro. Mais d’un autre côté, il peut parfois être plus facile d’étendre le code ou de le déboguer que de créer du code répétitif à partir de zéro.

Hypothèses

ChatGPT dépend d’hypothèses. Les testeurs de logiciels sont formés pour identifier ces facteurs cachés susceptibles de provoquer l’échec d’une application, et lorsqu’ils le font, ils peuvent intégrer dans leurs cas de test des moyens de vérifier ces problèmes. Mais que se passe-t-il lorsque vos testeurs n’ont pas assez de temps pour tester toutes leurs hypothèses ? Que se passe-t-il si les informations nécessaires pour valider une hypothèse ne sont pas disponibles ? Lorsque d’autres équipes sont impliquées dans la construction du produit, comme l’assurance qualité ou le développement, cela peut être difficile à contrôler.

Ce même problème existe également avec ChatGPT. La plate-forme commence par de nombreuses hypothèses sur le cas d’utilisation que vous avez saisi. La plupart du temps, ces hypothèses sont évidentes et il est facile de les contourner, mais souvent ces hypothèses conduisent à un code très imprécis qui ne vous faciliterait pas la vie.

ChatGPT en est encore à ses débuts et des mises à jour constantes sont effectuées pour ajouter des fonctionnalités ou corriger des bogues. De plus, il s’agit d’un modèle d’apprentissage constant, de sorte que de plus en plus de personnes l’utilisent et découvrent des problèmes sur la plate-forme, de mieux en mieux. Sa précision continuera d’augmenter et ses lacunes en matière d’apprentissage continueront de se combler.

Cela signifie que les utilisateurs doivent rester au courant de ces changements pour continuer à utiliser ChatGPT efficacement.

L’avenir des tests avec l’IA : va-t-elle remplacer les équipes de test ?

ChatGPT, un chatbot construit sur ChatGPT-3.5 et des technologies d’IA similaires, a un énorme potentiel dans le domaine des tests et des tests d’automatisation. Ils peuvent rendre la vie d’un testeur beaucoup plus facile et ont le potentiel d’accélérer considérablement leurs efforts. Cependant, dire qu’ils remplaceront les équipes de test n’est toujours pas possible.

De plus, comme indiqué au début de l’article, tout le code généré pourrait être meilleur. Lorsque vous essayez de l’exécuter, ils génèrent des erreurs. Mais même cela dit, ce sont de bons points de départ qui peuvent être affinés et poussés plus loin pour une meilleure mise en œuvre.

Cet outil, s’il est utilisé correctement, permettra aux équipes de démarrer les tâches de test beaucoup plus tôt et plus rapidement. Des outils appropriés créés avec cette technologie en arrière-plan permettront aux testeurs de ne pas trop se soucier de l’automatisation, mais de se concentrer sur les cas de test eux-mêmes.

Article traduit par All4Test, rédigé par Mayank Bhola de chez LambdaTest (USA).

Conclusion : ChatGPT et l’automatisation des tests logiciel

Comment souvent il n’y a pas de solution miracle et ChatGPT ne peut pas remplacer un ingénieur QE pour automatiser des tests. Pour cela il est nécessaire de comprendre le contexte, l’application à tester et surtout connaître le métier du test automation…

Cependant cet outil peut faire gagner du temps dans les tâches de génération de scripts ou aider des ingénieurs QA n’ayant pas d’expertise en test automation.

C’est pour vous accompagner dans vos premiers pas sur l’IA appliquée au test qu’ALL4TEST et son partenaire UPSKILL4IT (organise de formation digital) ont mis en place la formation sur l’IA appliquée au test.  

Nous pouvons également mettre en place des expérimentations et des PCOC ensemble.

Vous souhaitez vous lancer ? Fixons un premier RDV rapidement !