Accélérer vos processus de test grâce à l’IA générative

Outils utilisés :
https://chat.smartesting.com/

A human brain connected to a mobile device running generative AI

Version 4.0.2 – Décembre 2024

Ateliers

Warm-up – Comprendre les tokens

Autre essai

  • “Il a fait carrière comme top modèle” VS “GPT est un modèle de langage”
Atelier 0 – Découverte du portail LLM

L’objectif de cet exercice est double :
1. se faire une idée de quel LLM est le plus adapté en fonction du volume des données utilisées et
2. se familiariser avec le LLM Workbench.

Ce qu’il faut faire :
– Déterminez d’abord le nombre de tokens du texte à résumer et sélectionnez un LLM.
– Requêtez le LLM choisi (prompt #1)
– Ouvrez un nouveau chat, placez trois LLM différents côte à côte pour une comparaison directe et posez à nouveau la tâche, mais de manière plus précise (prompt #2).

Données : Les données à résumer sont disponibles dans l’annexe 1 ci-dessous.

Prompt #1 – ce prompt ne donne qu’une instruction vague

Résume ce texte.
<copier/coller le texte sur les techniques de test à résumer (Atelier 0 – Annexe 1 – Extrait du syllabus ISTQB) ici >

Prompt #2 – ce prompt limite la longueur de la réponse et met le ton

Résume le texte ci-dessous. Limite la réponse à 2000 caractères. Présente clairement les 5 sections du texte. Utilise un langage précis.
 <copier/coller le texte sur les techniques de test à résumer (Atelier 0 – Annexe 1 – Extrait du syllabus ISTQB) ici >

Atelier 1 – Génération de tests

(Votre IT bloque l’accès à notre système de demo ? Pas de problème… Essayez celui-ci : https://demo.osclasspoint.com/en/
Il s’agit du même système, mais avec moins de données.)

Partie 1 – Générer des cas de tests fonctionnels

Dans le matériel de formation, nous avons découvert l’exemple suivant d’un prompt structuré :

Tu es mon assistant pour l’écriture de scénarios de test en format Gherkin (Etant donné/Quand/Alors) à partir d’une exigence donnée. Le système sous test est une application web pour les petites annonces qui s'appelle Classifieds.
En analysant cette exigence, réalise les tâches suivantes :
1. Détermine de manière exhaustive les classes d'équivalence à tester, en donnant quelques exemples de valeurs typiques et aux limites pour les classes valides et invalides. Explique ton raisonnement.
2. Crée les scénarios dans un fichier .feature, en regroupant les scénarios par fonctionnalité. Assure-toi que toutes les classes d'équivalence sont couvertes avec au moins 2 tests chacune.

(suivi par l'exigence)

C’est maintenant à vous de rédiger votre premier prompt structuré ! Cependant, cette fois-ci, nous faisons un pas en arrière. Au lieu de générer immédiatement des cas de test, nous vérifions d’abord les données que nous avons reçues (analyse des tests). Ensuite, nous générons des cas de test isolés et, dans la dernière étape, nous réalisons des tests de workflow (conception et implémentation des tests).

Etape 1 – Analyser les user stories et critères d’acceptation existantes
  • Commencez une nouvelle conversation avec un LLM puissant comme MISTRAL-LARGE-LARGEST, GPT-4o, Gemini 1.5 Pro ou Claude 3.5 Sonnet.
  • Ecrivez un prompt structuré avec les éléments suivants :

Role et contexte: Je suis product owner et je dois rédiger des user stories pour une application web de marketplace appelée « Classifieds ». Tu es mon assistant utile.

Instruction: Demandez à l’IA d’analyser les user stories et les critères d’acceptation. Demandez-lui de vérifier s’il y a des lacunes et des incohérences. Demandez aussi une liste de questions pour chaque user story.

Format: Imposez deux sections par user story : une pour les lacunes et incohérences et une pour les questions.

Condition: Couverture complète des user stories

Données:

US #1 : Recherche par mot-clé
En tant qu'utilisateur,
Je souhaite pouvoir rechercher des petites annonces à l'aide de mots-clés
Afin de trouver les annonces pertinentes correspondant à mes critères de recherche.

Critères d'acceptation :
L'utilisateur peut saisir un mot-clé dans le champ de recherche « Keyword » de la page d'accueil.
Les résultats de la recherche affichent les annonces contenant le mot-clé dans le titre ou la description.
La recherche ne tient pas compte des majuscules et des minuscules.
Une recherche sans mot-clé affiche des dernières annonces publiées, telles qu'elles apparaissent sur la page d'accueil.
Le nombre total d'annonces trouvées est clairement indiqué
Si aucun résultat n'est trouvé, un message approprié s'affiche.
Les résultats sont classés par ordre de pertinence, selon la fréquence du mot-clé et la date de publication de l’annonce

US #2 : Filtrage par catégorie
En tant qu'utilisateur,
Je souhaite filtrer les annonces par catégorie
Afin de cibler ma recherche sur les éléments qui m'intéressent.

Critères d'acceptation :
L'utilisateur peut sélectionner une catégorie dans le menu déroulant « Select a category » de la page d'accueil.
Le menu déroulant affiche une liste complète, déroulante et classée par ordre alphabétique des catégories disponibles.
Seules les annonces de la catégorie sélectionnée sont affichées
L'utilisateur peut effacer la catégorie sélectionnée en choisissant l'option « Select a category » et rechercher dans toutes les annonces.

US #3 : Recherche combinée (mot-clé et catégorie)
En tant qu'utilisateur,
Je souhaite combiner la recherche par mot-clé et le filtrage par catégorie
Afin d'affiner ma recherche et d'obtenir des résultats plus pertinents.

Critères d'acceptation :
L'utilisateur peut saisir un ou plusieurs mots-clés dans le champ « Keyword » et sélectionner une catégorie dans le menu déroulant.
Les résultats de la recherche affichent les listes correspondant au mot-clé et à la catégorie sélectionnée.
Les critères de recherche sont clairement affichés sur la page de résultats
En l'absence de résultats, un message est affiché pour informer l'utilisateur et lui suggérer d'élargir les termes de recherche ou la catégorie sélectionnée
L'utilisateur peut modifier ou effacer les critères de recherche directement depuis la page de résultats

US #4 : Visualisation des résultats de recherche
En tant qu'utilisateur,
Je souhaite consulter les résultats de recherche de manière structurée et lisible
Afin de parcourir et comparer facilement les différentes annonces.

Critères d'acceptation :
Les résultats s'affichent sur une page dédiée
Chaque annonce présente les informations essentielles : titre, image principale, prix, localisation et date de publication
Les résultats sont affichés par défaut sous forme de grille, avec la possibilité de passer à une vue en liste.
Les résultats peuvent être triés selon différents critères :
Date de publication (plus récent au plus ancien)
Prix croissant
Prix décroissant
La pagination limite le nombre d'annonces par page pour optimiser le temps de chargement

US #5 : Filtrage par fourchette de prix
En tant qu'utilisateur,
Je souhaite définir une fourchette de prix pour ma recherche
Afin de trouver des annonces correspondant à mon budget.

Critères d'acceptation :
Deux champs numériques permettent de définir les prix minimum et maximum
Seules les annonces dont le prix est compris dans la fourchette sont affichées
L'utilisateur peut supprimer le filtre de prix pour afficher toutes les annonces
Les filtres de prix peuvent être utilisé indépendamment ou conjointement avec les filtres de mots-clés et de catégories

US #6 : Filtrage géographique
En tant qu'utilisateur,
Je souhaite restreindre ma recherche à une zone géographique
Afin de trouver des annonces à proximité.

Critères d'acceptation :
L'utilisateur peut saisir une ville ou un lieu dans le champ « City ».
Les résultats sont limités à la zone géographique spécifiée
L'utilisateur peut supprimer le filtre de lieu pour afficher toutes les annonces.

US #7 : Filtrage des annonces avec photos
En tant qu'utilisateur,
Je souhaite ne voir que les annonces illustrées par des photos
Afin d'évaluer visuellement les biens proposés.

Critères d'acceptation :
L'utilisateur peut filtrer les résultats pour n'afficher que les annonces avec photos.
Seules les annonces comportant au moins une photo sont alors affichées
Si le filtre est supprimé, toutes les annonces sont affichées.

US #8 : Sauvegarde des recherches
En tant qu'utilisateur,
Je souhaite enregistrer mes critères de recherche
Afin de pouvoir facilement répéter la recherche ou d'être informé des nouvelles offres correspondantes.

Critères d'acceptation :
L'utilisateur peut enregistrer ses critères de recherche en saisissant son adresse email.
Les recherches sauvegardées sont associées au compte de l'utilisateur s'il est connecté.
L'utilisateur reçoit des notifications par courrier électronique lorsque de nouvelles annonces correspondent aux critères de recherche qu'il a enregistrés.
L'utilisateur peut gérer (afficher, modifier, supprimer) ses recherches sauvegardées à partir des paramètres de son compte.
Voir plus

Etape 2 – Générer les cas de tests fonctionnels à partir des user stories
  • Restez dans la même conversation 
  • Rédigez un prompt qui demande à l’IA de générer des cas de test pour les critères d’acceptation donnés. Demandez un identifiant qui combine l’identifiant de la user story et un numéro consécutif (US1-TC1, US1-TC2, …), un nom de cas de test ainsi que les étapes du test et les résultats attendus. Imposez une couverture complète de tous les critères d’acceptation.

Etape 3 – Vérifier la couverture des critères d’acceptation par les cas de tests générés

  1. Restez dans la même conversation 
  2. Écrivez un prompt pour vérifier la couverture des user stories et des critères d’acceptation par les cas de tests générés. Pour ce faire, demandez à l’IA de créer un tableau.
  3. Essayez votre prompt. Si le résultat n’est pas satisfaisant, recommencez depuis le début. Modifiez vos prompts et/ou essayez avec un autre LLM.
  4. Vérifiez l’exemple de solution. Quelle version est la plus facile à vérifier ?
Etape 4 – Génération de scénarios de test de bout-en-bout en utilisant un méta-prompt

  1. Commencez une nouvelle conversation avec un LLM puissant comme GPT-4o 
  2. Utilisez le prompt suivant
    Tu es mon assistant qui m'aide à rédiger de bons prompts structurés. Je dispose d'une liste de petits cas de test isolés. Ces cas de test peuvent être combinés en séquences plus longues que j'appelle « tests de bout-en-bout ». Je veux obtenir un tableau avec une séquence d'étapes et les résultats attendus. À la fin, tous les petits cas de test isolés doivent être intégrés dans l'un des tests de bout-en-bout.
    Propose un prompt.
  3. Retournez dans la conversation précédente.
  4. Essayez le prompt généré.

Attention !

Ne croyez jamais aveuglément ce que l’IA générative vous propose.
Exécutez manuellement un scénario de test de bout-en-bout de votre choix sur l’application  http://www.vtaas-benchmark.com:9980/ . Que constatez-vous ?

(Suites optionnelles) Formatage des scénarios de test – 3 possibilités

Suite optionnelle 1 – Transformer les cas de test au format Gherkin (Etant donné / Quand / Alors)

  1. Rester dans la même conversation
  2. Écrivez un prompt pour transformer des cas de tests générés précédemment en langage naturel au format Gherkin et essayez-le.
  3. Recommencez, si le résultat ne vous satisfait pas.
Suite optionnelle 2 – Formater en csv pour faciliter l’importation dans votre outil de gestion des tests avec la technique “one-shot prompting”

  1. Rester dans la même conversation
  2. Écrivez un prompt pour formater les tests de bout-en-bout en csv
    • Utiliser la technique du one-shot prompting
  3. Recommencez si le résultat ne vous satisfait pas
Suite optionnelle 3 – Visualiser les cas de test sous forme d’un diagramme en produisant un code interprétable par l’outil Mermaid.js
  1. Restez dans la même conversation
  2. Écrivez un prompt pour générer un workflow à partir des scénarios de bout-en-bout pour visualiser les scénarios sous forme graphique
  3. Testez le code généré avec l’outil Mermaid ( https://mermaid.live/ )
  4. Recommencez si le résultat ne vous satisfait pas en donnant des consignes plus précises
  5. Conseil : Dites à l’IA de factoriser les étapes du test ( » Factorise les étapes du test »).
  6. Si cela ne fonctionne toujours pas après cela, expliquez-lui la règle de formatage (voir le message d’erreur dans Mermaid.live).
Partie 2 –  Générer des conditions de test, des cas de test et des données de test à l’aide du module de vision

Etape 1 – Générer des critères d’acceptation pour une user story sur la base d’une maquette

  1. Téléchargez le croquis de l’interface graphique à droite et enregistrez-le sur votre ordinateur.
  2. Ouvrez une nouvelle conversation avec GPT-4o
  3. Dans la conversation, chargez l’image sauvegardée en utilisant l’icône image à côté de l’invite de prompt
  4. Utilisez le prompt suivant :
    # Rôle et contexte
    Je teste un portail en ligne pour les petites annonces. Tu es mon assistant utile qui m'aide à créer les critères d'acceptation pour la user story de la publication des petites annonces, sur la base d'une maquette de la page de publication.


    # Instructions
    1. Pour la user story donnée, rédige une liste de critères d'acceptation en utilisant la maquette ci-jointe.
    2. Vérifies que les critères d'acceptation que tu as générés sont complets et cohérents avec la maquette ci-jointe.

    # Format de sortie
    Réponds à l'aide d'une liste numérotée. Assures-toi que la liste est conforme au format markdown (4 espaces).


    # Données
    User Story US-21:
    En tant qu'utilisateur inscrit de l'application,

    Je souhaite publier une annonce
    Afin de vendre mon objet.
  5. Vérifiez le résultat. Si vous estimez que la réponse doit être améliorée, demandez au LLM d’y remédier. Soyez précis sur ce que vous voulez améliorer. Par exemple, assurez-vous qu’il existe deux critères d’acceptation pour le téléchargement d’images par clic et par glisser-déposer. Faites remarquer au LLM que l’option « Select a city» est grisée.

Etape 2 – Crée des cas de test pour la user story donnée
  1. Restez dans la même conversation.
  2. Ecrivez un prompt qui demande à l’IA de générer des cas de test pour les critères d’acceptation de la user story US-21.
  3. Demandez au LLM de vérifier le résultat et de fournir une matrice de traçabilité.
Etape 3 – Déterminer les valeurs d’une liste déroulante à partir d’une capture d’écran

  1. Commencez une nouvelle conversation avec GPT-4o, Claude 3.5 Sonnet ou Gemini 1.5 Pro.
  2. Téléchargez la capture d’écran à droite et enregistrez-la sur votre ordinateur.
  3. Dans la conversation, chargez la capture d’écran sauvegardée de la même manière que précédemment.
  4. Rédigez un prompt qui demande à l’IA d’analyser l’image et d’énumérer les valeurs possibles dans la liste déroulante.
  5. Vérifiez la réponse. Est-ce que ça marche ?

Atelier 2 – Optimisation de tests

Etape 1 – Diviser la tâche (requêtage par étapes)

Avant de commencer à rédiger des prompts, réfléchissons un peu à la manière d’aborder le problème.

  1. Lisez brièvement les cas de test. Vous n’avez pas besoin de tout comprendre en détail, mais vous devriez avoir une idée de la manière dont les tests sont écrits.
  2. Réfléchissez à la manière dont vous procéderiez si vous deviez standardiser les cas de test. Procéderiez-vous cas de test par cas de test ou identifieriez-vous d’abord des blocs de base ?
  3. Comparez les étapes de test 1.1, 8.1, 9.1 et 18.1. À quoi ressemblerait une étape de test normalisée et paramétrée ? Notez le format que vous souhaitez dans Notepad ou un document similaire. Nous en aurons besoin plus tard pour la technique du « one-shot prompting ».
Etape 2 – Identifier les étapes similaires mais rédigées différemment

  1. Commencez une nouvelle conversation avec Gemini 1.5 Pro.
  2. Utiliser le prompt suivant :

Je vais te donner une liste de cas de test pour l'application web Classifieds.
Chaque cas de test se compose d'un identifiant et d'un nom de cas de test, suivis d'une liste d'étapes de test. Chaque étape de test se compose d'une action de test et d'un résultat attendu.
Identifie toutes les étapes de test qui présentent des similitudes. Par exemple, « TC1.1 », « TC4.1 », « TC8.1 » et « TC12.1 » sont similaires.

Réponds par une liste : Nom du groupe, <identifiant du cas de test>.<numéro de l'étape de test>, <description>.
Vérifie que toutes les étapes du test sont listées.

###
<copier / coller les cas de test pour Classifieds en format CSV ici>

Il s’agit d’un export au format CSV de la feuille MS Excel ci-dessous.

;;
TC-1;Effectuer une recherche par mot clé et trier les résultats
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;La page d'accueil s'affiche avec le champ de recherche et la liste déroulante des catégories visibles.
2;"Saisissez ""motos"" dans le champ de recherche des mots-clés";"Le mot-clé ""motos"" est saisi dans le champ de recherche."
3;"Cliquez sur le bouton ""Recherche"".";"La page des résultats de la recherche s'affiche, avec les annonces contenant le mot-clé ""motos"" dans le titre ou la description."
4;Vérifiez que le nombre total d'annonces trouvées est affiché.;Le nombre total d'annonces trouvées est de 114 sur la page des résultats.
5;"Triez les résultats de la recherche par ""Prix le plus bas d'abord""";Les listes sont réorganisées, les articles les moins chers apparaissant en tête de liste.
6;Vérifiez que chaque annonce comporte un titre, une vignette, un prix, un lieu et une date d'affichage.;Tous les listings contiennent ces détails dans la grille d'affichage.
;;
TC-2;Combinez les filtres par mot-clé et par catégorie, puis filtrez par prix
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;La page d'accueil s'affiche avec le champ de recherche et la liste déroulante des catégories visibles.
2;"Saisissez ""Haut parleurs"" dans le champ de recherche par mot-clé.";"Le mot-clé ""Haut parleurs"" est saisi dans le champ de recherche."
3;"Sélectionnez ""Instruments de musique"" dans la liste déroulante des catégories.";"La catégorie ""Instruments de musique"" est sélectionnée dans le menu déroulant."
4;"Cliquez sur le bouton ""Recherche"".";"La page des résultats de la recherche s'affiche, montrant les annonces qui correspondent à la fois au mot-clé ""Haut parleurs"" et à la catégorie ""Instruments de musique""."
5;Entrez 200 $ dans le champ Prix minimum et 500 $ dans le champ Prix maximum.;La fourchette de prix de 200 à 500 dollars est saisie dans les champs du filtre de prix.
6;"Cliquez sur le bouton ""Appliquer"" pour filtrer les résultats par prix.";Les résultats de la recherche sont filtrés pour n'afficher que les annonces dont le prix est compris entre 200 et 500 dollars.
7;Vérifiez que les annonces filtrées correspondent au mot-clé, à la catégorie et à la fourchette de prix sélectionnés.;Seules les annonces dont les prix se situent dans la fourchette spécifiée et qui correspondent au mot-clé et à la catégorie sont affichées.
;;
TC-3;Connectez-vous, effectuez une recherche par mot-clé et par catégorie, choisissez un ajout et laissez un commentaire. 
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;"La page d'accueil OsClass se charge avec la barre de recherche, la liste déroulante des catégories et l'option ""Login"" visibles."
2;"Cliquez sur le bouton ""Login"".";La page de connexion s'affiche avec les champs email et mot de passe
3;"Saisissez l'adresse électronique ""blake.sullivan@gmail.com"" et le mot de passe ""Password.123"", cochez la case ""Se souvenir de moi"", cliquez sur ""Login"".";"L'utilisateur est connecté, la page d'accueil se recharge avec les options ""Mon compte"" et ""Déconnexion"" visibles."
4;"Saisissez ""caméra"" dans le champ des mots clés, sélectionnez la catégorie ""Photo + vidéo"", cliquez sur ""Recherche""";La page des résultats de la recherche se charge avec les listes d'appareils photo
5;"Choisissez ""Rochester (Pennsylvanie)"" dans la liste déroulante des lieux, puis cliquez sur ""Appliquer"".";Les résultats de la recherche sont mis à jour pour afficher les annonces de appareils photo à Rochester, Pennsylvanie.
6;"Cliquez sur la liste ""Camera - Revere 8 mm"" en haut de la liste.";La page détaillée de l'annonce s'ouvre et indique les caractéristiques de l'article, le prix ($20.00) et les informations sur le vendeur.
7;"Faites défiler jusqu'à la section des commentaires, entrez le titre ""Bel appareil photo"" et le commentaire ""Beau produit"", puis cliquez sur ""Envoyer"".";L'envoi des commentaires a été effectué avec succès, un message de confirmation s'affiche
8;Recherchez la notification d'approbation des commentaires;"Une barre de notification verte apparaît, indiquant ""Votre commentaire a été approuvé""."
9;Faites défiler la page d'inscription pour vérifier si votre commentaire est visible.;"Un commentaire ""Bel appareil photo de Blake Sullivan"" est visible"
10;"Supprimez le commentaire ""Belle appareil photo par Blake Sullivant""";La liste des commentaires est vide
;;
TC-4;Recherche par menu déroulant et filtre
#;Actions;Résultat attendu
1;"Saisir l'URL ""http://www.vtaas-benchmark.com:9980/"" dans le navigateur";La page d'accueil d'OsClass s'affiche avec l'icône Login
2;"Sélectionnez ""motos"" dans le menu déroulant de la catégorie de recherche, puis lancez la recherche.";"La page Motocycles s'affiche avec toutes les annonces en vue ""Liste""."
3;Triez les annonces par prix croissant;La liste d'affichage est réorganisée en conséquence
4;"Cliquez sur le mode d'affichage ""Galerie""";La liste d'affichage est réorganisée en conséquence
5;"Appliquez un filtre avec le mot ""Harley""";"L'écran reste en mode ""Galerie"" et le nombre d'annonces diminue."
6;Appliquez un filtre avec un prix minimum de 10 $ supérieur à la première annonce listée;Le nombre d'annonces diminue et la première annonce a un prix supérieur ou égal au filtre appliqué.
7;Triez les annonces par prix décroissant;La liste d'affichage est réorganisée en conséquence
8;Appliquez un filtre avec un prix maximum de 1000 $ inférieur à la première annonce listée;Le nombre d'annonces diminue et la première annonce a un prix inférieur ou égal au filtre appliqué.
9;"Appliquez un filtre sur la ville en entrant ""Paris"" puis choisissez ""Paris (Texas"") dans la liste.";Un message indiquant qu'aucune annonce n'est compatible apparaît
10;Supprimez le filtre de la ville et relancez la recherche;La liste des annonces réapparaît
;;
TC-5;Connectez-vous, faites une recherche par mot-clé et par catégorie, choisissez un ajout et laissez un commentaire - mis à jour
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;"La page d'accueil OsClass se charge avec la barre de recherche, la liste déroulante des catégories et l'option ""Login"" visibles."
2;"Cliquez sur le bouton ""Login"".";La page de connexion s'affiche avec les champs email et mot de passe
3;"Saisissez l'adresse électronique ""blake.sullivan@gmail.com"" et le mot de passe ""Password.123"", cochez la case ""Se souvenir de moi"", cliquez sur ""Login"".";"L'utilisateur est connecté, la page d'accueil se recharge avec les options ""Mon compte"" et ""Déconnexion"" visibles."
4;"Saisissez ""caméra"" dans le champ des mots clés, sélectionnez la catégorie ""Photo + vidéo"", cliquez sur ""Recherche""";La page des résultats de recherche se charge avec des listes de photos et de vidéos
5;"Saisissez ""Falls Church"" dans le champ de la ville, puis cliquez sur ""Appliquer"".";La page de résultats de la recherche se charge avec Photo + vidéo Falls Church listings
6;"Cliquez sur ""Nikon N50 Camera"" dans la liste ";La page détaillée de l'annonce s'ouvre et indique les caractéristiques de l'article, le prix (30,00 $) et les informations sur le vendeur.
7;"Faites défiler jusqu'à la section des commentaires, entrez le titre ""Bel appareil photo"" et le commentaire ""Beau produit"", puis cliquez sur ""Envoyer"".";"Une barre de notification verte apparaît, indiquant ""Votre commentaire a été approuvé""."
8;Faites défiler la page d'inscription pour vérifier si votre commentaire est visible.;"Un commentaire ""Bel appareil photo de Blake Sullivan"" est visible"
9;"Supprimez le commentaire ""Belle caméra par Blake Sullivant""";La liste des commentaires est vide
;;
TC-6;Créer une nouvelle annonce - sans image
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;"La page d'accueil OsClass se charge avec la barre de recherche, la liste déroulante des catégories et l'option ""Login"" visibles."
2;"Cliquez sur le bouton ""Login"".";La page de connexion s'affiche avec les champs email et mot de passe
3;"Saisissez l'adresse électronique ""blake.sullivan@gmail.com"" et le mot de passe ""Password.123"", puis cliquez sur ""Login"".";"L'utilisateur est connecté, la page d'accueil se recharge avec les options ""Mon compte"" et ""Déconnexion"" visibles."
4;"Cliquez sur ""Publier une annonce""";"La page ""Publier une annonce"" s'affiche."
5;"Sélectionnez ""Vélos"" dans le menu déroulant Catégorie.";La catégorie Vélos est sélectionnée.
6;"Entrez ""Motobecane all Carbon Fiber Shimano GRX equipped gravel bike"" dans le champ Titre"
7;"Entrez ""Je vends mon magnifique vélo de gravier Motobecane en fibre de carbone équipé d'un groupe de gravier Shimano GRX 1 x 11"" dans le champ Description."
8;Fixez le prix à 1 495,00;"Le prix est visible à 1,495.00
"
9;"Sélectionnez ""Californie"" dans la liste déroulante Région";La Californie est sélectionnée comme région
10;"Sélectionnez ""San Francisco"" dans le menu déroulant de la ville.";San Francisco est sélectionnée comme ville
11;"Cliquez sur le bouton ""Soumettre""";"Une barre de notification verte apparaît, indiquant ""Votre annonce a été publiée"" et le nouvel ajout est visible avec deux boutons  ""Modifier l'élément"" et ""Effacer"""
12;"Cliquez sur le bouton ""Effacer"" visible sur la page d'accueil.";Une fenêtre pop-up apparaît 
13;"Cliquez sur le bouton ""OK"" dans la fenêtre pop-up";"Une barre de notification verte apparaît, indiquant ""Votre annonce a été publiée"" et le nouvel ajout est visible avec deux boutons  ""Modifier l'élément"" et ""Effacer"""
;;
TC-7;Créer un nouvel ajout - avec une image
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;"La page d'accueil OsClass se charge avec la barre de recherche, la liste déroulante des catégories et l'option ""Login"" visibles."
2;"Cliquez sur le bouton ""Login"".";La page de connexion s'affiche avec les champs email et mot de passe
3;"Saisissez l'adresse électronique ""blake.sullivan@gmail.com"" et le mot de passe ""Password.123"", puis cliquez sur ""Login"".";"L'utilisateur est connecté, la page d'accueil se recharge avec les options ""Mon compte"" et ""Déconnexion"" visibles."
4;"Cliquez sur ""Publier une annonce""";"La page ""Publier une annonce"" s'affiche."
5;"Sélectionnez ""Vélos"" dans le menu déroulant Catégorie.";La catégorie Vélos est sélectionnée.
6;"Entrez ""Motobecane all Carbon Fiber Shimano GRX equipped gravel bike"" dans le champ Titre"
7;"Entrez ""Je vends mon magnifique vélo de gravier Motobecane en fibre de carbone équipé d'un groupe de gravier Shimano GRX 1 x 11"" dans le champ Description."
8;"Cliquez sur le bouton ""Click or Drop for upload images"", puis téléchargez l'image indiquée à l'étape suivante.";L'image chargée est visible
9;"Sélectionnez ""Californie"" dans la liste déroulante Région";La Californie est sélectionnée comme région
10;"Sélectionnez ""San Francisco"" dans le menu déroulant de la ville.";San Francisco est sélectionnée comme ville
11;"Cliquez sur le bouton ""Soumettre""";"Une barre de notification verte apparaît, indiquant ""Votre annonce a été publiée"" et le nouvel ajout est visible avec deux boutons  ""Modifier l'élément"" et ""Effacer"""
12;"Cliquez sur le bouton ""Effacer"" visible sur la page d'accueil.";Une fenêtre pop-up apparaît 
13;"Cliquez sur le bouton ""OK"" dans la fenêtre pop-up";"Une barre de notification verte apparaît, indiquant ""Votre annonce a été publiée"" et le nouvel ajout est visible avec deux boutons  ""Modifier l'élément"" et ""Effacer"""
;;
TC-8;Recherche par mot-clé, filtre, tri et partage d'éléments.
#;Actions;Résultat attendu
1;Ouvrir la page web http://www.vtaas-benchmark.com:9980/ sur un demi-écran
2;"Se connecter avec des informations d'identification valides ""blake.sullivan@gmail.com"" / ""Password.123""";Les rubriques “Mon compte” et ‘Déconnexion’ apparaissent en haut de l'écran.
3;"Entrez ""toyota"" dans le champ Mot-clé et cliquez sur le bouton ""Recherche"".";Les résultats sont affichés dans une liste
4;"Triez par le prix le plus élevé dans le menu déroulant ""Trier par :"".";La liste est classée par prix annoncé : le plus cher en premier. 
5;Observez le premier élément;Le titre de l'article doit être affiché en bleu. Le prix avec 2 décimales doit être affiché en faisant apparaître le symbole du dollar américain. La description doit être affichée en 100 caractères et se terminer par ...
6;Cliquez sur le titre du premier élément;"La page doit contenir le titre en haut. Ensuite, la boîte jaune doit contenir le prix avec la devise USD dollars affichée.
La date de publication des dossiers doit être renseignée (date inférieure ou égale à aujourd'hui) 
La localisation doit être affichée selon le modèle Ville, État, États-Unis 
La description est présente
Le bouton ""contacter vendeur"" est affiché
Le bouton pour partager est affiché"
7;Cliquez sur la petite icône de l'image de droite;L'image de l'annonce est affichée en plein écran. 
8;cliquez sur la flèche de retour du navigateur pour quitter l'image;La page de description de l'article est disponible. Le titre est le même que le précédent
9;"Cliquez sur ""contacter vendeur""";Le nom et l'adresse de l'éditeur sont indiqués
10;"Cliquez sur ""Partager""";Le formulaire Envoyer à un ami est affiché
11;Déconnexion
;;
TC-9;Recherche par catégorie, filtre par ville, tri et partage d'articles
#;Actions;Résultat attendu
1;Ouvrir la page web http://www.vtaas-benchmark.com:9980/ en plein écran
2;"Se connecter avec des informations d'identification valides ""blake.sullivan@gmail.com"" / ""Password.123"""
3;Recherchez dans n'importe quelle catégorie (ex : Instruments de musique);"Dans les sections d'énumération, les résultats devraient être affichés dans une liste par défaut. Classés par ""Dernières publications"".
Dans la partie gauche, les critères de recherche doivent rester affichés. Le titre de la page est la catégorie."
4;Dans les critères, choisissez une ville américaine (ex ville du premier élément) et appliquez.;Les résultats sont affichés dans une liste, le titre est Nom de la catégorie + État des États-Unis.
6;Déconnexion
;;
TC-10;Rechercher n'importe quel élément en le triant autrement que par défaut (nouvellement en premier) et après le filtre le tri reste le même - plein écran
#;Actions;Résultat attendu
1;Ouvrir la page web http://www.vtaas-benchmark.com:9980/ en plein écran
2;"Se connecter avec des informations d'identification valides ""blake.sullivan@gmail.com"" / ""Password.123"""
3;Cherchez dans n'importe quelle catégorie (ex Bateaux);"Dans les sections d'énumération, les résultats devraient être affichés dans une liste par défaut. Ils doivent être triés par ""Dernières publications"".
Les critères de recherche sont affichés dans la partie gauche. Le titre de la page est la catégorie sélectionnée"
4;Dans le tri par cliquez sur autre chose que Nouveau d'abord (prix le plus élevé ou le plus bas);Les résultats sont affichés dans une liste
5;Fixez le prix minimum à 1 $ et appliquez;Les résultats sont affichés en fonction de la sélection précédente (prix le plus élevé ou le plus bas). 
;;
TC-11;Modifier mon annonce
#;Actions;Résultat attendu
1;Ouvrir la page web http://www.vtaas-benchmark.com:9980/
2;"Se connecter avec des informations d'identification valides ""blake.sullivan@gmail.com"" / ""Password.123"""
3;Cliquez sur Mon compte;Mes annonces sont affichées
4;"Modifiez le premier élément en changeant sa description et en l'enregistrant (bouton ""Mettre à jour"")";Page itm avec affichage de la ligne de couleur militaire verte 'Super ! Nous venons de mettre à jour votre liste'
5;Faites défiler la description vers le bas et vérifiez la modification;La description est mise à jour avec votre modification.
6;"Allez dans ""Modifier l'élément"", supprimez la modification de la description et sauvegardez.";La description originale est disponible
7;Déconnexion
;;
TC-12;Recherche par icône
#;Actions;Résultat attendu
1;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
2;Sélectionnez la dernière proposition dans le menu déroulant de la catégorie de recherche, puis lancez la recherche.;"La page de la catégorie choisie s'affiche avec toutes les annonces en vue ""Liste""."
3;Ouvrir une nouvelle page du navigateur Chrome;Une page du navigateur Chrome s'ouvre
4;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
5;"Dans le champ ""Toutes catégories"", sélectionnez l'icône correspondant à la dernière proposition dans le menu déroulant de la catégorie de recherche.";La page qui s'affiche est identique à celle de la recherche précédente.
;;
TC-13;Recherche par mot-clé
#;Actions;Résultat attendu
1;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
2;"Sélectionnez la première annonce dans le coin supérieur droit de la catégorie ""Dernières annonces"".";Le produit sélectionné apparaît avec le même titre et le même prix.
3;Ouvrir une nouvelle page du navigateur Chrome;Une page du navigateur Chrome s'ouvre
4;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
5;"Dans le champ ""Mot-clé"", saisissez le titre de l'annonce affichée sur l'autre page ouverte, puis lancez la recherche.";"Une page s'affiche avec toutes les annonces en vue ""Liste""."
6;Appliquez un filtre avec un prix minimum et maximum égal au prix de l'annonce affichée sur l'autre page ouverte.;L'annonce affichée sur l'autre page ouverte se trouve dans la liste mise à jour.
;;
TC-14;Rechercher par lieu et appliquer un filtre d'image puis effacer tous les filtres
#;Actions;Résultat attendu
1;Commencez par la page d'accueil : http://www.vtaas-benchmark.com:9980/ ;La page d'accueil s'affiche avec le champ de recherche et la liste déroulante des catégories visibles.
2;"Sélectionnez ""Livres"" dans la liste déroulante des catégories.";"La liste déroulante Catégorie est réglée sur ""Livres""."
3;"Cliquez sur le bouton ""Recherche"".";"La page de listing ""Livres"" s'affiche."
4;"Saisissez ""Falls Church"" dans le champ Ville et sélectionnez ""Falls Church (Virginia)"" dans le menu déroulant.";"La ville ""Falls Church"" est saisie dans le champ de filtre Ville."
5;"Cliquez sur le bouton ""Appliquer""";Seules les petites annonces situées à Falls Church apparaissent.
6;"Cochez la case ""Montrer uniquement les annonces avec photos"".";"La case ""Montrer uniquement les annonces avec photos"" est cochée."
7;"Cliquez sur le bouton ""Appliquer"" pour filtrer les résultats afin de n'afficher que les annonces avec photos.";Toutes les annonces affichées comprennent une vignette.
8;Effacez tous les filtres en supprimant le lieu et en décochant la case des images.;Tous les filtres sont effacés et les résultats de la recherche sont réinitialisés.
9;"Cliquez sur le bouton ""Appliquer""";La liste Livres est affichée avec 1489 annonces.
;;
TC-15;Recherche par lieu et fonction de partage
#;Actions;Résultat attendu
1;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
2;"Sélectionnez la première proposition dans le champ ""All locations"".";"La page du lieu choisi s'affiche avec toutes les annonces en vue ""Liste""."
3;Sélectionnez la première annonce;La page d'annonce s'affiche
4;"Cliquez sur ""Partager""";"La page ""Envoyer à un ami"" s'affiche"
5;"Cliquez sur ""Envoyer""";Un message d'erreur apparaît, énumérant tous les champs non optionnels
6;"Complétez les champs avec :
Blake pour le champ Votre nom
blake.sullivan@gmail.com pour le champ Votre e-mail
Joe pour le nom de l'ami
Joe.Titi@ pour l'adresse électronique de l'ami
Une idée de cadeau ? pour le champ Message
puis cliquez sur ""Envoyer"".";Un message d'erreur indiquant que l'adresse électronique de l'ami n'est pas valide s'affiche
7;"Remplacez l'adresse électronique de l'ami par ""blake.sullivan@gmail.com"" et envoyez";"Un message vert ""Nous venons d'envoyer votre message à Joe"" s'affiche."
;;
TC-16;Envoyer à un ami
#;Actions;Résultat attendu
1;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
2;"Sélectionnez la première annonce dans le coin supérieur droit de la catégorie ""Dernières annonces"".";"La page de la catégorie choisie s'affiche avec toutes les annonces en vue ""Liste""."
3;"Cliquez sur ""Partager"".";"La page ""Envoyer à un ami"" est affichée"
;;
TC-17;Publier et supprimer une annonce
#;Actions;Résultat attendu
1;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
2;"Cliquez sur ""Publier une annonce""";"La page ""Publier une annonce"" s'affiche"
3;"Cliquez sur le bouton ""Publier""";"Un message d'erreur apparaît avec tous les champs suivants :
- Titre
- Description
- Région
- Adresse électronique
- Catégorie"
4;"Sélectionnez la première proposition dans le menu déroulant du champ ""Catégorie"".";Le message d'erreur ne mentionne plus la catégorie
5;"Saisissez la lettre S dans le champ ""Titre"".";Le message d'erreur mentionne seulement qu'un minimum de 5 caractères est requis pour le titre.
6;"Complétez le contenu du champ ""Titre"" par ""tatue romaine"".";"Le champ ""Titre"" est identique à ""Statue romaine"" et le message d'erreur ne mentionne plus le titre."
7;"Saisissez la lettre T dans le champ ""Description"".";Le message d'erreur mentionne seulement que la description doit comporter au moins 10 caractères.
8;"Inscrivez ""Très belle statue"" dans le champ ""Description"".";Le message d'erreur ne mentionne plus la description
9;"Sélectionnez la deuxième proposition dans le menu déroulant du champ ""Région"".";Le message d'erreur ne mentionne plus la région
10;"Écrivez ""blake.sullivan@gmail.com"" pour l'adresse électronique";Le message d'erreur disparaît
11;Publiez;Un message d'erreur vous demande de choisir une ville
12;Sélectionnez la troisième ville dans le menu déroulant et publiez.;Un message apparaît indiquant que l'utilisateur est déjà connu
13;"Saisissez ""blake.sullivan@gmail.com"" dans le champ E-mail et ""Password.123"" comme mot de passe, puis essayez de vous connecter.";"La page ""Publier une annonce"" réapparaît, déjà complétée par les informations saisies précédemment, à l'exception de l'adresse électronique."
14;Publiez;L'annonce apparaît dans le listing
15;Supprimez l'annonce;Une fenêtre d'avertissement apparaît
16;Confirmez la suppression;L'annonce disparaît de la liste
;;
TC-18;Contacter le vendeur
#;Actions;Résultat attendu
1;"Aller à ""http://www.vtaas-benchmark.com:9980/""";La page d'accueil d'OsClass s'affiche
2;"Sélectionnez la première annonce dans le coin supérieur droit de la catégorie ""Dernières annonces"".";"La page de la catégorie choisie s'affiche avec toutes les annonces en vue ""Liste""."
3;"Cliquez sur ""Contacter vendeur"".";Une nouvelle page s'affiche
Voir plus

Etape 3 – Uniformiser et paramétrer les étapes de test

  1. Restez dans la même conversation 
  2. Écrivez un prompt demandant au LLM d’uniformiser et de paramétrer la première étape de test. Référez-vous explicitement au nom que le LLM a donné au groupe d’étapes de test similaires dans la réponse précédente. Utilisez votre étape de test idéale de l’étape 1 comme exemple dans le prompt.
  3. Essayez votre prompt. Recommencez avec d’autres prompts, si le résultat ne vous satisfait pas.
  4. Une fois que la réponse vous convient, demandez au LLM de faire de même avec tous les autres groupes d’étapes de test similaires.
Etape 4 – Réécrire les cas de test

  1. Restez dans la même conversation.
  2. Écrivez un prompt demandant au LLM de réécrire les cas de test TC1, TC7 et TC12 en utilisant les actions de test uniformisées et paramétrées.
  3. Essayez votre prompt et améliorez-le, si nécessaire. Ne continuez pas tant que les 3 cas de test ne semblent pas raisonnables.
  4. Écrivez un prompt demandant au LLM de réécrire la totalité des cas de test.

Atelier 3 – Automatisation des tests
Partie 1 – Créer une documentation du code puis générer le code d’un script de test

System under Test « Application calculette en ligne » : ott.uaestqb.ae

Pour les plus motivés, qui souhaitent exécuter les cas de test au format .robot, vous trouverez ici des instructions pour l’installation d’un environnement virtuel Robot Framework : “Préparation Atelier 3.pdf”.

Etape 1 – Créer un résumé des mots-clés disponibles pour tester une calculette

  1. Choisissez le modèle Claude 3.5 Sonnet et commencez une nouvelle conversation.
  2. Utilisez le prompt suivant :

Tu es un assistant de codage utile pour Python en utilisant Robot Framework et Selenium Webdriver. Tu es un spécialiste de la syntaxe de Robot Framework, en particulier en ce qui concerne les espacements entre mots-clé et paramètres.
Explique les mots-clés dans le code que je te donne. Répond avec un tableau au format markdown avec trois colonnes : 
| fonction | paramètre(s) | brève description |
N'explique PAS les mots-clés standard de Robot Framework. N'ajoute PAS d'explications supplémentaires. Réponds simplement avec le tableau.

###
Code :

<copier / coller le contenu du fichier “keyword_FR.robot » suivant ici>

Contenu du fichier « keyword_FR.robot » file

Il s’agit des mots-clés déjà préparés par un automaticien de tests.

*** Settings ***
Library    SeleniumLibrary
Library    String

*** Variables ***
${URL}    https://ott.uaestqb.ae/
${BROWSER}    chrome
${LOCATOR_BUTTON_0}    xpath=/html/body/table/tbody/tr[5]/td[2]/input
${LOCATOR_BUTTON_1}    xpath=/html/body/table/tbody/tr[2]/td[1]/input
${LOCATOR_BUTTON_2}    xpath=/html/body/table/tbody/tr[2]/td[2]/input
${LOCATOR_BUTTON_3}    xpath=/html/body/table/tbody/tr[2]/td[3]/input
${LOCATOR_BUTTON_4}    xpath=/html/body/table/tbody/tr[3]/td[1]/input
${LOCATOR_BUTTON_5}    xpath=/html/body/table/tbody/tr[3]/td[2]/input
${LOCATOR_BUTTON_6}    xpath=/html/body/table/tbody/tr[3]/td[3]/input
${LOCATOR_BUTTON_7}    xpath=/html/body/table/tbody/tr[4]/td[1]/input
${LOCATOR_BUTTON_8}    xpath=/html/body/table/tbody/tr[4]/td[2]/input
${LOCATOR_BUTTON_9}    xpath=/html/body/table/tbody/tr[4]/td[3]/input
${LOCATOR_BUTTON_DIV}    xpath=/html/body/table/tbody/tr[2]/td[4]/input
${LOCATOR_BUTTON_MINUS}    xpath=/html/body/table/tbody/tr[3]/td[4]/input
${LOCATOR_BUTTON_PLUS}    xpath=/html/body/table/tbody/tr[4]/td[4]/input
${LOCATOR_BUTTON_TIMES}    xpath=/html/body/table/tbody/tr[5]/td[4]/input
${LOCATOR_BUTTON_EQUAL}    xpath=/html/body/table/tbody/tr[5]/td[3]/input
${LOCATOR_DISPLAY_RESULT}    id=result
${NULL}    null

*** Keywords ***
Ouvrir Calculette En Ligne
    Ouvrir Navigateur    ${URL}    ${BROWSER}
    Maximize Browser Window
    Wait Until Page Contains Element    ${LOCATOR_BUTTON_EQUAL}

Ouvrir Navigateur    
    [Arguments]    ${URL}    ${BROWSER}
	Open Browser    ${URL}    ${BROWSER}

Entrer Opérant
    [Arguments]    ${number}
	Log    ${number}	
    Run Keyword If    '${number}' != '${NULL}'    Taper Numéro    ${number}

Taper Numéro
    [Arguments]    ${digits}
    ${length}=    Get Length    ${digits}
    FOR    ${index}    IN RANGE    ${length}
        ${digit}=    Get Substring    ${digits}    ${index}    ${index+1}
        Run Keyword If    '${digit}' == '0'    Numéro 0
        ...    ELSE IF    '${digit}' == '1'    Numéro 1
        ...    ELSE IF    '${digit}' == '2'    Numéro 2
        ...    ELSE IF    '${digit}' == '3'    Numéro 3
        ...    ELSE IF    '${digit}' == '4'    Numéro 4
        ...    ELSE IF    '${digit}' == '5'    Numéro 5
        ...    ELSE IF    '${digit}' == '6'    Numéro 6
        ...    ELSE IF    '${digit}' == '7'    Numéro 7
        ...    ELSE IF    '${digit}' == '8'    Numéro 8
        ...    ELSE IF    '${digit}' == '9'    Numéro 9
        ...    ELSE IF    '${digit}' == '-'    Click Element	${LOCATOR_BUTTON_MINUS}
    END
	
Numéro 0
    Click Element    ${LOCATOR_BUTTON_0}

Numéro 1
    Click Element    ${LOCATOR_BUTTON_1}

Numéro 2
    Click Element    ${LOCATOR_BUTTON_2}

Numéro 3
    Click Element    ${LOCATOR_BUTTON_3}

Numéro 4
    Click Element    ${LOCATOR_BUTTON_4}

Numéro 5
    Click Element    ${LOCATOR_BUTTON_5}

Numéro 6
    Click Element    ${LOCATOR_BUTTON_6}

Numéro 7
    Click Element    ${LOCATOR_BUTTON_7}

Numéro 8
    Click Element    ${LOCATOR_BUTTON_8}

Numéro 9
    Click Element    ${LOCATOR_BUTTON_9}
	
Choisir Opérateur
    [Arguments]    ${operator}
	Log    ${operator}
    Run Keyword If    '${operator}' == '+'    Click Element    ${LOCATOR_BUTTON_PLUS}
    ...    ELSE IF    '${operator}' == '-'    Click Element    ${LOCATOR_BUTTON_MINUS}
    ...    ELSE IF    '${operator}' == '*'    Click Element    ${LOCATOR_BUTTON_TIMES}
    ...    ELSE IF    '${operator}' == '/'    Click Element    ${LOCATOR_BUTTON_DIV}
    ...    ELSE IF    '${operator}' == '='    Click Element    ${LOCATOR_BUTTON_EQUAL}
    ...    ELSE    Fail    Unsupported operator: ${operator}

Verifier Résultat
    [Arguments]    ${EXPECTED_RESULT}
	${result}=    Get Value    ${LOCATOR_DISPLAY_RESULT}
    Should Be Equal As Strings    ${result}    ${EXPECTED_RESULT}
	
Fermer Navigateur
    [Documentation]    Closes the current instance of the navigator.
    Close Browser
Voir plus
Etape 2 – Générer un code de test

  1. Restez dans la même conversation
  2. Utilisez le prompt suivant :

Très bien. Maintenant, aide-moi à écrire du code. Utilise ces mots-clés SANS LES CHANGER.
Crée un script avec la structure de fichier Robot Framework suivante :

*** Settings ***
Library SeleniumLibrary
Resource keywords_FR.robot
*** Test Cases ***
#
# Insérez ici les actions pour tester la calculette
#

###
Suite d'action  :

    1. Ouvrir la calculette en ligne
    2. Entrer un premier opérant, par exemple : “250”
    3. Choisir un opérateur ("+", "-", "*", "/").
    4. Entrer un deuxième opérant, par exemple : “-12”
    5. Cliquer sur "="
    6. Attendre 2 secondes
    7. Vérifier que le résultat correspond à "238".
    8. Fermer le navigateur

Nous pouvons volontiers essayer un script sélectionné !

Etape 3 – Vérification du script par l’IA

  1. Rester dans la même conversation 
  2. Écrivez un prompt demandant au LLM de vérifier et d’expliquer le code de test qu’il a généré. Demandez explicitement de vérifier la syntaxe du Robot Framework.
  3. Vérifiez le résultat. Est-il utile ?
Etape 4 – Génération de scripts couvrant d’autres cas de test

  1. Restez dans la même conversation 
  2. Écrivez un prompt pour créer d’autres scripts, par exemple pour tester la division par zéro, la soustraction d’un opérant négatif et d’autres situations peu communes.
  3. Recommencez si le résultat ne vous satisfait pas

Partie 2 – Corriger un code de test

Cette partie de l’atelier 3 se concentre sur le prompt système. L’idée est de se créer un assistant pour la revue et la correction de scripts.

Etape 1 – Modification du prompt système

  1. Écrivez un prompt système qui fait du LLM choisi un assistant pour la revue et la correction de scripts. Expliquez au LLM qu’il va recevoir du code de votre part, qu’il doit le vérifier et renvoyer une version corrigée.
Etape 2 – Code bogué

  1. Testez le prompt système avec le script bogué ci-dessous 
  2. Recommencez dans une nouvelle conversation et un autre prompt système, si le résultat ne vous satisfait pas.

Spript de test bogué (.robot)

*** Settings ***
Library     SeleniumLibrary
Test Setup  Open navigator  ${URL}  ${BROWSER}
Test Teardown  Close navigator

*** Variables ***
${BROWSER}  chrome
${URL}  http://www.vtaas-benchmark.com:9980
${KEYWORD}  Samsung
${LOCATOR_BUTTON_SEARCH}  xpath=/html/body/section/div/form/div/div[3]/button
${LOCATOR_KEYWORD}  id=query


*** Test Cases ***
Search for a phone
    Verify the URL
    Enter keyword  ${KEYWORD}
    Press serach button 
	Verify Result ${KEYWORD}

*** Keywords ***
Verify URL
    Location Should Be  ${URL}

Enter Keyword
    [Arguments]  ${keyword}
    Input Text  ${LOCATOR_KEYWORD}  ${keyword}

Press search button 
    Click Button  ${LOCATOR_BUTTON_SEARCH}

Verify Result 
    [Arguments]    ${EXPECTED_RESULT}
	${result}=    Get Value    ${LOCATOR_KEYWORD}
    Should Be Equal As Strings    ${result}    ${EXPECTED_RESULT}
	
Open navigator
    [Arguments]  ${URL}  ${BROWSER}
    Open Browser  ${URL}  ${Browser}

Close navigator
    Close Browser
Voir plus

Les erreurs suivantes devraient être trouvées :

  • Ligne 16 : « Verify URL » au lieu de « Verify the URL ».
  • Ligne 18 : Faute de frappe dans « Press serach button » ».
  • Ligne 19 : espace manquant entre « Press button » et « Start now! »
  • Ligne 39: « ${BROWSER} » au lieu de « ${Browser} »
  • en général : majuscules et minuscules

Etape 3 – Correction d’un bogue concret

Suite a l’etape 2, si vous essayez d’exécuter votre test automatisé, vous remarquerez qu’il est toujours en échec. Cela est due à des défaillance lors de l’exécution, nommées défaillances dynamiques qui ne sont pas détectables statiquement.

  1. Demandez la correction du message d’erreur suivant :

Location should have been ‘http://www.vtaas-benchmark.com:9980‘ but was ‘http://www.vtaas-benchmark.com:9980/‘.

  • Si l’IA ne répond pas avec un script complet, demandez-lui de le faire.

Atelier 4 – Analyser des rapports d’anomalies

  1. Commencez par vous familiariser avec notre calculatrice en ligne : https://ott.uaestqb.ae/
  2. Consultez également le script ci-dessous (A_negative_divided_by_B_larger_than_A.robot). Il s’agit d’un des nombreux scripts similaires qui ont été réalisés de manière automatisée.
  3. Les résultats du test se trouvent ici : report.html. Jetez-y un coup d’œil également. Faites défiler la page jusqu’à la section « Test Details » et cliquez sur l’onglet « All ».
  4. Faites-moi savoir quand vous êtes prêts.
*** Settings ***

Library 	SeleniumLibrary
Resource 	../keywords.robot
Test Template	A_negative_divided_by_B_larger_than_A
Test Setup	MySetup
Test Teardown	MyTearDown


*** Test Cases ***

A_negative-divided_by-B_larger_than_A	-42	-1	42


*** Keywords ***

A_negative_divided_by_B_larger_than_A
	[Arguments] 	${A} 	${B} 	${Result}
	Enter Number 	${A}
	Click Operator 	/
	Enter Number 	${B}
	Click Operator 	=
	Verify Result 	${Result}

MySetup
	Open Online Calculator

MyTearDown
	Close Navigator
Voir plus

Partie 1 – Pas à pas (requêtage par étapes)

Etape 1 – Analyser un rapport de test
  1. Choisissez un LLM avec une taille de fenêtre de contexte de grande taille et commencez une nouvelle conversation.
  2. Écrivez un prompt qui demande à l’IA d’analyser les résultats de l’exécution du test avec Robot Framework et de créer une liste numérotée des 13 cas de test qui ont échoué. Donnez un exemple de format de sortie, par exemple 1. <name>, <assertion>
  3. Conseil : Expliquez à l’IA la manière dont le rapport de test est rédigé :
    La liste ci-dessous contient les résultats de l'exécution dans le format suivant :
    Robot . <nom du cas de test> . <nom du script>
    <Résultat (Pass/Fail)>
    <assertion>

Il s’agit du tableau « Test Details/All » mentionné ci-dessus, mais sans les deux colonnes vides et sous forme de fichier texte pur.

Robot . A negative minus B larger than A . A_negative-minus-B_larger_than_A
FAIL
-42--43 != 1
00:00:07.084
20240304 14:38:51.823
20240304 14:38:58.907
Robot . A negative minus B same as A . A_negative-minus-B_same_as_A
FAIL
-42--42 != 0
00:00:07.068
20240304 14:38:58.923
20240304 14:39:05.991
Robot . A negative minus B smaller than A . A_negative-minus-B_smaller_than_A
FAIL
-42--43 != -85
00:00:07.089
20240304 14:39:06.006
20240304 14:39:13.095
Robot . A very large number minus B larger than A . A_very_large_number-minus-B_larger_than_A
FAIL
0 != -1
00:00:07.854
20240304 14:43:36.229
20240304 14:43:44.083
Robot . A very large number minus B smaller than A . A_very_large_number-minus-B_smaller_than_A
FAIL
0 != 1
00:00:07.842
20240304 14:43:51.911
20240304 14:43:59.753
Robot . A very large number minus B zero . A_very_large_number-minus-B_zero
FAIL
100000000000000000 != 99999999999999999
00:00:07.374
20240304 14:43:59.773
20240304 14:44:07.147
Robot . A very large number plus B larger than A . A_very_large_number-plus-B_larger_than_A
FAIL
200000000000000000 != 199999999999999999
00:00:07.844
20240304 14:44:14.582
20240304 14:44:22.426
Robot . A very large number plus B same as A . A_very_large_number-plus-B_same_as_A
FAIL
200000000000000000 != 199999999999999998
00:00:07.780
20240304 14:44:22.442
20240304 14:44:30.222
Robot . A very large number plus B zero . A_very_large_number-plus-B_zero
FAIL
100000000000000000 != 99999999999999999
00:00:07.389
20240304 14:44:37.661
20240304 14:44:45.050
Robot . A very large number times B larger than A . A_very_large_number-times-B_larger_than_A
FAIL
1e+34 != 9,9999999999999999e+33
00:00:07.861
20240304 14:44:52.472
20240304 14:45:00.333
Robot . A very large number times B same as A . A_very_large_number-times-B_same_as_A
FAIL
1e+34 != 9,9999999999999998e+33
00:00:07.828
20240304 14:45:00.348
20240304 14:45:08.176
Robot . A very large number times B smaller than A . A_very_large_number-times-B_smaller_than_A
FAIL
100000000000000000 != 99999999999999999
00:00:07.421
20240304 14:45:08.176
20240304 14:45:15.597
Robot . A zero minus B smaller than A . Data set
FAIL
0--125000 != 125000
00:00:07.155
20240304 14:46:19.223
20240304 14:46:26.378
Robot . A negative divided by B empty . A_negative-divided_by-B_empty
PASS
00:00:07.063
20240304 14:38:09.255
20240304 14:38:16.318
Robot . A negative divided by B larger than A . A_negative-divided_by-B_larger_than_A
PASS
00:00:07.089
20240304 14:38:16.317
20240304 14:38:23.406
Robot . A negative divided by B same as A . A_negative-divided_by-B_same_as_A
PASS
00:00:07.105
20240304 14:38:23.421
20240304 14:38:30.526
Robot . A negative divided by B smaller than A . A_negative-divided_by-B_smaller_than_A
PASS
00:00:07.170
20240304 14:38:30.526
20240304 14:38:37.696
Robot . A negative divided by B zero . A_negative-divided_by-B_zero
PASS
00:00:07.090
20240304 14:38:37.696
20240304 14:38:44.786
Robot . A negative minus B empty . A_negative-minus-B_empty
PASS
00:00:07.022
20240304 14:38:44.786
20240304 14:38:51.808
Robot . A negative minus B zero . A_negative-minus-B_zero
PASS
00:00:07.082
20240304 14:39:13.110
20240304 14:39:20.192
Robot . A negative plus B empty . Data set
PASS
00:00:07.033
20240304 14:39:20.200
20240304 14:39:27.233
Robot . A negative plus B larger than A . Data set
PASS
00:00:07.250
20240304 14:39:27.249
20240304 14:39:34.499
Robot . A negative plus B same as A . Data set
PASS
00:00:07.045
20240304 14:39:34.506
20240304 14:39:41.551
Robot . A negative plus B smaller than A . Data set
PASS
00:00:07.159
20240304 14:39:41.567
20240304 14:39:48.726
Robot . A negative plus B zero . Data set
PASS
00:00:07.073
20240304 14:39:48.742
20240304 14:39:55.815
Robot . A negative times B empty . A_negative-times-B_empty
PASS
00:00:07.139
20240304 14:39:55.825
20240304 14:40:02.964
Robot . A negative times B larger than A . A_negative-times-B_larger_than_A
PASS
00:00:07.661
20240304 14:40:02.963
20240304 14:40:10.624
Robot . A negative times B same as A . A_negative-times-B_same_as_A
PASS
00:00:07.119
20240304 14:40:10.624
20240304 14:40:17.743
Robot . A negative times B smaller than A . A_negative-times-B_smaller_than_A
PASS
00:00:07.192
20240304 14:40:17.758
20240304 14:40:24.950
Robot . A negative times B zero . A_negative-times-B_zero
PASS
00:00:07.058
20240304 14:40:24.950
20240304 14:40:32.008
Robot . A one digit divided by B empty . A_one_digit-divided_by-B_empty
PASS
00:00:07.003
20240304 14:40:32.023
20240304 14:40:39.026
Robot . A one digit divided by B larger than A . A_one_digit-divided_by-B_larger_than_A
PASS
00:00:06.985
20240304 14:40:39.042
20240304 14:40:46.027
Robot . A one digit divided by B same as A . A_one_digit-divided_by-B_same_as_A
PASS
00:00:06.989
20240304 14:40:46.043
20240304 14:40:53.032
Robot . A one digit divided by B smaller than A . Data set
PASS
00:00:06.970
20240304 14:40:53.047
20240304 14:41:00.017
Robot . A one digit divided by B zero . A_one_digit-divided_by-B_zero
PASS
00:00:07.122
20240304 14:41:00.017
20240304 14:41:07.139
Robot . A one digit minus B empty . A_one_digit-minus-B_empty
PASS
00:00:06.964
20240304 14:41:07.155
20240304 14:41:14.119
Robot . A one digit minus B larger than A . A_one_digit-minus-B_larger_than_A
PASS
00:00:06.983
20240304 14:41:14.134
20240304 14:41:21.117
Robot . A one digit minus B same as A . A_one_digit-minus-B_same_as_A
PASS
00:00:07.002
20240304 14:41:21.132
20240304 14:41:28.134
Robot . A one digit minus B smaller than A . A_one_digit-minus-B_smaller_than_A
PASS
00:00:07.009
20240304 14:41:28.149
20240304 14:41:35.158
Robot . A one digit minus B zero . A_one_digit-minus-B_zero
PASS
00:00:06.949
20240304 14:41:35.173
20240304 14:41:42.122
Robot . A one digit plus B empty . A_one_digit-plus-B_empty
PASS
00:00:06.921
20240304 14:41:42.138
20240304 14:41:49.059
Robot . A one digit plus B larger than A . A_one_digit-plus-B_larger_than_A
PASS
00:00:06.966
20240304 14:41:49.075
20240304 14:41:56.041
Robot . A one digit plus B same as A . A_one_digit-plus-B_same_as_A
PASS
00:00:07.000
20240304 14:41:56.042
20240304 14:42:03.042
Robot . A one digit plus B smaller than A . A_one_digit-plus-B_smaller_than_A
PASS
00:00:07.120
20240304 14:42:03.042
20240304 14:42:10.162
Robot . A one digit plus B zero . A_one_digit-plus-B_zero
PASS
00:00:06.996
20240304 14:42:10.179
20240304 14:42:17.175
Robot . A one digit times B empty . Data set
PASS
00:00:06.975
20240304 14:42:17.190
20240304 14:42:24.165
Robot . A one digit times B larger than A . Data set
PASS
00:00:06.990
20240304 14:42:24.165
20240304 14:42:31.155
Robot . A one digit times B same as A . Data set
PASS
00:00:06.986
20240304 14:42:31.154
20240304 14:42:38.140
Robot . A one digit times B smaller than A . Data set
PASS
00:00:06.962
20240304 14:42:38.157
20240304 14:42:45.119
Robot . A one digit times B zero . Data set
PASS
00:00:07.016
20240304 14:42:45.118
20240304 14:42:52.134
Robot . A very large number divided by B empty . Data set
PASS
00:00:07.225
20240304 14:42:52.134
20240304 14:42:59.359
Robot . A very large number divided by B larger than A . Data set
PASS
00:00:07.283
20240304 14:42:59.374
20240304 14:43:06.657
Robot . A very large number divided by B same as A . Data set
PASS
00:00:07.264
20240304 14:43:06.673
20240304 14:43:13.937
Robot . A very large number divided by B smaller than A . Data set
PASS
00:00:07.088
20240304 14:43:13.953
20240304 14:43:21.041
Robot . A very large number divided by B zero . Data set
PASS
00:00:07.407
20240304 14:43:21.040
20240304 14:43:28.447
Robot . A very large number minus B empty . A_very_large_number-minus-B_empty
PASS
00:00:07.750
20240304 14:43:28.463
20240304 14:43:36.213
Robot . A very large number minus B same as A . A_very_large_number-minus-B_same_as_A
PASS
00:00:07.798
20240304 14:43:44.098
20240304 14:43:51.896
Robot . A very large number plus B empty . A_very_large_number-plus-B_empty
PASS
00:00:07.407
20240304 14:44:07.160
20240304 14:44:14.567
Robot . A very large number plus B smaller than A . A_very_large_number-plus-B_smaller_than_A
PASS
00:00:07.425
20240304 14:44:30.222
20240304 14:44:37.647
Robot . A very large number times B empty . A_very_large_number-times-B_empty
PASS
00:00:07.392
20240304 14:44:45.066
20240304 14:44:52.458
Robot . A very large number times B zero . A_very_large_number-times-B_zero
PASS
00:00:07.422
20240304 14:45:15.612
20240304 14:45:23.034
Robot . A zero divided by B empty . A_zero-divided_by-B_empty
PASS
00:00:06.984
20240304 14:45:23.051
20240304 14:45:30.035
Robot . A zero divided by B larger than A . A_zero-divided_by-B_larger_than_A
PASS
00:00:07.031
20240304 14:45:30.051
20240304 14:45:37.082
Robot . A zero divided by B same as A . A_zero-divided_by-B_same_as_A
PASS
00:00:06.969
20240304 14:45:37.081
20240304 14:45:44.050
Robot . A zero divided by B smaller than A . A_zero-divided_by-B_smaller_than_A
PASS
00:00:06.998
20240304 14:45:44.072
20240304 14:45:51.070
Robot . A zero divided by B zero . A_zero-divided_by-B_zero
PASS
00:00:07.012
20240304 14:45:51.086
20240304 14:45:58.098
Robot . A zero minus B empty . Data set
PASS
00:00:06.984
20240304 14:45:58.097
20240304 14:46:05.081
Robot . A zero minus B larger than A . Data set
PASS
00:00:07.127
20240304 14:46:05.081
20240304 14:46:12.208
Robot . A zero minus B same as A . Data set
PASS
00:00:07.001
20240304 14:46:12.223
20240304 14:46:19.224
Robot . A zero minus B zero . Data set
PASS
00:00:07.063
20240304 14:46:26.394
20240304 14:46:33.457
Robot . A zero plus B empty . A_zero-plus-B_empty
PASS
00:00:07.016
20240304 14:46:33.457
20240304 14:46:40.473
Robot . A zero plus B larger than A . A_zero-plus-B_larger_than_A
PASS
00:00:07.016
20240304 14:46:40.488
20240304 14:46:47.504
Robot . A zero plus B same as A . A_zero-plus-B_same_as_A
PASS
00:00:07.046
20240304 14:46:47.521
20240304 14:46:54.567
Robot . A zero plus B smaller than A . A_zero-plus-B_smaller_than_A
PASS
00:00:07.032
20240304 14:46:54.566
20240304 14:47:01.598
Robot . A zero plus B zero . A_zero-plus-B_zero
PASS
00:00:07.093
20240304 14:47:01.598
20240304 14:47:08.691
Robot . A zero times B empty . A_zero-times-B_empty
PASS
00:00:06.954
20240304 14:47:08.707
20240304 14:47:15.661
Robot . A zero times B larger than A . A_zero-times-B_larger_than_A
PASS
00:00:07.000
20240304 14:47:15.676
20240304 14:47:22.676
Robot . A zero times B same as A . A_zero-times-B_same_as_A
PASS
00:00:06.998
20240304 14:47:22.678
20240304 14:47:29.676
Robot . A zero times B smaller than A . A_zero-times-B_smaller_than_A
PASS
00:00:07.061
20240304 14:47:29.676
20240304 14:47:36.737
Robot . A zero times B zero . A_zero-times-B_zero
PASS
00:00:06.987
20240304 14:47:36.753
20240304 14:47:43.7
Voir plus
Etape 2 – Séparer le résultat attendu du résultat obtenu

Pour permettre à l’IA de comparer plus facilement les résultats de l’exécution des tests avec les cas de test, nous séparons ensuite le résultat attendu et le résultat effectivement observé.

  1. Restez dans la même conversation 
  2. Rédigez un prompt qui demande à l’IA de décomposer le message d’erreur (« assertion »). Expliquez-lui le format du message d’erreur : L'assertion compare le résultat observé au résultat attendu.
  3. Donnez un exemple à l’IA pour qu’elle comprenne mieux ce que vous voulez dire.
  4. Demandez une nouvelle liste :

Met à jour la liste numérotée et répond dans le format suivant :
1. <nom>
    * résultat observé 
    * résultat attendu

Etape 3 – Identifier des clusters de problèmes

  1. Restez dans la même conversation 
  2. Utilisez le prompt suivant :

La liste suivante présente tous les cas de test dans le format :
<nom>
<premier chiffre>
<opérateur>
<second chiffre>
= <résultat attendu>

Pour chacun des cas de test avec résultat FAIL, analyse les équations. Identifie les causes communes des assertions.

###
Cas de test :

<copier / coller les cas de tests ci dessous ici>

Cas de tests

Les cas de test ont été obtenus en utilisant Yest® à partir de ce parcours applicatif : 

A_negative-divided_by-B_empty
-42
/
(none)
= -42/

A_negative-divided_by-B_larger_than_A
-42
/
-1
= 42

A_negative-divided_by-B_same_as_A
-42
/
-42
= 1

A_negative-divided_by-B_smaller_than_A
-42
/
-100
= 0.42

A_negative-divided_by-B_zero
-42
/
0
= -Infinity

A_negative-minus-B_empty
-42
-
(none)
= -42-

A_negative-minus-B_larger_than_A
-42
-
-43
= 1

A_negative-minus-B_same_as_A
-42
-
-42
= 0

A_negative-minus-B_smaller_than_A
-42
-
-43
= -85

A_negative-minus-B_zero
-42
-
0
= -42

A_negative-plus-B_empty
-25
+
(none)
= -25+

A_negative-plus-B_larger_than_A
-12
+
-10
= -22

A_negative-plus-B_same_as_A
-1
+
-1
= -2

A_negative-plus-B_smaller_than_A
-1000
+
-1100
= -2100

A_negative-plus-B_zero
-42
+
0
= -42

A_negative-times-B_empty
-42
*
(none)
= -42*

A_negative-times-B_larger_than_A
-42
*
-1
= 42

A_negative-times-B_same_as_A
-42
*
-42
= 1764

A_negative-times-B_smaller_than_A
-42
*
-100
= 4200

A_negative-times-B_zero
-42
*
0
= 0

A_one_digit-divided_by-B_empty
1
/
(none)
= 1/

A_one_digit-divided_by-B_larger_than_A
2
/
4
= 0.5

A_one_digit-divided_by-B_same_as_A
3
/
3
= 1

A_one_digit-divided_by-B_smaller_than_A
7
/
2
= 3.5

A_one_digit-divided_by-B_zero
4
/
0
= Infinity

A_one_digit-minus-B_empty
5
-
(none)
= 5-

A_one_digit-minus-B_larger_than_A
6
-
10
= -4

A_one_digit-minus-B_same_as_A
7
-
7
= 0

A_one_digit-minus-B_smaller_than_A
8
-
1
= 7

A_one_digit-minus-B_zero
9
-
0
= 9

A_one_digit-plus-B_empty
8
+
(none)
= 8+

A_one_digit-plus-B_larger_than_A
7
+
8
= 15

A_one_digit-plus-B_same_as_A
6
+
6
= 12

A_one_digit-plus-B_smaller_than_A
5
+
4
= 9

A_one_digit-plus-B_zero
4
+
0
= 4

A_one_digit-times-B_empty
3
*
(none)
= 3*

A_one_digit-times-B_larger_than_A
1
*
2
= 2

A_one_digit-times-B_same_as_A
2
*
2
= 4

A_one_digit-times-B_smaller_than_A
9
*
3
= 27

A_one_digit-times-B_zero
7
*
0
= 0

A_very_large_number-divided_by-B_empty
987654321
/
(none)
= 987654321/

A_very_large_number-divided_by-B_larger_than_A
100000
/
1000000
= 0.1

A_very_large_number-divided_by-B_same_as_A
123456
/
123456
= 1

A_very_large_number-divided_by-B_smaller_than_A
19999
/
1
= 19999

A_very_large_number-divided_by-B_zero
99999999999999999
/
0
= Infinity

A_very_large_number-minus-B_empty
99999999999999999
-
(none)
= 99999999999999999-

A_very_large_number-minus-B_larger_than_A
99999999999999999
-
100000000000000000
= -1

A_very_large_number-minus-B_same_as_A
99999999999999999
-
99999999999999999
= 0

A_very_large_number-minus-B_smaller_than_A
99999999999999999
-
99999999999999998
= 1

A_very_large_number-minus-B_zero
99999999999999999
-
0
= 99999999999999999

A_very_large_number-plus-B_empty
99999999999999999
+
(none)
= 99999999999999999+

A_very_large_number-plus-B_larger_than_A
99999999999999999
+
100000000000000000
= 199999999999999999

A_very_large_number-plus-B_same_as_A
99999999999999999
+
99999999999999999
= 199999999999999998

A_very_large_number-plus-B_smaller_than_A
99999999999999999
+
1
= 100000000000000000

A_very_large_number-plus-B_zero
99999999999999999
+
0
= 99999999999999999

A_very_large_number-times-B_empty
99999999999999999
*
(none)
= 99999999999999999*

A_very_large_number-times-B_larger_than_A
99999999999999999
*
100000000000000000
= 9,9999999999999999e+33

A_very_large_number-times-B_same_as_A
99999999999999999
*
99999999999999999
= 9,9999999999999998e+33

A_very_large_number-times-B_smaller_than_A
99999999999999999
*
1
= 99999999999999999

A_very_large_number-times-B_zero
99999999999999999
*
0
= 0

A_zero-divided_by-B_empty
0
/
(none)
= 0/

A_zero-divided_by-B_larger_than_A
0
/
1
= 0

A_zero-divided_by-B_same_as_A
0
/
0
= NaN

A_zero-divided_by-B_smaller_than_A
0
/
-1
= 0

A_zero-divided_by-B_zero
0
/
0
= NaN

A_zero-minus-B_empty
0
-
(none)
= 0-

A_zero-minus-B_larger_than_A
0
-
25
= -25

A_zero-minus-B_same_as_A
0
-
0
= 0

A_zero-minus-B_smaller_than_A
0
-
-125000
= 125000

A_zero-minus-B_zero
0
-
0
= 0

A_zero-plus-B_empty
0
+
(none)
= 0+

A_zero-plus-B_larger_than_A
0
+
1
= 1

A_zero-plus-B_same_as_A
0
+
0
= 0

A_zero-plus-B_smaller_than_A
0
+
-1
= -1

A_zero-plus-B_zero
0
+
0
= 0

A_zero-times-B_empty
0
*
(none)
= 0*

A_zero-times-B_larger_than_A
0
*
1
= 0

A_zero-times-B_same_as_A
0
*
0
= 0

A_zero-times-B_smaller_than_A
0
*
-1
= 0

A_zero-times-B_zero
0
*
0
= 0
Voir plus
Etape 4 – Identifier les anomalies connues, les mettre à jour et créer les rapports qui manquent

  1. Restez dans la même conversation
  2. Écrivez un prompt permettant d’identifier pour chaque anomalie, si elle est connue pour mettre à jour les informations associées (statut, liste de cas de tests concernés) et si elle ne l’est pas de créer un rapport
  3. Essayez votre prompt.
  4. Recommencez si le résultat ne vous satisfait pas

Liste des anomalies connues : Format PDF

ID : 001 
Module :  Calculatrice 
Environnement :  Windows 11, Chrome
Priorité :  Élevée
Sévérité :  Critique
Rapporté par :   AKR
Détecté le : 07/02/2024
Status : Corrigé

Description :  
Le système ne gère pas correctement l'arithmétique impliquant des nombres négatifs, en particulier pour les opérations de soustraction et d'addition.

Étapes pour Reproduire :  
    * Accéder à la calculatrice en ligne.
    * Entrer un nombre négatif pour le premier opérande (par exemple, -42).
    * Sélectionner l'opération de soustraction.
    * Entrer un second nombre négatif, plus grand que le premier (par exemple, -43).
    * Valider le calcul.

Résultat Attendu :  
Le résultat devrait être l'addition du premier nombre avec la valeur positive du second (ex: -42 + 43 = 1).

Résultat Observé :  
Le système ne reconnait pas la soustraction d'un nombre négatif. Apparemment, la calculatrice interprète le "- - " comme texte.

Cas de Tests Concernés :  
    * A negative minus B same as A
    * A negative minus B smaller than A


ID : 002 
Module :  Calculatrice 
Environnement :  Windows 11, Chrome
Priorité :  Critique
Sévérité :  Critique
Rapporté par :   JBA
Détecté le : 12/01/2024
Status : Validé

Description :  
La calculatrice se plante quand on effectue une division par zéro

Étapes pour Reproduire :  
    * Accéder à la calculatrice en ligne.
    * Entrer n'importe quel nombre comme opérande (par exemple, 9).
    * Sélectionner l'opération de division.
    * Entrer "0" comme second opérande.
    * Valider le calcul.

Résultat Attendu :  
La calculatrice devrait afficher "Infinity"  ou "-Infinity" selon le signe du premier nombre.

Résultat Observé :  
L'application gèle. Il faut fermer le navigateur pour redémarer la calculatrice.

Cas de Tests Concernés :  
    * A_one_digit-divided_by-B_zero


ID : 003
Module : Calculatrice
Environnement : Windows 11, Tous navigateurs
Priorité : Basse
Sévérité : Normale
Rapporté par : AKR
Détecté le : 12/01/2024
Status : Corrigé

Description :
Cas de test erronné. Le résultat attendu pour l'opération de division de "0 / 0" est "NaN" (Not a Number) ce qui est aussi observé.

Étapes pour Reproduire :
    * Accéder à la calculatrice en ligne.
    * Entrer le chiffre "0" comme premier opérande.
    * Sélectionner l'opération de division.
    * Entrer "0" comme second opérande.
    * Valider le calcul.

Résultat Attendu :
Le système devrait afficher "NaN" pour indiquer que la division par zéro est une opération indéfinie.

Résultat Observé :
Le système affiche correctement "NaN", mais le résultat attendu défini dans le cas de test est incorrectement spécifié comme "1".

Cas de Tests Concernés :
    * A_zero-divided_by-B_zero
Voir plus
Etape 5 – Vérifier le résultat

  1. Restez dans la même conversation
  2. Écrivez un prompt pour vérifier le résultat et essayez-le
  3. Utiliser ensuite le prompt suivant pour améliorer la requête : 
Partie 2 – Avec prompt du type « fonction »

Le résultat de la première partie ne vous a probablement pas convaincu. Nous allons donc réessayer avec une approche complètement différente : une sorte de prompt du type fonction avec une entrée et une sortie.

  1. Choisissez un LLM avec une taille de fenêtre de contexte de grande taille et commencez une nouvelle conversation.
  2. Lisez attentivement le prompt suivant, puis donnez-le au LLM avec la liste des anomalies.
  3. Dans le prompt suivant, indiquez les résultats de l’exécution comme input : et les cas de test comme référence :
  4. Vérifiez le résultat. Actualisez avec <F5> si rien n’est affiché.

Prompt du type « fonction »

Afin de t'aider à comprendre plus facilement ma demande, j'utilise ce modèle pour décrire la fonction, l'entrée et les instructions sur ce qu'il faut faire avec l'entrée.
Tu trouveras les détails ci-dessous :

nom_de_la_fonction : assistant_anomalies
input : [rapport d'exécution d'un cas de test]
référence : [étapes du cas de test]
règle : Analyse le rapport d'exécution de ces cas de test. Vérifie dans la liste des anomalies connues s'il existe déjà un rapport d'anomalie pour le problème observé. Si le problème observé est déjà décrit dans une anomalie existante, mets le statut à « Ouvert » et mets à jour la liste des cas de test. Si aucune des anomalies connues ne correspond au problème observé, crée un nouveau rapport d'anomalie et ajoute-le à la liste. Procède pas à pas.

Si tu as compris, répond par "ok".


###
Liste des anomalies connues :
<copier/coller ici la liste des anomalies connues (voir Partie 1 – Etape 4)>

Atelier 5 – Hallucinations / Erreurs

Partie 1 – Hallucination du LLM – Types de test suivant ISTQB Fondation v4.0

Etape 1 – Observer des hallucinations

  1. Ouvrez une nouvelle conversation avec 3 LLM de votre choix
  2. Créez un prompt demandant les 4 types de test suivant le syllabus ISTQB de niveau fondation en version v4.0
  3. Vérifiez la réponse en regardant sur le syllabus section 2.2.2 Page 33 https://cftl.fr/wp-content/uploads/2023/11/ISTQB-Syllabus-Niveau-Fondation-v4.0-Francais.pdf  
Etape 2 – Reconnaître les hallucinations

  1. Restez dans le même chat avec les 3 LLM de votre choix.
  2. Demandez à l’IA à quel point elle est sûre de sa réponse. Demande aussi explicitement son « niveau de confiance ».
  3. Cherchez des moyens d’amener l’IA à s’impliquer dans des contradictions. Demandez par exemple dans quel chapitre les types de tests sont décrits, puis demandez à ce que le chapitre soit résumé. Ou demandez la définition du terme « type de test » et si cette définition correspond aux réponses précédentes.
  4. Si vous trouvez un moyen d’identifier clairement l’hallucination, n’hésitez pas à le partager avec le groupe.

Partie 2 – Erreur de raisonnement du LLM sur une tâche de priorisation de tests

La difficulté de cette tâche réside dans le fait que la priorisation dépend de deux aspects : les priorités des différents cas de test et leurs interdépendances.

Etape 1 – Résoudre un problème simple de priorisation

  1. Ouvrez une nouvelle conversation avec un LLM de votre choix
  2. Utilisez le prompt suivant :

Tu es mon assistant dans le domaine des tests logiciels.
Instruction :
Réalise la priorisation de l’ordre d’exécution des cas de test suivants en tenant compte des priorités données et des dépendances entre tests.
Pour la priorité : 1 le plus prioritaire et 3 le moins prioritaire.
Voici le tableau des cas de tests à prioriser :

Cas de test Description Priorité Dépendance
| TC A01 | Créer Formation | 2 ||
| TC A02 | Créer Formateur | 3 ||
| TC A03 | Créer Etudiant | 3 ||
| TC B01 | Créer Instance de Formation | 2 | TC A01 |
| TC C01 | Lier Formateur à l’Instance de Formation | 1 | TC B01 / TC A02 |
| TC C02 | Lier Etudiant à l’Instance de Formation | 2 | TC B01 / TC A03 |

Note : la réponse correcte est TC A01 / TC B01 / TC A02 / TC C01 / TC A03 / TC C02

Etape 2 – Essayez d’obtenir le bon résultat

  1. Ouvrez une nouvelle conversation avec le LLM de notre choix
  2. Créez des prompts pour obtenir le bon résultat

Atelier 6 – Impact CO2 de l’IA générative

Méthode 1 – Par calcul de l’empreinte CO2 en fonction du temps passé

  1. Allez sur : https://mlco2.github.io/impact/?#compute
  2. Estimez l’émission CO2 des heures passées:
    – Combien de temps avons-nous passé à écrire des requêtes?
    – Combien de personnes sommes-nous?
  3. On suppose pour ChatGPT :
    – NVIDIA A100 (Source)
    – MS Azure Cloud
    – Location : West US 2
  4. Pour comparer, essayez les même valeurs, mais location differentes:
    • “France South” et “West Europe”.
Méthode 2 – Basée sur l’estimation par requête

Les estimations par requête varient entre : 

– 4 à 5 fois le taux d’émission d’une recherche Google traditionnelle (qui est de 0,2g, donc environ 1g par requête ChatGPT)
– et une estimation de 4,32g par requête. (
https://piktochart.com/blog/carbon-footprint-of-chatgpt/).
– Refaites le calcul en estimant le nombre de requêtes faites aujourd’hui.

Atelier 7 – Technique RAG

Expérience 1 – Analyse de test à partir de spécifications techniques

Cet exercice diffère des exercices précédents. Il s’agit moins de rédiger de bons prompts que d’expérimenter et de comprendre les possibilités et les limites de la technologie RAG.

A faire :

  1. Choisissez le modèle GPT-4o  et commencez une nouvelle conversation.
  2. Ajoutez le document .pdf joint “WT-Wind Turbine Requirements_V1-170723-124914
  3. Dialoguez avec GPT-4 pour réaliser l’analyse de test de cette application

Exemples de prompts pour l’analyse de test :

  • Décrit le fonctionnement de la turbine éolienne suivant le document joint
  • Extrait les conditions de tests et les classes d'équivalence pour tester ce système
  • ...
    Expérience 2 – Analyser un document complexe

    Cette partie consiste également à poser des questions au LLM afin de s’orienter le plus rapidement et le plus facilement possible dans un document complexe.

    A faire :

    1. Choisissez le modèle GPT-4o  et commencez une nouvelle conversation.
    2. Ajoutez le document .pdf joint “Recommandations_ANSSI_IA_Gen-29 avril 2024
    3. Remarque : GPT4o est parfois un peu lent, mais ne le dit pas, il prétend ne pas avoir reçu de document. Dans ce cas, il faut simplement demander « Et maintenant ? »
    4. Dialoguez avec l’IA pour en savoir plus sur les recommandations de l’ANSSI pour la sécurité des systèmes d’IA générative

    Exemples de prompts pour l’analyse de test :

    • Selon le document, quels sont les scénarios d'attaque sur l'IA générative ?
    • Explique les recommandations pour le cas particulier de l'utilisation de solutions d'IA générative tierces.
    • Explique la figure 2 en utilisant un langage simple.
    • ...
    Atelier 8 – Intégration de fonctions IA générative dans un outil de test

    https://gravity.smartesting.com/register

    Pour vous connecter : 

    • – soit vous disposez déjà d’un compte : connectez-vous 
    • – si vous n’avez pas de compte Gravity, connectez-vous avec votre mail professionel et un mot de passe de votre choix

    Ensuite, accédez au projet “Demo Planka” que nous allons utiliser pour l’atelier



    Ressources

    Glossaire – Termes importants autour de l’IA Générative 
    Agent LLM

    application LLM intégrant des capacités de raisonnement, de décision, d’action, d’évaluation, une mémoire de ce qui a été déjà réalisé et utilisant des outils (appels de fonctions)

    API

    Application Programming Interface – mode d’accès à un LLM

    Bias

    un poids disproportionné en faveur ou à l’encontre d’une idée ou d’une chose, généralement d’une manière inexacte, fermée, préjudiciable ou injuste [Wikipédia EN]

    Chatbot

    logiciel ou interface web conçu pour imiter la conversation humaine par le biais d’interactions textuelles ou vocales [Wikipédia EN]

    Chain-of-Thought

    technique de prompting qui force le modèle de penser par étapes (“Let’s think step-by-step”)

    Chain-of-Verification

    méthode par laquelle le modèle (i) rédige une réponse initiale ; (ii) prévoit des questions de vérification pour contrôler son projet ; (iii) répond à ces questions de manière indépendante afin que les réponses ne soient pas faussées par d’autres réponses ; et (iv) génère sa réponse finale vérifiée. 
    [https://huggingface.co/papers/2309.11495]

    Conversational AI

    IA générative mode mode interaction de type conversation (exemple: chatbot)

    Deep Learning (apprentissage profond)

    sous-domaine de l’intelligence artificielle qui utilise des réseaux neuronaux pour résoudre des tâches complexes [Wikipédia]

    Embedding

    technique utilisée pour représenter des mots ou des entités sous forme de vecteurs dans un espace vectoriel continu

    Fenêtre contextuelle

    groupe spécifique de mots autour d’un mot cible dans un texte, utilisé pour saisir les informations contextuelles d’un mot en tenant compte des mots qui apparaissent à proximité.

    Few-shot prompting

    technique de rédaction d’un prompt dans laquelle le prompt contient 2 à n exemples pour guider l’IA dans sa réponse

    Fine-Tuning

    processus d’apprentissage supervisé utilisant un ensemble de données d’exemples étiquetés pour mettre à jour les poids du LLM et améliorer ses capacités pour des tâches spécifiques

    Generative AI

     type de système d’intelligence artificielle (IA) capable de générer du texte, des images ou d’autres médias en réponse à des prompts [Wikipédia]

    Generative Pre-Trained Transformer (GPT)

    type de modèle d’apprentissage profond (Deep Learning) basé sur l’algorithme “Transformer” qui est pré-entraîné sur une grande quantité de données textuelles pour comprendre et générer des textes de type humain

    IA générative

    type de système d’intelligence artificielle (IA) capable de générer du texte, des images ou d’autres médias en réponse à des prompts [Wikipédia]

    Instruction-Tuned LLM

    LLM de base entraîné pour suivre des instructions; renforcé par des retours sur les réponses pour favoriser les bonnes réponses

    Large Language Model (LLM)

    modèle d’apprentissage profond (Deep Learning) conçu pour traiter et comprendre de grandes quantités de données textuelles afin d’effectuer diverses tâches de traitement du langage naturel telles que la génération de texte, la traduction linguistique et l’analyse des sentiments

    LLM de base

    modèles à usage général pré-entraînés sur un large éventail de données textuelles, prédit le mot suivant à partir des données textuelles apprises et de la proximité linguistique

    LLMOps

    abréviation de Large Language Model Operations, concerne les aspects opérationnels et les techniques d’optimisation associés au déploiement et à l’utilisation efficace de modèles de language de grande taille.

    Machine Learning (ML)

    branche de l’intelligence artificielle qui implique le développement d’algorithmes et de modèles statistiques pour permettre aux ordinateurs d’apprendre et de faire des prédictions ou de prendre des décisions basées sur des données sans instructions de programmation explicites

    Méta-requêtage

    technique de rédaction de prompt de haut niveau qui guide la génération ou la création de prompts plus spécifiques, qui sont à leur tour utilisés pour générer du texte, des images ou toute forme de contenu

    One-shot prompting

    technique de rédaction d’un prompt dans laquelle le prompt contient un exemple pour guider l’IA dans sa réponse

    Prompt

    requête textuelle

    Prompt Engineering

    processus de structuration d’un texte qui peut être interprété et compris par un modèle génératif d’IA [Wikipédia EN]

    Prompt système

    instruction prédéfinie utilisée par un système d’IA pour lancer ou guider ses opérations

    Retrieval-Augmented Generation (RAG)

    architecture de réseau neuronal qui combine les capacités des modèles de langage pré-entraînés avec un composant de récupération pour chercher des informations pertinentes dans une grande base de données ou corpus (par ex. des documents), améliorant la capacité du modèle à générer des réponses précises et contextuellement pertinentes basées sur les données récupérées

    Requêtage par étapes

    technique de prompting qui consiste à utiliser la sortie d’une incitation comme entrée pour une autre, créant ainsi une chaîne d’incitations qui s’ajoutent les unes aux autres

    Small Language Model (SML)

    version réduite de modèles de langage plus larges, pré-entraînés pour des tâches spécifiques et conçus pour offrir un équilibre entre l’efficacité informatique et la capacité à comprendre et à générer des textes de type humain

    Température (d’un modèle)

    paramètre qui contrôle le caractère aléatoire ou créatif du résultat généré

    Transformer

    architecture de modèle d’apprentissage profond (Deep Learning) qui utilise des mécanismes d’auto-attention (Self-Attention) pour capturer les dépendances à longue portée dans les séquences d’entrée pour les tâches

    Token

    morceau de texte, tel qu’un mot, un caractère ou un sous-mot, qui sert d’unité d’entrée pour le traitement par l’IA générative

    Zero-shot prompting

    technique de rédaction d’un prompt dans laquelle le prompt ne contient pas d’exemples

    Problèmes connus avec les LLM
    Il n’est pas possible de scoller pour voir la réponse.

    Vous utilisez probablement plusieurs LLM et l’un d’entre eux est toujours en train de calculer.

    Attendez un peu. Cela fonctionnera une fois que tous les LLM auront terminés.

    Le LLM s’arrête brusquement au milieu de la réponse

    Comportement observé avec tous les LLM, mais en particulier avec Claude.

    Pour remédier à ce problème, il suffit d’envoyer un prompt avec Continue, s’il s’agit d’une conversation avec un seul LLM ou As-tu terminé ?, s’il c’est une conversation avec plusieurs LLM.

    Tous les éléments d’une liste numérotée commencent par 1

    Comportement dû au fait que le LLM ne répond pas dans un format markdown correct.

    Pour remédier à ce problème, utilisez le prompt suivant :

    Répète la réponse sans changer un mot, mais veille à ce que les listes numérotées respectent le format markdown (4 espaces en tête).

    Lors de l’utilisation du module de vision, le LLM ne répond pas du tout.

    Le LLM calcule toujours la réponse, mais n’informe pas la LLM workbench via l’API.

    Attendez un peu. Puis demandez Et maintenant ?

    The portal suddenly displays a message box with an XSS alert.

    Vous avez probablement demandé des exigences non fonctionnelles et le LLM a créé quelque chose comme . La LLM workbench exécute alors l’alerte.

    Attendez, jusqu’à ce que tous les LLM dans le chat aient terminé leur réponse. Ensuite, confirmez les alertes. N’essayez pas de confirmer l’alerte entre-temps. Elle s’affichera à nouveau !