Suites de tests et scénarios de tests

Vous pouvez créer un scénario de test pour différents cas d'utilisation. Vous créez un de ces scénarios de test à partir de JSON ou en enregistrant des conversations dans le testeur de conversation. Ces scénarios de test font partie des métadonnées de la compétence afin qu'ils persistent entre les versions.

Pour cette raison, vous pouvez exécuter ces scénarios de test pour vous assurer que les extensions apportées à la compétence n'ont pas brisé les fonctionnalités de base. Les scénarios de test ne se limitent pas à la préservation des fonctions de base. Vous les utilisez pour tester de nouveaux scénarios. Au fur et à mesure que votre compétence évolue, vous pouvez retirer les scénarios de test qui échouent continuellement en raison des modifications apportées au moyen d'extensions.

Tous les scénarios de test appartiennent à une suite de tests, des conteneurs qui vous permettent de partitionner vos tests. Nous fournissons une suite de tests appelée Default Test Suite, mais vous pouvez également créer la vôtre. La page Groupes tests répertorie tous les groupes de tests et les scénarios de test qui leur appartiennent. Les séries de tests listées dans cette page peuvent être celles que vous avez créées ou avoir été héritées d'une compétence que vous avez étendue ou clonée. Vous pouvez utiliser cette page pour créer et gérer des séries de tests et des scénarios de test et les compiler dans des exécutions de test.
Description du test-suites.png :
Description de l'illustration test-suites.png

Ajouter des scénarios de test

Que vous définissiez une compétence à partir de zéro ou que vous étendiez une compétence existante, vous pouvez créer un scénario test pour chaque cas d'utilisation. Par exemple, vous pouvez créer un scénario de test pour chaque type de données utiles. Vous pouvez créer une suite complète de scénarios de test pour une compétence simplement en enregistrant des conversations ou en créant des fichiers JSON qui définissent des objets de message.

Créer un scénario de test à partir d'une conversation

L'enregistrement de conversations est plus rapide et génère moins d'erreurs que la création d'un fichier JSON. Pour créer un scénario de test à partir d'une conversation :
  1. Ouvrez la compétence ou l'assistant numérique pour lequel vous voulez créer le test.
  2. Dans la barre d'outils située en haut de la page, cliquez sur Prévisualiser.
    Ceci est une image de l'icône Aperçu dans la marge supérieure.

  3. Cliquez sur Bot Tester.
  4. Sélectionnez le canal.
    Note

    Les scénarios de test sont propres au canal : c'est la conversation de test, telle qu'elle est traitée par le canal sélectionné, qui est enregistrée pour un scénario de test. Par exemple, les scénarios de test enregistrés à l'aide de l'un des canaux texte du testeur de compétence ne peuvent pas être utilisés pour tester la même conversation sur le canal Web Oracle.
  5. Entrez les énoncés spécifiques au comportement ou à la sortie à tester.
  6. Cliquez sur Save as Test (Enregistrer en tant que test).
    Image du bouton Enregistrer en tant que test

  7. Complétez la boîte de dialogue Save Conversation as Test Case (Enregistrer la conversation en tant que test) :
    • Si nécessaire, excluez le scénario de test des exécutions de test en désactivant Activé.
    • Si vous exécutez un scénario de test pour des conversations ou des messages ayant des actions de republication, vous pouvez activer Ignorer les variables de republication pour permettre au scénario de réussir en ignorant les différences entre le message attendu et le message réel au niveau de la variable de republication.
    • Entrez un nom et un nom d'affichage décrivant le test.
    • Comme étape facultative, ajoutez des détails dans le champ Description qui décrivent comment le scénario de test valide le comportement attendu pour un scénario ou un cas d'utilisation.
    • Si nécessaire, sélectionnez une suite de tests autre que la suite de tests par défaut dans la liste Test Suite (Suite de tests).
    • Pour tester les différentes valeurs de paramètre que les utilisateurs peuvent entrer dans leurs demandes ou réponses, ajoutez des tableaux à l'objet dans le champ Paramètres d'entrée pour chaque paramètre d'entrée et remplacez les paramètres fictifs correspondants par l'entrée utilisateur que vous testez dans la zone de texte Conversation. Par exemple, entrez un tableau {"AGE":["24","25","26"]} dans le champ Paramètres d'entrée et ${"AGE"} (paramètre fictif) dans la zone de texte Conversation.
    • Si les réponses de la compétence ou de l'assistant numérique incluent des informations dynamiques telles que des horodatages qui entraîneront l'échec continu des scénarios de test, remplacez la définition de variable qui alimente ces valeurs par un paramètre fictif formaté comme ${MY_VARIBALE_NAME}.
  8. Cliquez sur Add to Suite (Ajouter à la suite).

Ajouter des paramètres d'entrée pour les messages d'utilisateur

Pendant que vous ajoutez des paramètres fictifs de variable pour vous assurer que les scénarios de test réussissent lorsque les messages de compétence ont des valeurs en constante modification, vous ajoutez des paramètres d'entrée pour tester une variété de valeurs dans les messages d'utilisateur. Les paramètres d'entrée simplifient les tests car ils vous permettent d'exécuter plusieurs variantes d'un seul scénario de test. Sans eux, vous devrez créer des scénarios de test en double pour chaque valeur de paramètre. Toutefois, en raison de la flexibilité offerte par les paramètres d'entrée, vous pouvez générer plusieurs résultats de test en ajoutant simplement un tableau pour les valeurs des paramètres d'entrée dans votre définition de scénario de test. Lorsque vous exécutez le scénario de test, des résultats de test distincts sont générés pour chaque élément de votre définition de tableau de paramètres d'entrée. Un tableau de trois paires clé-valeur de paramètre d'entrée entraîne une exécution de test avec trois résultats de test, par exemple. La numérotation de ces résultats est basée sur l'index de l'élément de tableau correspondant.
Description d'entrée-parameters-test-run-results.png :
Description de l'illustration input-parameters-test-run-results.png

Pour ajouter des paramètres d'entrée à votre scénario de test, vous devez remplacer la valeur text dans les données utiles du message de l'utilisateur par un paramètre fictif et définir un tableau correspondant de valeurs de paramètre :
  1. Dans la vue Test de robot, cliquez sur Enregistrer en tant que test.
  2. Dans la zone de texte Conversation, remplacez la valeur du champ text dans un message utilisateur ({"source": "user", ...}) par une expression Apache FreeMarker qui nomme le paramètre d'entrée. Par exemple, "${AGE}" dans l'extrait de code suivant :
       {
            "source": "user",
            "messagePayload": {
                "type": "text",
                "text": "${AGE}",
                "channelExtensions": {
                    "test": {
                        "timezoneOffset": 25200000
                    }
                }
            }
        },
  3. Cliquez sur Image du symbole de flèche qui développe le champ. pour développer le champ Paramètres d'entrée.
    Icône de flèche pour développer le champ.

  4. Dans l'objet de champ Paramètres d'entrée ({}), ajoutez des paires clé-valeur pour chaque paramètre. Les valeurs doivent être des tableaux de valeurs de chaîne. Par exemple :
    {"AGE":["24","25","26"], "CRUST": ["Thick","Thin"]}


    Voici quelques points à noter lors de la définition des paramètres d'entrée :
    • Utiliser des tableaux seulement - Les paramètres d'entrée doivent être définis en tant que tableaux et non en tant que chaînes. {"NAME": "Mark"} entraîne un résultat de test ayant échoué, par exemple.
    • Utilisez des valeurs de chaîne dans votre tableau - Tous les éléments du tableau doivent être des chaînes. Si vous entrez un élément en tant que valeur entière à la place ({"AGE": ["25", 26]}, par exemple), il sera converti en chaîne. Aucun résultat de test n'est généré pour les valeurs nulles. { "AGE": [ "24", "25", null ] } donne deux résultats de test, pas trois.
    • Utilisez une casse cohérente - La casse de la clé et du paramètre fictif dans l'expression FreeMarker doit correspondre. Le casse non concordant (Age et AGE, par exemple) entraînera l'échec du scénario de test.
  5. Cliquez sur Add to Suite (Ajouter à la suite).

Ajouter des paramètres fictifs de variable

Les variables avec des valeurs en constante évolution dans les réponses de compétence ou d'assistant numérique entraîneront l'échec des scénarios de test lorsque l'exécution du test compare la valeur réelle à la valeur attendue. Vous pouvez exclure les informations dynamiques de la comparaison en ajoutant un paramètre fictif au format ${MY_VARIBALE_NAME} dans la réponse de la compétence. Par exemple, une valeur temporelle, telle que celle retournée par l'opération de date ${.now?string.full} Apache FreeMarker, entraînera l'échec continu des scénarios de test en raison de la non-concordance de l'heure à laquelle le scénario de test a été enregistré et de l'heure à laquelle le scénario de test a été exécuté.
Description de view-variable-value-difference.png ci-dessous
Description de l'illustration view-variable-value-difference.png

Pour permettre la réussite de ces scénarios de test, remplacez la valeur de temps de conflit dans l'objet messagePayload du robot dans la zone de texte Conversation par un paramètre fictif. Par exemple, ${ORDER_TIME} remplace une chaîne de date comme Monday, April 8, 2024 7:42:46 PM UTC dans les éléments suivants :
{
        "source": "bot",
        "messagePayload": {
            "type": "text",
            "text": "You placed an order at ${ORDER_TIME} for a large Veggie pizza on thin crust. Your order will be delivered to your home at 04:30 PM."
        }
    }


Note

Pour les nouveaux scénarios de test, le champ Variable contient le paramètre fictif SYSTEM_BOT_ID qui est automatiquement remplacé par les valeurs system.botId qui changent lorsque la compétence a été importée à partir d'une autre instance ou clonée.

Créer un scénario de test à partir d'un objet JSON

Vous créez un scénario de test à partir d'un objet de tableau d'objets de message en cliquant d'abord sur + Test Case (Cas de test) dans la page Test Suite (Suite de tests), puis en remplissant la boîte de dialogue New Test Case (Nouveau cas de test). Les propriétés sont les mêmes que pour les scénarios de test enregistrés, sauf que vous devez remplir la fenêtre Conversations du tableau ([]) avec les objets de message. Voici le modèle pour les différents types de données utiles :
    {
        source: "user",             //text only message format is kept simple yet extensible.
        type: "text"
        payload: {
            message: "order pizza" 
        }
    },{
        source: "bot",
        type: "text",
        payload: {
            message: "how old are you?"
            actions: [action types --- postback, url, call, share],  //bot messages can have actions and globalActions which when clicked by the user to send specific JSON back to the bot.
            globalActions: [...]
        }
    },
    {
        source: "user",
        type: "postback"
        payload: {      //payload object represents the post back JSON sent back from the user to the bot when the button is clicked
            variables: {
                accountType: "credit card"
            }, 
            action: "credit card", 
            state: "askBalancesAccountType"
        }
    },
    {
        source: "bot",
        type: "cards"
        payload: {
            message: "label"
            layout: "horizontal|vertical"
            cards: ["Thick","Thin","Stuffed","Pan"],    // In test files cards can be strings which are matched with button labels or be JSON matched  
            cards: [{
                title: "...",
                description: "..."
                imageUrl: "...",
                url: "...",
                actions: [...]  //actions can be specific to a card or global
            }],
            actions: [...],
            globalActions: [...]
        }
         
    },
    {
        source: "bot|user",
        type: "attachment"  //attachment message could be either a bot message or a user message    
        payload: {
            attachmentType: "image|video|audio|file"
            url: "https://images.app.goo.gl/FADBknkmvsmfVzax9"
            title: "Title for Attachment"
        }   
    },
    {
        source: "bot",
        type: "location"       
        payload: {
            message: "optional label here"
            latitude: 52.2968189
            longitude: 4.8638949
        }
    },
    {
        source: "user",
        type: "raw"
        payload: {
            ... //free form application specific JSON for custom use cases. Exact JSON matching
        }
    }
    ...
    //multiple bot messages per user message possible.]
}
 

Exécuter des scénarios de test

Vous pouvez créer des exécutions de test pour un seul scénario, un sous-ensemble de scénarios ou pour l'ensemble des scénarios répertoriés dans la page Test Suite. Au fur et à mesure que votre compétence évolue, vous devrez peut-être mettre fin à des cas de test qui risquent d'échouer en raison des modifications apportées délibérément à une compétence. Vous pouvez également désactiver temporairement un scénario de test à cause d'un développement en cours.
Note

Vous ne pouvez pas supprimer un scénario de test hérité, vous pouvez uniquement le désactiver.
Une fois l'exécution du test terminée, cliquez sur l'onglet Test Run Results (Résultats d'exécution du test) pour savoir quels scénarios de test ont réussi ou échoué.
Une description de test-run-results.png suit
Description de l'illustration test-run-results.png

Voir les résultats d'exécution des tests

La page Tester les résultats d'exécution répertorie les derniers tests exécutés et leurs résultats. Les scénarios de test compilés dans l'exécution de test ont réussi ou échoué en fonction d'une comparaison de la sortie attendue enregistrée dans la définition du scénario de test et de la sortie réelle. Si les deux résultats correspondent, le scénario de test a réussi. Sinon, le scénario de test échoue. Lorsque les scénarios de test échouent, vous pouvez savoir pourquoi en cliquant sur Voir les différences.
Bouton Voir les différences

Note

Les résultats d'exécution de test pour chaque compétence sont stockés pendant une période de 14 jours, après quoi ils sont supprimés du système.

Vérifier les scénarios de test qui ont échoué

Le rapport répertorie les points d'échec au niveau du message. La colonne Élément de message indique la position du message de compétence dans la conversation du scénario de test. Pour chaque message, le rapport fournit une comparaison de haut niveau des données utiles attendues et réelles. Pour forer pour voir cette comparaison en détail et pour rapprocher les différences afin de permettre la réussite de ce scénario de test dans les exécutions de test futures, cliquez sur le menu Actions.
Description de l'illustration top-level-menu.png :
Description de l'illustration top-level-menu.png

Corriger les scénarios de test en échec

Si nécessaire, vous pouvez utiliser les actions Apply Actual Value (Appliquer la valeur réelle), Ignore Difference (Ignorer la différence) et Add (Ajouter) pour corriger un scénario de test (ou des parties d'un scénario de test) afin de l'empêcher d'échouer lors de sa prochaine exécution. Les options du menu Actions sont propres au noeud, de sorte que les actions au niveau du message diffèrent de celles aux points inférieurs du parcours.
  • Tout développer - Développe les noeuds d'objet de message.
  • Voir la différence - Fournit une comparaison côte à côte de la sortie réelle et attendue. La vue varie en fonction du noeud. Par exemple, vous pouvez afficher une seule action ou l'ensemble du tableau d'actions. Vous pouvez utiliser cette action avant de rapprocher la sortie réelle et la sortie prévue.

  • Ignorer la différence - Sélectionnez cette action lorsque des valeurs en conflit n'ont pas d'incidence sur la fonctionnalité. Si vous avez plusieurs différences et que vous ne voulez pas les parcourir une par une, vous pouvez choisir cette option. Au niveau de la republication, par exemple, vous pouvez appliquer les valeurs réelles individuellement ou ignorer les différences pour l'ensemble de l'objet de republication.
  • Appliquer la valeur réelle - Certaines modifications, même mineures, peuvent entraîner l'échec de nombreux cas de test au cours de la même exécution. Il s'agit en général des modifications apportées aux chaînes de texte telles que les invites ou les étiquettes. Par exemple, si vous modifiez l'invite "How big of a pizza do you want?" (Quelle taille de pizza voulez-vous?) en "What pizza size?" (Quelle taille de pizza?), tout scénario de test qui contient cette invite échoue, même si la fonctionnalité de la compétence n'est pas affectée. Vous pouvez appliquer cette modification en réenregistrant entièrement le scénario de test, mais vous pouvez mettre à jour rapidement la définition de ce dernier avec l'invite modifiée en cliquant sur Apply Actual Value. Comme le scénario de test est à présent conforme à la nouvelle définition de la compétence, il réussit (ou, s'il échoue, ce n'est pas à cause de la formulation modifiée) lors des prochaines exécutions de test.
    Note

    Bien que vous puissiez appliquer des valeurs de chaîne, telles que des invites et des URL, vous ne pouvez pas utiliser Apply Actual Value (Appliquer la valeur réelle) pour corriger un scénario de test lorsqu'une modification des valeurs d'une entité ou de son comportement (désactivation de la fonction Out of Order Extraction (Extraction de la commande), par exemple) rend non valides les valeurs fournies par le scénario de test. La mise à jour d'une entité entraîne l'échec du cas, car la compétence demande continuellement une valeur qu'elle ne reçoit jamais et ses réponses ne correspondent pas à la séquence définie par le scénario de test.
  • Ajouter une expression rationnelle - Vous pouvez remplacer une expression rationnelle pour résoudre les valeurs de texte en conflit. Par exemple, vous ajoutez user* pour résoudre les chaînes user et user1 en conflit.
  • Add (Ajouter) - Au niveau de republication du parcours, les actions Add (Ajouter) s'affichent lorsqu'une compétence révisée inclut des actions de republication qui n'étaient pas présentes dans le scénario de test. Pour éviter l'échec du scénario de test en raison de la nouvelle action de republication, vous pouvez cliquer sur Add (Ajouter) pour l'inclure dans le scénario de test. (Ajouter est similaire à Appliquer la valeur réelle, mais au niveau de la republication.)
Note

Le jeu de résultats de test généré pour les paramètres d'entrée font tous référence au même scénario de test initial, de sorte que le rapprochement d'une valeur de paramètre d'entrée dans un résultat de test rapproche simultanément les valeurs de ce paramètre d'entrée dans le reste des résultats de test.

Importer et exporter des scénarios de test

Vous pouvez importer des suites de tests d'une version de la compétence vers une autre lorsque vous développez des versions parallèles de la même compétence ou lorsque vous utilisez des clones.
  1. Pour exporter une suite de tests, sélectionnez d'abord la suite de tests (ou les suites de tests). Cliquez ensuite sur Plus > Exporter la suite sélectionnée ou sur Tout exporter. (Vous pouvez également exporter toutes les séries de tests en sélectionnant Exporter les tests dans le menu kebab.
    C'est le menu kebab.

    dans la vignette de compétence.) Le fichier ZIP exporté contient un dossier nommé testSuites qui contient un fichier JSON décrivant la suite de tests exportée. Voici un exemple de format JSON :
    {
      "displayName" : "TestSuite0001",
      "name" : "TestSuite0001",
      "testCases" : [ {
        "channelType" : "websdk",
        "conversation" : [ {
          "messagePayload" : {
            "type" : "text",
            "text" : "I would like a large veggie pizza on thin crust delivered at 4:30 pm",
            "channelExtensions" : {
              "test" : {
                "timezoneOffset" : 25200000
              }
            }
          },
          "source" : "user"
        }, {
          "messagePayload" : {
            "type" : "text",
            "text" : "Let's get started with that order"
          },
          "source" : "bot"
        }, {
          "messagePayload" : {
            "type" : "text",
            "text" : "How old are you?"
          },
          "source" : "bot"
        }, {
          "messagePayload" : {
            "type" : "text",
            "text" : "${AGE}",
            "channelExtensions" : {
              "test" : {
                "timezoneOffset" : 25200000
              }
            }
          },
          "source" : "user"
        }, {
          "messagePayload" : {
            "type" : "text",
            "text" : "You placed an order at ${ORDER_TIME} for a large Veggie pizza on thin crust. Your order will be delivered to your home at 04:30 PM."
          },
          "source" : "bot"
        } ],
        "description" : "Tests all values with a single utterance. Uses input parameters and variable values",
        "displayName" : "Full Utterance Test",
        "enabled" : true,
        "inputParameters" : {
          "AGE" : [ "24", "25", "26" ]
        },
        "name" : "FullUtteranceTest",
        "platformVersion" : "1.0",
        "trackingId" : "A0AAA5E2-5AAD-4002-BEE0-F5D310D666FD"
      } ],
      "trackingId" : "4B6AABC7-3A65-4E27-8D90-71E7B3C5264B"
    }
  2. Ouvrez la page Suites de tests de la compétence cible, puis cliquez sur More (Plus) > Import (Importer).
  3. Accédez au fichier ZIP contenant la définition JSON des suites de tests, puis sélectionnez-le. Cliquez ensuite sur Charger.
  4. Une fois l'importation terminée, cliquez sur Télécharger le rapport dans l'avis de confirmation pour obtenir plus de détails sur l'importation dans le fichier JSON inclus dans le fichier ZIP téléchargé.
    Lien Télécharger le rapport dans le message d'avis.

    Par exemple :
    {
      "status" : "SUCCESS",
      "statusMessage" : "Successfully imported test cases and test suites. Duplicate and invalid test cases/test suites ignored.",
      "truncatedDescription" : false,
      "validTestSuites" : 2,
      "duplicateTestSuites" : 0,
      "invalidTestSuites" : 0,
      "validTestCases" : 2,
      "duplicateTestCases" : 0,
      "invalidTestCases" : 0,
      "validationDetails" : [ {
        "name" : "DefaultTestSuite",
        "validTestCases" : 1,
        "duplicateTestCases" : 0,
        "invalidTestCases" : 0,
        "invalidReasons" : [ ],
        "warningReasons" : [ ],
        "testCasesValidationDetails" : [ {
          "name" : "Test1",
          "invalidReasons" : [ ],
          "warningReasons" : [ ]
        } ]
      }, {
        "name" : "TestSuite0001",
        "validTestCases" : 1,
        "duplicateTestCases" : 0,
        "invalidTestCases" : 0,
        "invalidReasons" : [ ],
        "warningReasons" : [ ],
        "testCasesValidationDetails" : [ {
          "name" : "Test2",
          "invalidReasons" : [ ],
          "warningReasons" : [ ]
        } ]
      } ]
    }
Vous ne pouvez importer que des scénarios de test valides.
Boîte de dialogue d'avertissement pour les importations de scénario de test non valides

Pour trouver la cause du résultat de l'échec, vérifiez le tableau invalidReasons dans le fichier importJSON téléchargé.
    "testCasesValidationDetails" : [ {
      "name" : "Test",
      "invalidReasons" : [ "INVALID_INPUT_PARAMETERS" ],
   ...