Version 4.0.2 – Décembre 2024
Accélérer vos processus de test grâce à l’IA générative
Outils utilisés :
https://chat.smartesting.com/
Ateliers
Warm-up – Comprendre les tokens
- Allez sur https://tiktokenizer.vercel.app/?model=cl100k_base
- Tapez “
Le chat est assis sur le
”. - Regardez les tokens créés et leur forme numérique (TokenId).
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 0 – Annexe 1 – Extrait du syllabus ISTQB
Extrait du syllabus ISTQB Niveau Fondation v4.0
Il s’agit de la totalité du chapître 4 (Techniques de test) du Syllabus.
Techniques de test
1. Aperçu des techniques de test
Les techniques de test aident le testeur dans l'analyse de test (ce qu'il faut tester) et dans la conception des tests (comment tester). Les techniques de test aident à développer de manière systématique un ensemble relativement restreint, mais suffisant, de cas de test. Les techniques de test aident également le testeur à définir les conditions de test, à identifier les éléments de couverture et à identifier les données de test au cours de l'analyse et de la conception des tests. De plus amples informations sur les techniques de test et les mesures correspondantes peuvent être trouvées dans le standard ISO/IEC/IEEE 29119-4, et dans (Beizer 1990, Craig 2002, Copeland 2004, Koomen 2006, Jorgensen 2014, Ammann 2016, Forgács 2019).
Dans ce syllabus, les techniques de test sont classées en boîte noire, boîte blanche et basée sur l'expérience
Les techniques de test boîte noire (également connues sous le nom de techniques basées sur les spécifications) sont basées sur une analyse du comportement spécifié de l'objet de test sans référence à sa structure interne. Les cas de test sont donc indépendants de l'implémentation du logiciel. Par conséquent, si l'implémentation change, mais que le comportement requis reste le même, les cas de test restent utiles.
Les techniques de test boîte blanche (également connues sous le nom de techniques basées sur la structure) sont basées sur une analyse de la structure interne et du traitement de l'objet de test. Comme les cas de test dépendent de la conception du logiciel, ils ne peuvent être créés qu'après la conception ou l'implémentation de l'objet de test.
Les techniques de test basées sur l'expérience utilisent efficacement les connaissances et l'expérience des testeurs pour la conception et l'implémentation des cas de test. L'efficacité de ces techniques dépend fortement des compétences du testeur. Les techniques de test basées sur l'expérience peuvent détecter des défauts qui pourraient échapper aux techniques de test boîte noire et boîte blanche. Les techniques de test basés sur l'expérience sont donc complémentaires des techniques de test boîte noire et boîte blanche.
2. Techniques de test boîte noire
Les techniques de test boîte noire couramment utilisées et présentées dans les sections suivantes sont les suivantes :
• Partitions d'équivalence.
• Analyse des valeurs limites.
• Test par tables de décisions.
• Test de transition d'état.
2.1. Partitions d'équivalence
Les partitions d'équivalence divisent les données en partitions (appelées partitions d'équivalence) en partant du principe que tous les éléments d'une partition donnée doivent être traités de la même manière par l'objet de test. La théorie qui sous-tend cette technique est que si un cas de test, qui teste une valeur d'une partition d'équivalence, détecte un défaut, ce défaut devrait également être détecté par les cas de test qui testent n'importe quelle autre valeur de la même partition. Par conséquent, un test pour chaque partition est suffisant.
Les partitions d'équivalence peuvent être identifiées pour tout élément de données lié à l'objet de test, y compris les entrées, les sorties, les éléments de configuration, les valeurs internes, les valeurs liées au temps et les paramètres d'interface. Les partitions peuvent être continues ou discrètes, ordonnées ou non, finies ou infinies. Les partitions ne doivent pas se chevaucher et doivent être des ensembles non vides.
Pour les objets de test simples, la technique des partitions d'équivalence peut être simple, mais dans la pratique, il est souvent compliqué de comprendre comment l'objet de test traitera les différentes valeurs. C'est pourquoi le partitionnement doit être effectué avec soin.
Une partition contenant des valeurs valides est appelée partition valide. Une partition contenant des valeurs invalides est appelée partition invalide. Les définitions des valeurs valides et invalides peuvent varier selon les équipes et les organisations. Par exemple, les valeurs valides peuvent être interprétées comme celles qui doivent être traitées par l'objet de test ou comme celles pour lesquelles la spécification définit le traitement. Les valeurs invalides peuvent être interprétées comme celles qui doivent être ignorées ou rejetées par l'objet de test ou comme celles pour lesquelles aucun traitement n'est défini dans la spécification de l'objet de test.
Dans la technique des partitions d'équivalence, les éléments de couverture sont les partitions d'équivalence. Pour atteindre une couverture de 100 % avec cette technique, les cas de test doivent exercer toutes les partitions identifiées (y compris les partitions invalides) en couvrant chaque partition au moins une fois. La couverture est mesurée comme le nombre de partitions exercées par au moins un cas de test, divisé par le nombre total de partitions identifiées, et est exprimée en pourcentage.
De nombreux objets de test comprennent plusieurs ensembles de partitions (par exemple, les objets de test avec plus d'un paramètre d'entrée), ce qui signifie qu'un cas de test couvrira des partitions provenant de différents ensembles de partitions. Le critère de couverture le plus simple dans le cas d'ensembles multiples de partitions est appelé couverture Each Choice (Ammann 2016). La couverture Each Choice exige que les cas de test exercent chaque partition de chaque ensemble de partitions au moins une fois. La couverture Each Choice ne prend pas en compte les combinaisons de partitions.
2.2. Analyse des valeurs limites
L'analyse des valeurs limites est une technique basée sur l'exercice des limites des partitions d'équivalence. Par conséquent, la technique de l'analyse des valeurs limites ne peut être utilisée que pour des partitions ordonnées. Les valeurs minimales et maximales d'une partition sont ses valeurs limites. Dans le cas de la technique de l'analyse des valeurs limites, si deux éléments appartiennent à la même partition, tous les éléments qui se trouvent entre eux doivent également appartenir à cette partition.
La technique de l'analyse des valeurs limites se concentre sur les valeurs limites des partitions, car les développeurs sont plus susceptibles de commettre des erreurs au niveau de ces valeurs limites. Les défauts typiques trouvés par cette technique se situent là où les limites implémentées sont mal placées, à des positions supérieures ou inférieures à celles prévues, ou sont complètement omises.
Ce syllabus couvre deux versions de la technique de l'analyse des valeurs limites : la technique à 2 valeurs et la technique à 3 valeurs. Elles diffèrent en termes d'éléments de couverture par limite qui doivent être exercés pour atteindre une couverture de 100 %.
Dans la technique à 2 valeurs (Craig 2002, Myers 2011), pour chaque valeur limite, il y a deux éléments de couverture : la valeur limite en question et sa voisine la plus proche appartenant à la partition adjacente. Pour atteindre une couverture de 100 % avec la technique à 2 valeurs, les cas de test doivent exercer tous les éléments de couverture, c'est-à-dire toutes les valeurs limites identifiées. La couverture est mesurée comme le nombre de valeurs limites exercées, divisé par le nombre total de valeurs limites identifiées, et est exprimée en pourcentage.
Dans la technique à 3 valeurs (Koomen 2006, O'Regan 2019), pour chaque valeur limite, il y a trois éléments de couverture : la valeur limite en question et ses deux voisines. Par conséquent, dans la technique à 3 valeurs, certains des éléments de couverture peuvent ne pas être des valeurs limites. Pour atteindre une couverture de 100 % avec la technique à 3 valeurs, les cas de test doivent exercer tous les éléments de couverture, c'est-à-dire les valeurs limites identifiées et leurs voisines. La couverture est mesurée comme le nombre de valeurs limites et de leurs voisines exercées, divisé par le nombre total de valeurs limites identifiées et de leurs voisines, et est exprimée en pourcentage.
La technique à 3 valeurs est plus rigoureuse que la technique à 2 valeurs, car elle permet de détecter des défauts qui n'ont pas été pris en compte par la technique à 2 valeurs. Par exemple, si la décision "si (x ≤ 10) ..." est incorrectement implémentée comme "si (x = 10) ...", aucune donnée de test dérivée de la technique à 2 valeurs (x = 10, x = 11) ne peut détecter le défaut. Cependant, x = 9, dérivé de la technique à 3 valeurs, est susceptible de le détecter.
2.3. Test par tables de décisions
Les tables de décision sont utilisées pour tester l'implémentation des exigences du système qui spécifient comment différentes combinaisons de conditions aboutissent à des résultats différents. Les tables de décision constituent un moyen efficace d'enregistrer une logique complexe, telle que les règles de gestion.
Lors de la création de tables de décision, les conditions et les actions résultantes du système sont définies. Elles constituent les lignes de la table. Chaque colonne correspond à une règle de décision qui définit une combinaison unique de conditions, ainsi que les actions associées. Dans les tables de décision à entrée limitée, toutes les valeurs des conditions et des actions (à l'exception des valeurs non pertinentes ou irréalisables ; voir ci-dessous) sont présentées sous forme de valeurs booléennes (vrai ou faux). Dans les tables de décision à entrée étendue, tout ou partie des conditions et des actions peuvent également prendre des valeurs multiples (plages de nombres, partitions d'équivalence, valeurs discrètes, etc.)
La notation des conditions est la suivante : " V " (vrai) signifie que la condition est remplie. "F" (faux) signifie que la condition n'est pas remplie. "-" signifie que la valeur de la condition n'est pas pertinente pour le résultat de l'action. "N/A" signifie que la condition est irréalisable pour une règle donnée. Pour les actions : "X" signifie que l'action doit avoir lieu. Blanc signifie que l'action ne doit pas se produire. D'autres notations peuvent également être utilisées.
Une table de décision complète comporte suffisamment de colonnes pour couvrir toutes les combinaisons de conditions. La table peut être simplifiée en supprimant les colonnes contenant des combinaisons de conditions irréalisables. La table peut également être minimisée en fusionnant les colonnes dans lesquelles certaines conditions n'affectent pas le résultat en une seule colonne. Les algorithmes de minimisation des tables de décision sont hors du périmètre de ce syllabus.
Dans les tests par tables de décisions, les éléments de couverture sont les colonnes contenant les combinaisons de conditions réalisables. Pour atteindre une couverture de 100 % avec cette technique, les cas de test doivent exercer toutes ces colonnes.
La couverture est mesurée comme le nombre de colonnes exercées, divisé par le nombre total de colonnes réalisables, et est exprimée en pourcentage.
La force du test par tables de décisions réside dans le fait qu'il fournit une approche systématique permettant d'identifier toutes les combinaisons de conditions, dont certaines pourraient autrement être négligées. Il permet également de trouver des lacunes ou des contradictions dans les exigences. Si les conditions sont nombreuses, l'exercice de toutes les règles de décision peut prendre beaucoup de temps, car le nombre de règles croît de manière exponentielle avec le nombre de conditions. Dans ce cas, pour réduire le nombre de règles à appliquer, on peut utiliser une table de décision réduite ou une approche basée sur les risques.
2.4. Test de transition d'état
Un diagramme de transition d'états modélise le comportement d'un système en montrant ses états possibles et les transitions d'états valides. Une transition est initiée par un événement, qui peut être qualifié par une condition de garde. Les transitions sont supposées être instantanées et peuvent parfois entraîner une action du logiciel. La syntaxe courante utilisée pour désigner les transitions est la suivante : "événement [condition de garde] / action". Les conditions de garde et les actions peuvent être omises si elles n'existent pas ou si elles ne sont pas pertinentes pour le testeur.
Une table d'états est un modèle équivalent à un diagramme de transition d'états. Ses lignes représentent les états et ses colonnes les événements (ainsi que les conditions de garde si elles existent). Les entrées de la table (cellules) représentent les transitions et contiennent l'état cible, ainsi que les conditions de garde et les actions résultantes, si elles sont définies. Contrairement au diagramme de transition d'états, la table d'états montre explicitement les transitions non valides, qui sont représentées par des cellules vides.
Un cas de test basé sur un diagramme de transition d'état ou une table d'états est généralement représenté comme une séquence d'événements, qui résulte en une séquence de changements d'état (et d'actions, si nécessaire). Un cas de test peut, et c'est généralement le cas, couvrir plusieurs transitions d'états.
Il existe de nombreux critères de couverture pour les tests de transition d'état. Ce syllabus discute de trois d'entre eux.
Dans la couverture de tous les états, les éléments de couverture sont les états. Pour obtenir une couverture de 100 %, les cas de test doivent garantir que tous les états sont visités. La couverture est mesurée comme le nombre d'états visités divisé par le nombre total d'états, et est exprimée en pourcentage.
Dans la couverture des transitions valides (également appelée couverture 0-switch), les éléments de couverture sont les transitions valides uniques. Pour obtenir une couverture de 100% des transitions valides, les cas de test doivent exercer toutes les transitions valides. La couverture est mesurée comme le nombre de transitions valides exercées divisé par le nombre total de transitions valides, et est exprimée en pourcentage.
Dans la couverture de toutes les transitions, les éléments de couverture sont toutes les transitions figurant dans une table d'état. Pour obtenir une couverture de 100 % de toutes les transitions, les cas de test doivent exercer toutes les transitions valides et tenter d'exécuter des transitions non valides. Le fait de ne tester qu'une seule transition non valide dans un seul cas de test permet d'éviter le masquage des défauts, c'est-à-dire une situation dans laquelle un défaut empêche la détection d'un autre. La couverture est mesurée comme le nombre de transitions valides et non valides exercées ou tentées d'être exercées par les cas de test exécutés, divisé par le nombre total de transitions valides et non valides, et est exprimée en pourcentage.
La couverture de tous les états est plus faible que la couverture des transitions valides, car elle peut généralement être obtenue sans exercer toutes les transitions. La couverture des transitions valides est le critère de couverture le plus largement utilisé. L'obtention d'une couverture complète des transitions valides garantit une couverture complète de tous les états. L'obtention d'une couverture complète de toutes les transitions garantit à la fois une couverture complète de tous les états et une couverture complète des transitions valides et devrait constituer une exigence minimale pour les logiciels critiques en termes de mission et de sécurité.
3. Techniques de test boîte blanche
En raison de leur popularité et de leur simplicité, cette section se concentre sur deux techniques de test boîte blanche liées au code :
• Le test des instructions.
• Le test des branches.
Il existe des techniques plus rigoureuses qui sont utilisées dans certains environnements critiques en termes de sécurité, de mission ou d'intégrité élevée afin d'obtenir une couverture plus complète du code. Il existe également des techniques de tests boîte blanche utilisées à des niveaux de test plus élevés (par exemple, tests API), ou utilisant une couverture non liée au code (par exemple, la couverture des neurones dans les tests de réseaux neuronaux). Ces techniques ne sont pas abordées dans ce syllabus.
3.1. Test des instructions et couverture des instructions
Dans le test des instructions, les éléments de couverture sont des instructions exécutables. L'objectif est de concevoir des cas de test qui exercent les instructions du code jusqu'à ce qu'un niveau de couverture acceptable soit atteint. La couverture est mesurée comme le nombre d'instructions exercées par les cas de test divisé par le nombre total d'instructions exécutables dans le code, et est exprimée en pourcentage.
Lorsque la couverture des instructions est de 100 %, cela signifie que toutes les instructions exécutables du code ont été testées au moins une fois. En particulier, cela signifie que chaque instruction comportant un défaut sera exécutée, ce qui peut provoquer une défaillance démontrant la présence du défaut. Cependant, exécuter une instruction avec un cas de test ne permet pas de détecter les défauts dans tous les cas. Par exemple, il se peut qu'il ne détecte pas les défauts qui dépendent des données (par exemple, une division par zéro qui n'échoue que lorsque le dénominateur est fixé à zéro). De même, une couverture des instructions à 100 % ne garantit pas que toute la logique de décision a été testée, car, par exemple, toutes les branches (voir le chapitre 4.3.2) du code n'ont pas été testées.
3.2. Test des branches et couverture des branches
Une branche est un transfert de contrôle entre deux nœuds dans le graphe de flux de contrôle, qui montre les séquences possibles dans lesquelles les instructions du code source sont exécutées dans l'objet de test. Chaque transfert de contrôle peut être inconditionnel (c'est-à-dire un code en ligne droite) ou conditionnel (c'est-à-dire un résultat de décision).
Dans les tests de branches, les éléments de couverture sont les branches et l'objectif est de concevoir des tests pour exercer les branches du code jusqu'à ce qu'un niveau de couverture acceptable soit atteint. La couverture est mesurée comme le nombre de branches exercées par les cas de test divisé par le nombre total de branches, et est exprimée en pourcentage.
Lorsque la couverture des branches est de 100 %, toutes les branches du code, qu'elles soient inconditionnelles ou conditionnelles, sont exercées par les cas de test. Les branches conditionnelles correspondent généralement à un résultat vrai ou faux d'une décision "if...then", à un résultat d'une instruction "switch/case", ou à une décision de quitter ou de continuer dans une boucle. Cependant, l'exercice d'une branche avec un cas de test ne permet pas de détecter les défauts dans tous les cas. Par exemple, il peut ne pas détecter les défauts nécessitant l'exécution d'un chemin spécifique dans le code.
La couverture des branches englobe la couverture des instructions. Cela signifie que tout ensemble de cas de test atteignant une couverture des branches de 100 % atteint également une couverture des instructions de 100 % (mais pas l'inverse).
3.3. La valeur des tests boîte blanche
Une force fondamentale que toutes les techniques boîte blanche partagent est que l'implémentation entière du logiciel est prise en compte pendant le test, ce qui facilite la détection des défauts même lorsque la spécification du logiciel est vague, obsolète ou incomplète. Une faiblesse associée est que si le logiciel n'implémente pas une ou plusieurs exigences, les tests boîte blanche peuvent ne pas détecter les défauts résultant de ces omissions (Watson 1996).
Les techniques de test boîte blanche peuvent être utilisées dans le cadre de tests statiques (par exemple, lors d'exécution à blanc du code). Elles sont bien adaptées pour revoir le code qui n'est pas encore prêt à être exécuté (Hetzel 1988), ainsi que le pseudocode et d'autres logiques de haut niveau ou des logiques descendantes qui peuvent être modélisées à l'aide d'un graphe de flux de contrôle.
Le fait de n'effectuer que des tests boîte noire ne permet pas de mesurer la couverture réelle du code. Les mesures de couverture boîte blanche fournissent une mesure objective de la couverture et fournissent les informations nécessaires pour permettre la génération de tests supplémentaires afin d'augmenter cette couverture et, par conséquent, d'accroître la confiance dans le code.
4. Techniques de tests basés sur l'expérience
Les techniques de test basées sur l'expérience, couramment utilisées et abordées dans les sections suivantes, sont:
• Estimation d'erreurs.
• Test exploratoire.
• Test basé sur des checklists.
4.1. Estimation d'erreurs
L'estimation d'erreurs est une technique utilisée pour anticiper l'apparition d'erreurs, de défauts et de défaillances, sur la base des connaissances du testeur, notamment :
• La façon dont l'application a fonctionné dans le passé.
• Les types d'erreurs que les développeurs ont tendance à commettre et les types de défauts qui en résultent.
• Les types de défaillances qui se sont produites dans d'autres applications similaires.
En général, les erreurs, les défauts et les défaillances peuvent être liés à : l'entrée (par exemple, entrée correcte non acceptée, paramètres erronés ou manquants), la sortie (par exemple, format incorrect, résultat erroné), la logique (par exemple, cas manquants, opérateur incorrect), le calcul (par exemple, opérande incorrect, calcul erroné), les interfaces (par exemple, non-concordance des paramètres, types incompatibles) ou encore les données (par exemple, initialisation incorrecte, type incorrect).
Les attaques de fautes constituent une approche méthodique de la mise en œuvre de l'estimation d'erreurs. Cette technique exige du testeur qu'il crée ou acquière une liste d'erreurs, de défauts et de défaillances possibles, et qu'il conçoive des tests qui identifieront les défauts associés aux erreurs, exposeront les défauts ou provoqueront les défaillances. Ces listes peuvent être construites sur la base de l'expérience, des données relatives aux défauts et aux défaillances, ou des connaissances communes sur les raisons des défaillances des logiciels.
Voir (Whittaker 2002, Whittaker 2003, Andrews 2006) pour plus d'informations sur l'estimation d'erreurs et les attaques de faute.
4.2. Test exploratoire
Dans le test exploratoire, les tests sont simultanément conçus, exécutés et évalués pendant que le testeur découvre l'objet de test. Les tests sont utilisés pour en apprendre davantage sur l'objet de test, pour l'explorer plus en profondeur avec des tests ciblés et pour créer des tests pour les domaines non testés.
Le test exploratoire est parfois structuré au moyen de test basé sur des sessions. Dans une approche basée sur des sessions, les tests exploratoires sont menés dans un laps de temps défini. Le testeur utilise une charte de test contenant des objectifs de test pour guider le test. La session de test est généralement suivie d'un débriefing qui implique une discussion entre le testeur et les parties prenantes intéressées par les résultats de la session de test. Dans cette approche, les objectifs de test peuvent être traités comme des conditions de test de haut niveau. Les éléments de couverture sont identifiés et exercés pendant la session de test. Le testeur peut utiliser des formulaires de session de test pour documenter les étapes suivies et les découvertes faites.
Les tests exploratoires sont utiles lorsque les spécifications sont peu nombreuses ou inadéquates, ou lorsque les tests sont soumis à une forte pression du temps. Le test exploratoire est également utile pour compléter d'autres techniques de test plus formelles. Les tests exploratoires seront plus efficaces si le testeur est expérimenté, s'il a des connaissances dans le domaine et s'il possède un niveau élevé de compétences essentielles, telles que l'esprit d'analyse, la curiosité et la créativité.
Les tests exploratoires peuvent intégrer l'utilisation d'autres techniques de test (par exemple, les partitions d'équivalence). De plus amples informations sur les tests exploratoires peuvent être trouvées dans (Kaner 1999, Whittaker 2009, Hendrickson 2013).
4.3. Test basé sur des checklists
Dans le test basé sur des checklists, un testeur conçoit, implémente et exécute des tests pour couvrir les conditions de test à partir d'une checklist. Les checklists peuvent être construites sur la base de l'expérience, de la connaissance de ce qui est important pour l'utilisateur, ou de la compréhension du pourquoi et du comment des échecs logiciels. Les checklists ne doivent pas contenir d'éléments qui peuvent être vérifiés automatiquement, d'éléments correspondant davantage à des critères d'entrée ou de sortie, ou d'éléments trop généraux (Brykczynski 1999).
Les éléments de la checklist sont souvent formulés sous la forme d'une question. Il doit être possible de vérifier chaque élément séparément et directement. Ces éléments peuvent se référer à des exigences, à des propriétés d'interface graphique, à des caractéristiques-qualité ou à d'autres formes de conditions de test. Des checklists peuvent être créées pour soutenir différents types de tests, y compris les tests fonctionnels et non fonctionnels (par exemple, 10 heuristiques pour les tests d'utilisabilité (Nielsen 1994)).
Certaines entrées de la checklist peuvent devenir progressivement moins efficaces au fil du temps parce que les développeurs apprendront à éviter de commettre les mêmes erreurs. Il peut également s'avérer nécessaire d'ajouter de nouvelles entrées pour tenir compte des défauts de sévérité élevée nouvellement trouvés. Par conséquent, les checklists doivent être régulièrement mises à jour sur la base de l'analyse des défauts. Il convient toutefois de veiller à ce que la checklist ne devienne pas trop longue (Gawande 2009).
En l'absence de cas de test détaillés, le test basés sur des checklists peut fournir des lignes directrices et un certain degré de cohérence pour les tests. Si les checklists sont de haut niveau, une certaine variation dans les tests réels est probable, résultant d'une couverture potentiellement plus grande mais d'une répétabilité moindre.
5. Approches de test basées sur la collaboration
Chacune des techniques susmentionnées (voir les sections 2, 3, 4) a un objectif particulier en ce qui concerne la détection des défauts. Les approches basées sur la collaboration, en revanche, se concentrent également sur l'évitement des défauts par la collaboration et la communication.
5.1. Rédaction collaborative de User Stories
Une User Story représente une caractéristique qui sera utile à l'utilisateur ou à l'acheteur d'un système ou d'un logiciel. Les User Stories présentent trois aspects essentiels (Jeffries 2000), appelés ensemble les "3 C" :
• Carte - le support décrivant une User Story (par exemple, une carte d'index, une entrée dans un tableau électronique).
• Conversation - explique comment le logiciel sera utilisé (peut être documentée ou verbale)
• Confirmation - les critères d'acceptation (voir section 4.5.2)
Le format le plus courant d'une User Story est le suivant : "En tant que [rôle], je veux que [objectif à atteindre], afin de pouvoir [valeur métier résultante pour le rôle]", suivi des critères d'acceptation.
La rédaction collaborative de la User Story peut faire appel à des techniques telles que le brainstorming et la cartographie mentale. La collaboration permet à l'équipe d'obtenir une vision commune de ce qui devrait être livré, en prenant en compte trois perspectives : celle du métier, celle du développement et celle du test.
Les bonnes User Story doivent être : Indépendantes, Négociables, apportant de la Valeur, Estimables, Petites et Testables (INVEST). Si une partie prenante ne sait pas comment tester une User Story, cela peut indiquer que la User Story n'est pas assez claire, qu'elle ne reflète pas quelque chose de valable pour elle, ou que la partie prenante a simplement besoin d'aide pour le test (Wake 2003).
5.2. Critères d'acceptation
Les critères d'acceptation d'une User Story sont les conditions que doit remplir une implémentation de cette User Story pour être acceptée par les parties prenantes. De ce point de vue, les critères d'acceptation peuvent être considérés comme les conditions de test qui devraient être vérifiées par les tests. Les critères d'acceptation sont généralement le résultat de la conversation (voir section 1).
Les critères d'acceptation sont utilisés pour :
· Définir le périmètre de la User Story.
· Obtenir un consensus parmi les parties prenantes.
· Décrire les scénarios positifs et négatifs.
· Servir de base aux tests d'acceptation des utilisateurs (voir section 5.3).
· Permettre une planification et une estimation précises.
Il existe plusieurs façons de rédiger des critères d'acceptation pour une User Story. Les deux formats les plus courants sont:
· Orienté-scénario (par exemple, le format Given/When/Then (Etant donné/Lorsque/Alors) utilisé par le BDD)
· Orienté vers les règles (par exemple, liste de vérification à puces, ou tableau de correspondance entrée-sortie).
La plupart des critères d'acceptation peuvent être documentés dans l'un de ces deux formats. Cependant, l'équipe peut utiliser un autre format, personnalisé, tant que les critères d'acceptation sont bien définis et sans ambiguïté.
5.3. Développement piloté par les tests d'acceptation (ATDD)
L'ATDD est une approche pilotée par les tests. Les cas de test sont créés avant d'implémenter la User Story. Les cas de test sont créés par des membres de l'équipe ayant des perspectives différentes, par exemple des clients, des développeurs et des testeurs (Adzic 2009). Les cas de tests peuvent être exécutés manuellement ou de manière automatisée.
La première étape est un atelier de spécification au cours duquel la User Story et (s'ils n'ont pas encore été définis) ses critères d'acceptation sont analysés, discutés et rédigés par les membres de l'équipe. Les lacunes, les ambiguïtés ou les défauts de la User Story sont résolus au cours de ce processus. L'étape suivante consiste à créer les cas de test. Cela peut être fait par l'équipe dans son ensemble ou par le testeur individuellement. Les cas de test sont basés sur les critères d'acceptation et peuvent être considérés comme des exemples du fonctionnement du logiciel. Ils aideront l'équipe à mettre en œuvre correctement la User Story.
Comme les exemples et les tests sont les mêmes, ces termes sont souvent utilisés de manière interchangeable. Lors de la conception des tests, les techniques de test décrites dans les sections 2, 3 et 4 peuvent être appliquées.
En général, les premiers cas de test sont positifs, confirmant le comportement correct sans exceptions ou conditions d'erreur, et comprennent la séquence d'activités exécutées si tout se passe comme prévu. Une fois les cas de test positifs réalisés, l'équipe doit effectuer des tests négatifs. Enfin, l'équipe doit également couvrir les caractéristiques non fonctionnelles de la qualité (par exemple, efficacité de la performance, utilisabilité). Les cas de test doivent être exprimés d'une manière compréhensible pour les parties prenantes. En règle générale, les cas de test contiennent des phrases en langage naturel comprenant les préconditions nécessaires (le cas échéant), les données d'entrée et les postconditions.
Les cas de test doivent couvrir toutes les caractéristiques de la User Story et ne doivent pas aller au-delà. Cependant, les critères d'acceptation peuvent détailler certains des problèmes décrits dans la User Story. En outre, aucun cas de test ne doit décrire les mêmes caractéristiques de la User Story.
Lorsqu'ils sont définis dans un format pris en charge par un framework d'automatisation des tests, les développeurs peuvent automatiser les cas de test en écrivant le code correspondant au fur et à mesure qu'ils implémentent la caractéristique décrite dans une User Story. Les tests d'acceptation deviennent alors des exigences exécutables.
Atelier 1 – Génération de tests
Application testée : Application web du type « Le bon coin » – http://www.vtaas-benchmark.com:9980/
(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.
Exemple de solution
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.
Lis les user stories suivantes et analyse les critères d’acceptation. Vérifie s’il y a des lacunes ou des incohérences. Pour chaque user story, propose une liste de questions.
Pour chaque user story, réponds en deux sections : une pour les lacunes et incohérences potentielles et une pour les questions.
###
User stories pour la recherche de petites annonces :
<copier/coller ici la liste des user stories avec critères d’acceptation>
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.
Exemple de solution
Maintenant, je veux que tu m’aides à écrire des cas de test.
Tout d’abord, analyse à nouveau les critères d’acceptation de chaque user story. Identifie les aspects qui doivent être testés. Ensuite, génère des cas de test. Assure-toi que tous les critères d’acceptation sont couverts.
Chaque cas de test doit avoir un identifiant qui combine l’identifiant de la user story et un numéro consécutif (US1-TC1, US1-TC2, …) et un nom, suivi des étapes de test et des résultats attendus.
Etape 3 – Vérifier la couverture des critères d’acceptation par les cas de tests générés
- Restez dans la même conversation
- É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.
- 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.
- Vérifiez l’exemple de solution. Quelle version est la plus facile à vérifier ?
Exemple de solution
Vérifies si tous les critères d’acceptation sont couverts par au moins un cas.
Réponds à l’aide d’un tableau :
| User Story | Critère d’acceptation | ID et nom du cas de test |
Etape 4 – Génération de scénarios de test de bout-en-bout en utilisant un méta-prompt
- Commencez une nouvelle conversation avec un LLM puissant comme GPT-4o
- 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. - Retournez dans la conversation précédente.
- Essayez le prompt généré.
Exemple de solution
## Consignes pour la création des tests de bout-en-bout (créé par GPT-4o le 31 octobre 2024)
1. **Objectif :**
– Combiner tous les petits cas de test isolés en séquences logiques plus longues.
– Assurer une couverture complète des fonctionnalités en intégrant chaque cas de test isolé dans au moins un test de bout-en-bout.
2. **Structure du Tableau :**
– Chaque ligne représente une étape de la séquence.
– Inclure les résultats attendus après chaque étape.
3. **Informations à inclure :**
– **Étape numéro :** Le numéro de la séquence d’étapes.
– **Action :** L’action spécifique à effectuer.
– **Entrée :** Les entrées nécessaires à l’étape.
– **Résultat attendu :** La sortie ou l’état attendu après l’exécution de l’action.
4. **Exemple de Tableau :**
| Étape numéro | Action | Entrée | Résultat attendu |
|————–|——————————–|——————-|—————————————-|
| 1 | Initialiser le système | – | Le système est prêt à l’emploi |
| 2 | Exécuter le cas de test A | Données de test A | Sortie A correcte |
| 3 | Exécuter le cas de test B | Données de test B | Sortie B correcte |
| … | … | … | … |
5. **Considérations :**
– Vérifiez l’intégrité de chaque séquence afin d’assurer une transition fluide entre les étapes.
– Réfléchissez aux dépendances fonctionnelles entre les petits cas de test pour les regrouper logiquement.
– Utilisez des titres clairs et précis pour chaque colonne du tableau afin de garantir la clarté et la lisibilité.
6. **Récapitulatif final :**
– Passez en revue la liste des petits cas de test isolés pour vous assurer qu’ils sont tous intégrés de manière appropriée dans les tests de bout-en-bout.Pour comparer, voici un prompt obtenu en présentant la tâche en anglais :
##Workflow Test Creation Prompt (obtained with GPT-4o on Oct. 25th, 2024)
### Objective:
Combine small, isolated test cases into comprehensive workflow tests. Each test should be presented in a tabular format, detailing the sequence of steps and the expected results.
### Instructions:
1. **List of Isolated Test Cases**:
– Gather all individual test cases.
– Ensure each test case is clearly defined with a unique reference number or id.
2. **Develop Workflow Tests**:
– Combine related test cases into sequences that represent realistic workflows.
– Pay attention to the logic and dependencies between steps.
3. **Tabular Format**:
– Use the table format below for each workflow test.
### Table Template for Workflow Test
| Step Number | Action/Step Description | Expected Result |
|————-|———————————–|——————————————|
| 1 | (Describe the first test case) | (Expected outcome of the first test) |
| 2 | (Describe the second test case) | (Expected outcome of the second test) |
| … | … | … |
| N | (Final step description) | (Final expected result) |
### Additional Guidelines:
– **Step Description**: Include the input, conditions, and the specific action being tested.
– **Expected Result**: Clearly describe the anticipated outcome if the step passes successfully.
– **Integration**: Ensure that every small test case is utilized in one of the workflow tests.
– **Validation**: After constructing the table, verify each step for coherence and coverage.
### Example:
Here’s an example of how one such workflow test could be structured:
| Step Number | Action/Step Description | Expected Result |
|————-|—————————————–|——————————————|
| 1 | Login with valid credentials | Access to the main dashboard |
| 2 | Navigate to the settings page | Display the settings page with options |
| 3 | Update user profile name | The user profile name updates successfully|
### Review:
– Double-check that each workflow logically follows from step to step.
– Confirm no isolated test case is omitted.
⚠ 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)
- Rester dans la même conversation
- É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.
- Recommencez, si le résultat ne vous satisfait pas.
Exemple de solution
Ré-écrit ces scénarios de test de bout-en-bout en utilisant le format Gherkin (Etant donné / Quand / Alors).
Suite optionnelle 2 – Formater en csv pour faciliter l’importation dans votre outil de gestion des tests avec la technique “one-shot prompting”
- Rester dans la même conversation
- Écrivez un prompt pour formater les tests de bout-en-bout en csv
- Utiliser la technique du one-shot prompting
- Recommencez si le résultat ne vous satisfait pas
Exemple de solution
Ecris ces scénarios de test dans un fichier au format CSV en utilisant l’encodage ‘’UTF-8 avec BOM”, comme dans l’exemple suivant :
Exemple :
# ; Actions; Résultats attendus;
Suite optionnelle 3 – Visualiser les cas de test sous forme d’un diagramme en produisant un code interprétable par l’outil Mermaid.js
- Restez dans la même conversation
- É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
- Testez le code généré avec l’outil Mermaid ( https://mermaid.live/ )
- Recommencez si le résultat ne vous satisfait pas en donnant des consignes plus précises
- Conseil : Dites à l’IA de factoriser les étapes du test ( » Factorise les étapes du test »).
- Si cela ne fonctionne toujours pas après cela, expliquez-lui la règle de formatage (voir le message d’erreur dans Mermaid.live).
Exemple de solution
A partir des scénarios de test de bout-en-bout générés, tu dois écrire le code Mermaid.js pour représenter sous forme de flowchart ces cas de test. Il faut un seul graphe représentant les scénarios de test et factoriser les étapes de test. Dans la syntaxe Mermaid.js, les paramètres sont en quote simple et il ne faut pas mettre de parenthèses dans les nœuds du graphe.
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
- Téléchargez le croquis de l’interface graphique à droite et enregistrez-le sur votre ordinateur.
- Ouvrez une nouvelle conversation avec GPT-4o
- Dans la conversation, chargez l’image sauvegardée en utilisant l’icône image à côté de l’invite de prompt
- 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.
- 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.
Exemple de solution
Prompt #1:
Comme indiqué ci-dessusPrompt #2:
Sépares le téléchargement d’image par clic du téléchargement d’image par glisser-déposer.
Prends également en compte que la liste déroulante « Select a city » est inactive.
Vérifies à nouveau et ajoutes les critères d’acceptation manquants, si nécessaire.
Etape 2 – Crée des cas de test pour la user story donnée
- Restez dans la même conversation.
- 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.
- Demandez au LLM de vérifier le résultat et de fournir une matrice de traçabilité.
Exemple de solution
Prompt 1:
Maintenant, créé des cas de test pour chaque critère d’acceptation de la user story US-21.
Chaque scénario de test doit être nommé et inclure les actions de test et les résultats attendus.Prompt #2:
Vérifie que chaque critère d’acceptation est couvert par au moins un cas de test.
Crée la matrice de traçabilité entre les cas de test et les critères d’acceptation.
Etape 3 – Déterminer les valeurs d’une liste déroulante à partir d’une capture d’écran
- Commencez une nouvelle conversation avec GPT-4o, Claude 3.5 Sonnet ou Gemini 1.5 Pro.
- Téléchargez la capture d’écran à droite et enregistrez-la sur votre ordinateur.
- Dans la conversation, chargez la capture d’écran sauvegardée de la même manière que précédemment.
- Rédigez un prompt qui demande à l’IA d’analyser l’image et d’énumérer les valeurs possibles dans la liste déroulante.
- Vérifiez la réponse. Est-ce que ça marche ?
Exemple de solution
Analyse la capture d’écran fournie dans cette invite.
Fournis une liste complète des valeurs possibles pour la catégorie.
Réponds par une liste numérotée.
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.
- 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.
- 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 ?
- 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 ».
Cas de test pour Classifieds
Etape 2 – Identifier les étapes similaires mais rédigées différemment
- Commencez une nouvelle conversation avec Gemini 1.5 Pro.
- 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>Cas de test pour Classifieds en format CSV
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
Etape 3 – Uniformiser et paramétrer les étapes de test
- Restez dans la même conversation
- É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.
- Essayez votre prompt. Recommencez avec d’autres prompts, si le résultat ne vous satisfait pas.
- 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.
Exemple de solution
Prompt #1:
Concentrons-nous sur « Accès à la page d’accueil et affichage initial (à remplacer par le nom que le LLM a donné au groupe dans sa réponse précédente) ».
Propose une rédaction de l’étape de test qui permette de standardiser les cas de test. Le cas échéant, indique un paramètre pour l’action de test.
Exemple :
“Ouvrez la page web {URL} et redimensionnez la fenêtre à {taille}”
| Paramètre | Valeurs possibles |
| URL | http://www.vtaas-benchmark.com:9980/ |
| taille | au choix, plein écran, demi-écran |Prompt #2:
Pour chaque groupe d’étapes de test similaires que tu as identifié précédemment, propose une formulation de l’étape de test qui permette de standardiser les cas de test. Le cas échéant, indique un paramètre pour l’action de test.
Etape 4 – Réécrire les cas de test
- Restez dans la même conversation.
- É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.
- Essayez votre prompt et améliorez-le, si nécessaire. Ne continuez pas tant que les 3 cas de test ne semblent pas raisonnables.
- Écrivez un prompt demandant au LLM de réécrire la totalité des cas de test.
Exemple de solution
Prompt 1:
Maintenant, réécris TC1, TC7 et TC12 en utilisant la nouvelle formulation.
Prompt 2:
Parfait! Maintenant, réécris tous les cas de test (TC1 à TC18) en utilisant les nouvelles formulations.
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
- Choisissez le modèle Claude 3.5 Sonnet et commencez une nouvelle conversation.
- 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
Etape 2 – Générer un code de test
- Restez dans la même conversation
- 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
- Rester dans la même conversation
- É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.
- Vérifiez le résultat. Est-il utile ?
Exemple de solution
Vérifie et explique ce code de test. Vérifie s’il est conforme à la syntaxe du Robot Framework.
Etape 4 – Génération de scripts couvrant d’autres cas de test
- Restez dans la même conversation
- É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.
- Recommencez si le résultat ne vous satisfait pas
Exemple de solution
Très bien. Maintenant, crée-moi plusieurs scripts qui testent les situations suivantes :
– division par zéro
– subtraction d’un opérant négatif
– multiplication par zéro
– addition d’un chiffre négatif
– addition de zéro
– construction de zéro
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
- É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.
Exemple de solution
Prompt ssystème – version simple
Tu es un assistant de codage utile spécialisé en Python avec Robot Framework et Selenium Webdriver. Quand je te présente un code, vérifie-le et donne-moi une version correcte.
Prompt système – version plus élaborée
Tu es un assistant de codage utile spécialisé en Python avec Robot Framework et Selenium Webdriver. Quand je te présente un code, analyse-le et identifie les erreurs éventuelles. Vérifie si le code est conforme à la syntaxe du Robot Framework et si tous les mots-clés existent. Réponds avec une version correcte. Ne change RIEN si le script est correct. Explique ton raisonnement.
Etape 2 – Code bogué
- Testez le prompt système avec le script bogué ci-dessous
- 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
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.
- 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.
Exemple de solution
Le cas de test précédent contient des erreurs lors de l’exécution.
Le message d’erreur est le suivant: Location should have been ‘http://www.vtaas-benchmark.com:9980‘ but was ‘http://www.vtaas-benchmark.com:9980/‘.
Corrige le script.
Réponds avec la version complete du script.
Atelier 4 – Analyser des rapports d’anomalies
- Commencez par vous familiariser avec notre calculatrice en ligne : https://ott.uaestqb.ae/
- 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.
- 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 ».
- Faites-moi savoir quand vous êtes prêts.
A_negative_divided_by_B_larger_than_A.robot
*** 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
Partie 1 – Pas à pas (requêtage par étapes)
Etape 1 – Analyser un rapport de test
- Choisissez un LLM avec une taille de fenêtre de contexte de grande taille et commencez une nouvelle conversation.
- É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>
- 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>
Résultats d’exécution avec Robot Framework
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
Example de solution
Je suis ingénieur en automatisation des tests. Tu es mon assistant qui m’aide à analyser les résultats de l’exécution des tests. Le système testé est une calculatrice en ligne. La liste ci-dessous contient les résultats d’exécution dans le format suivant :
Robot . <nom du cas de test> . <nom du script>
<Résultat (Pass/Fail)>
<assertion>
…
Crée une liste numérotée des 13 cas de test qui ont échoué :
1. <nom>, <assertion>
###
Résultats:
<insérer ici les résultats de l’exécution du test avec Robot Framework>
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é.
- Restez dans la même conversation
- 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.
- Donnez un exemple à l’IA pour qu’elle comprenne mieux ce que vous voulez dire.
- 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
Example de solution
L’assertion compare le résultat observé au résultat attendu.
Voici un exemple.
assertion : -42–43 != 1
résultat observé : -42–43
résultat attendu : 1
Met à jour la liste numérotée et répond dans le format suivant :
* résultat observé
* résultat attendu
Etape 3 – Identifier des clusters de problèmes
- Restez dans la même conversation
- 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
Etape 4 – Identifier les anomalies connues, les mettre à jour et créer les rapports qui manquent
- Restez dans la même conversation
- É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
- Essayez votre prompt.
- 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
Exemple de solution
Maintenant, je vais te donner une liste d'anomalies connues. Pour chaque cause commune identifiée, cherche dans la liste des anomalies connues s'il existe déjà un rapport d'anomalie. Si oui, remet le status en "Ouvert" et actualise la liste des cas de tests. Si non, crée un nouveau rapport d'anomalie.
Procède pas-à-pas.
###
Liste des anomalies connues:
<copier / coller la liste des anomalies connues ici>
Etape 5 – Vérifier le résultat
- Restez dans la même conversation
- Écrivez un prompt pour vérifier le résultat et essayez-le
- Utiliser ensuite le prompt suivant pour améliorer la requête :
Exemple de solution
Crée une liste des 13 cas de test avec résultat FAIL :
* nom du cas de test, ID de l’anomalie
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.
- Choisissez un LLM avec une taille de fenêtre de contexte de grande taille et commencez une nouvelle conversation.
- Lisez attentivement le prompt suivant, puis donnez-le au LLM avec la liste des anomalies.
- Dans le prompt suivant, indiquez les résultats de l’exécution comme
input :
et les cas de test commeréférence :
- 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)>
Exemple de solution
- Prompt: comme indiqué ci-dessus
2. Prompt:
input : <insérer ici les résultats de l’exécution du test avec Robot Framework (partie 1 – 1ère étape)>
référence : <insérer ici les cas de test (partie 1 – 3ème étape)>
Atelier 5 – Hallucinations / Erreurs
Partie 1 – Hallucination du LLM – Types de test suivant ISTQB Fondation v4.0
Etape 1 – Observer des hallucinations
- Ouvrez une nouvelle conversation avec 3 LLM de votre choix
- Créez un prompt demandant les 4 types de test suivant le syllabus ISTQB de niveau fondation en version v4.0
- 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
- Restez dans le même chat avec les 3 LLM de votre choix.
- Demandez à l’IA à quel point elle est sûre de sa réponse. Demande aussi explicitement son « niveau de confiance ».
- 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.
- 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
- Ouvrez une nouvelle conversation avec un LLM de votre choix
- 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
- Ouvrez une nouvelle conversation avec le LLM de notre choix
- Créez des prompts pour obtenir le bon résultat
Exemple de solution
Choisissez un LLM aussi performant que possible !
Prompt #1: Obtenir une vue d’ensemble (plutôt pour nous pour faciliter la vérification du résultat)
Je dois classer par ordre de priorité l’ordre d’exécution des cas de test suivants, et tu est mon assistant utile.
Je vais te donner un tableau des cas de test, de leurs priorités et des dépendances entre les tests. (Sache que « 1 » est la priorité la plus élevée et « 3 » la priorité la plus faible).
Crée un graphe de dépendance pour les cas de test. Chaque nœud du graphe doit contenir l’ID du cas de test, son nom et sa priorité.
Répond au format Mermaid.js.
###
| Test case | Description | Priority | Dependency | |
| TC A01 | Create Training | 2 | |
| TC A02 | Create Trainer | 3 | |
| TC A03 | Create Student | 3 | |
| TC B01 | Create Training Instance | 2 | TC A01 |
| TC C01 | Link Trainer to Training Instance | 1 | TC B01 + TC A02 |
| TC C02 | Link Student to Training Unit | 2 | TC B01 + TC A03 |Prompt #2: Trier par priorité
Propose un ordre d’exécution. Commence par les cas de test de priorité 1. S’il existe des dépendances, assures-toi que les cas de test dont dépend le cas de test de priorité 1 sont également exécutés dans l’ordre de leur priorité.
Note qu’il n’est PAS possible d’exécuter un scénario de test avant ses dépendances. Par exemple, si TC C01 dépend de TC B01, TC B01 doit être exécuté en premier.
Procède pas à pas.Prompt #3: Vérification du résultat
Vérifie ta réponse. Assure-toi qu’aucun des tests n’est exécuté plus tôt que nécessaire. Vérifie également que les dépendances sont classées par ordre de priorité. Procède pas à pas.
Atelier 6 – Impact CO2 de l’IA générative
Méthode 1 – Par calcul de l’empreinte CO2 en fonction du temps passé
- Allez sur : https://mlco2.github.io/impact/?#compute
- Estimez l’émission CO2 des heures passées:
– Combien de temps avons-nous passé à écrire des requêtes?
– Combien de personnes sommes-nous? - On suppose pour ChatGPT :
– NVIDIA A100 (Source)
– MS Azure Cloud
– Location : West US 2 - Pour comparer, essayez les même valeurs, mais location differentes:
- “France South” et “West Europe”.
Exemple de solution
Sur les 2 jours, nous allons passer au moins 6 heures à faire des exercices. En supposant 5 participants, l’émission en CO2 correspond à :
- 2,25 kg CO2 equivalent => 9 km en voiture à combustion pour la région West US 2
- 0,75 kg => 3 km pour la région France Central et
- 4,27 kg => 17 km pour la région 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.
Exemple de solution
Le nombre de requêtes est difficile à estimer, mais l’ordre de grandeur doit-être entre 50 et 100 requêtes par jour et participant. Supposons une moyenne de 75 requêtes et 5 participants :
- 75*2*5 * 1g = 0,75 kg CO2 equivalent
- 75*2*5 * 4,32g = 3,24 kg
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 :
- Choisissez le modèle GPT-4o et commencez une nouvelle conversation.
- Ajoutez le document .pdf joint “WT-Wind Turbine Requirements_V1-170723-124914”
- 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 :
- Choisissez le modèle GPT-4o et commencez une nouvelle conversation.
- Ajoutez le document .pdf joint “Recommandations_ANSSI_IA_Gen-29 avril 2024”
- 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 ? »
- 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
Quizz
Ressources
Glossaire – Termes importants autour de l’IA Générative
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)
Application Programming Interface – mode d’accès à un LLM
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]
logiciel ou interface web conçu pour imiter la conversation humaine par le biais d’interactions textuelles ou vocales [Wikipédia EN]
technique de prompting qui force le modèle de penser par étapes (“Let’s think step-by-step”)
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]
IA générative mode mode interaction de type conversation (exemple: chatbot)
sous-domaine de l’intelligence artificielle qui utilise des réseaux neuronaux pour résoudre des tâches complexes [Wikipédia]
technique utilisée pour représenter des mots ou des entités sous forme de vecteurs dans un espace vectoriel continu
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é.
technique de rédaction d’un prompt dans laquelle le prompt contient 2 à n exemples pour guider l’IA dans sa réponse
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
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]
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
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]
LLM de base entraîné pour suivre des instructions; renforcé par des retours sur les réponses pour favoriser les bonnes réponses
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
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
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.
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
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
technique de rédaction d’un prompt dans laquelle le prompt contient un exemple pour guider l’IA dans sa réponse
requête textuelle
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]
instruction prédéfinie utilisée par un système d’IA pour lancer ou guider ses opérations
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
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
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
paramètre qui contrôle le caractère aléatoire ou créatif du résultat généré
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
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
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 !