Suite di test e test di esempio
È possibile creare un caso di test per casi d'uso diversi. È possibile creare uno di questi casi di test da JSON o registrando le conversazioni nel tester delle conversazioni. Questi casi di test fanno parte dei metadati dello skill in modo che persistano tra le versioni.
Per questo motivo, è possibile eseguire questi casi di test per assicurarsi che tutte le estensioni apportate alla competenza non abbiano rotto la funzionalità di base. I casi di test non si limitano a preservare solo le funzioni principali. Li si utilizza per testare nuovi scenari. Man mano che la tua abilità si evolve, puoi ritirare i casi di test che falliscono continuamente a causa dei cambiamenti introdotti attraverso le estensioni.
Tutti i casi di test appartengono a una suite di test, contenitori che consentono di partizionare i test. Forniamo una suite di test chiamata Default Test Suite, ma puoi anche crearne una tua. La pagina Suite di test elenca tutte le suite di test e i casi di test che le appartengono. Le suite di test elencate in questa pagina potrebbero essere quelle create dall'utente o ereditate da un'abilità estesa o duplicata. È possibile utilizzare questa pagina per creare e gestire suite di test e casi di test e compilare casi di test in esecuzioni di test.
Descrizione della figura test-suites.png
Aggiungi casi di test
Che si tratti di creare uno skill da zero o di estendere uno skill, è possibile creare un caso di test per ogni caso d'uso. Ad esempio, è possibile creare un caso di test per ogni tipo di payload. È possibile creare un'intera suite di casi di test per una competenza semplicemente registrando le conversazioni o creando file JSON che definiscono gli oggetti messaggio.
Creare un caso di test da una conversazione
- Aprire lo skill o l'assistente digitale per il quale si desidera creare il test.
- Nella barra degli strumenti nella parte superiore della pagina, fare clic su Anteprima.
- Fare clic su Tester bot.
- Selezionare il canale.
Nota
I casi di test sono specifici del canale: la conversazione di test, gestita dal canale selezionato, è ciò che viene registrato per un caso di test. Ad esempio, i casi di test registrati utilizzando uno dei canali basati su testo del tester skill non possono essere utilizzati per eseguire il test della stessa congruenza sul canale Web Oracle. - Immettere le espressioni specifiche del comportamento o dell'output che si desidera testare.
- Fare clic su Salva come test.
- Completare la finestra di dialogo Salva conversazione come caso di test:
- Se necessario, escludere il caso di test dalle esecuzioni di test disattivando Abilitato.
- Se si sta eseguendo un caso di test per conversazioni o messaggi con azioni di postback, è possibile attivare Ignora variabili postback per consentire il passaggio del caso di test ignorando le differenze tra il messaggio previsto e il messaggio effettivo a livello di variabile postback.
- Immettere un nome e un nome visualizzato che descrivano il test.
- Come passo facoltativo, aggiungere i dettagli nel campo Descrizione che descrivono il modo in cui il caso di test convalida il funzionamento previsto per uno scenario o un caso d'uso.
- Se necessario, selezionare una suite di test diversa da Default Test Suite dall'elenco Test Suite.
- Per eseguire il test dei diversi valori dei parametri che gli utenti possono immettere nelle richieste o nelle risposte, aggiungere array all'oggetto nel campo Parametri di input per ogni parametro di input e sostituire i segnaposto corrispondenti per l'input utente di cui si sta eseguendo il test nell'area di testo Conversazione. Ad esempio, immettere un array
{"AGE":["24","25","26"]}
nel campo Parametri di input e${"AGE"}
(il segnaposto) nell'area di testo Conversazione. - Se le risposte dello skill o dell'assistente digitale includono informazioni dinamiche, ad esempio indicatori orari, che potrebbero causare errori continui nei casi di test, sostituire la definizione di variabile che popola questi valori con un segnaposto formattato come
${MY_VARIBALE_NAME}
.
- Fare clic su Aggiungi a suite.
Aggiungere parametri di input per i messaggi utente
Quando si aggiungono segnaposto variabili per assicurarsi che i casi di test vengano superati quando i messaggi di skill presentano valori in continua evoluzione, è necessario aggiungere parametri di input per verificare la presenza di vari valori nei messaggi utente. I parametri di input semplificano i test perché consentono di eseguire più variazioni di un singolo caso di test. Senza di essi, è necessario creare casi di test duplicati per ogni valore di parametro. A causa della flessibilità offerta dai parametri di input, tuttavia, è possibile generare più risultati di test semplicemente aggiungendo un array per i valori dei parametri di input nella definizione del caso di test. Quando si esegue il caso di test, vengono generati risultati di test separati per ogni elemento nella definizione dell'array dei parametri di input. Un array di tre coppie chiave-valore dei parametri di input determina un'esecuzione del test con tre risultati del test, ad esempio. La numerazione di questi risultati si basa sull'indice dell'elemento array corrispondente.
Descrizione dell'immagine input-parameters-test-run-results.png
text
nel payload dei messaggi del messaggio utente con un segnaposto e definire un array corrispondente di valori dei parametri:
- Nella vista Tester bot, fare clic su Salva come test.
- Nell'area di testo della conversazione, sostituire il valore del campo
text
in un messaggio utente ({"source": "user", ...}
) con un'espressione FreeMarker Apache che assegna un nome al parametro di input. Ad esempio,"${AGE}"
nel seguente snippet:{ "source": "user", "messagePayload": { "type": "text", "text": "${AGE}", "channelExtensions": { "test": { "timezoneOffset": 25200000 } } } },
- Fare clic su
per espandere il campo Parametri di input.
- Nell'oggetto campo Parametri di input (
{}
), aggiungere coppie di valori chiave per ogni parametro. I valori devono essere array di valori di stringa. Ad esempio:{"AGE":["24","25","26"], "CRUST": ["Thick","Thin"]}
Di seguito sono riportate alcune cose da notare quando si definiscono i parametri di input.- Usa solo array: i parametri di input devono essere impostati come array e non come stringhe.
{"NAME": "Mark"}
restituisce un risultato del test non riuscito, ad esempio. - Usa i valori stringa nell'array - Tutti gli elementi dell'array devono essere stringhe. Se si immette un elemento come valore intero, ad esempio
{"AGE": ["25", 26]}
, verrà convertito in stringa. Non vengono generati risultati di test per valori nulli.{ "AGE": [ "24", "25", null ] }
restituisce due risultati di test, non tre. - Usa involucro coerente: l'involucro per la chiave e il segnaposto nell'espressione FreeMarker deve corrispondere. L'involucro non corrispondente (ad esempio
Age
eAGE
) causerà l'errore del caso di test.
- Usa solo array: i parametri di input devono essere impostati come array e non come stringhe.
- Fare clic su Aggiungi a suite.
Aggiungi segnaposto variabile
Le variabili con valori in continua evoluzione nelle risposte di skill o assistente digitale faranno sì che i casi di test non funzionino quando l'esecuzione del test confronta il valore effettivo con il valore previsto. È possibile escludere le informazioni dinamiche dal confronto sostituendo un segnaposto formattato come ${MY_VARIBALE_NAME}
nella risposta skill. Ad esempio, un valore temporale, ad esempio quello restituito dall'operazione di data ${.now?string.full}
Apache FreeMarker, causerà l'errore continuo dei casi di test a causa della mancata corrispondenza tra il momento in cui è stato registrato il caso di test e il momento in cui è stato eseguito il caso di test.
Descrizione dell'immagine view-variable-value-difference.png
messagePayload
nell'area di testo Conversazione con un segnaposto. Ad esempio, ${ORDER_TIME}
sostituisce una stringa di data come Monday, April 8, 2024 7:42:46 PM UTC
nel seguente modo:{
"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."
}
}
Per i nuovi casi di test creati, il campo Variabile indica il segnaposto SYSTEM_BOT_ID che viene sostituito automaticamente con i valori
system.botId
che cambiano quando lo skill è stato importato da un'altra istanza o duplicato.
Creare un caso di test da un oggetto JSON
[]
) con gli oggetti messaggio. Di seguito è riportato un modello per i diversi tipi di payload. {
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.]
}
Esegui casi di test
Non è possibile eliminare un caso di test ereditato, ma solo disabilitarlo.

Descrizione dell'esecuzione del test della figura: results.png
Visualizza risultati esecuzione test

I risultati dell'esecuzione del test per ogni skill vengono memorizzati per un periodo di 14 giorni, trascorsi i quali vengono rimossi dal sistema.
Rivedi casi di test non riusciti
Il report elenca i punti di errore a livello di messaggio, con la colonna Elemento messaggio che indica la posizione del messaggio di skill nella conversazione del caso di test. Per ogni messaggio, il report fornisce un confronto di alto livello dei payload previsti ed effettivi. Per eseguire il drill-down per visualizzare questo confronto in dettaglio e riconciliare le differenze per consentire il superamento di questo caso di test nelle esecuzioni di test future, fare clic sul menu Azioni.
Descrizione dell'immagine di livello superiore: menu.png
Correggi casi di test non riusciti
- Espandi tutto: espande i nodi dell'oggetto messaggio.
- Visualizza differenza: fornisce un confronto diretto tra l'output effettivo e quello previsto. La vista varia a seconda del nodo. Ad esempio, è possibile visualizzare una singola azione o l'intero array di azioni. È possibile utilizzare questa azione prima di riconciliare l'output effettivo e quello previsto.
- Ignora differenza: scegliere questa azione quando i valori in conflitto non influiscono sulla funzionalità. Se hai più differenze e non vuoi passarle una per una, puoi scegliere questa opzione. A livello di postback, ad esempio, è possibile applicare i valori effettivi singolarmente oppure ignorare le differenze per l'intero oggetto postback.
- Applica valore effettivo: alcune modifiche, anche se di piccole dimensioni, possono causare l'errore di molti casi di test all'interno della stessa esecuzione. Questo si verifica spesso con le modifiche alle stringhe di testo, ad esempio prompt o etichette. Ad esempio, la modifica di un prompt di testo da "Quanto grande di una pizza vuoi?" a "Quale dimensione della pizza?" causerà il fallimento di qualsiasi caso di test che includa questo prompt, anche se la funzionalità dell'abilità rimane inalterata. Sebbene sia possibile accogliere questa modifica registrando completamente il caso di test, è possibile aggiornare rapidamente la definizione del caso di test con il prompt rivisto facendo clic su Applica valore effettivo. Poiché il caso di test è ora al passo con la nuova definizione di skill, il caso di test passerà (o almeno non fallirà a causa della modifica della formulazione) nelle prossime esecuzioni di test.
Nota
Sebbene sia possibile applicare valori stringa, ad esempio prompt e URL, non è possibile utilizzare la funzione Applica valore effettivo per correggere un caso di test quando una modifica ai valori di un'entità o al relativo funzionamento (la disabilitazione della funzione Estrazione fuori ordine, ad esempio) rende non validi i valori forniti dal caso di test. L'aggiornamento di un'entità causerà l'errore del caso perché l'abilità richiederà continuamente un valore che non riceverà mai e le relative risposte non saranno al passo con la sequenza definita dal caso di test. - Aggiungi espressione regolare: è possibile sostituire un'espressione Regex per risolvere i valori di testo in conflitto. Ad esempio, si aggiunge
user*
per risolvere le stringheuser
euser1
in conflitto. - Aggiungi: al livello di postback dello spostamento, le azioni Aggiungi vengono visualizzate quando uno skill rivisto include azioni di postback non presenti nel caso di test. Per evitare che il caso di test non riesca a causa della nuova azione di postback, è possibile fare clic su Aggiungi per includerlo nel caso di test. (Aggiungi è simile a Applica valore effettivo, ma a livello di postback).
Il set di risultati del test generato per i parametri di input si riferisce tutti allo stesso caso di test originale, pertanto la riconciliazione di un valore di parametro di input in un unico risultato del test riconcilia contemporaneamente i valori di tale parametro di input nel resto dei risultati del test.
Importa ed esporta casi di test
- Per esportare una suite di test, selezionare prima la suite di test (o suite di test). Quindi fare clic su Altro > Esporta suite selezionata o su Esporta tutto. È inoltre possibile esportare tutte le suite di test selezionando Esporta test dal menu a schede.
nella casella abilità.) Il file ZIP esportato contiene una cartella denominatatestSuites
con un file JSON che descrive la suite di test esportata. Ecco un esempio del formato 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" }
- Aprire la pagina Suite di test dello skill di destinazione, quindi fare clic su Altro > Importa.
- Cercare, quindi selezionare, il file ZIP contenente la definizione JSON delle suite di test. quindi fare clic su Carica.
- Al termine dell'importazione, fare clic su Scarica report nella notifica di conferma per ulteriori dettagli sull'importazione nel file JSON incluso nel file ZIP scaricato.
Ad esempio:{ "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" : [ ] } ] } ] }

Per trovare la causa del risultato non riuscito, esaminare l'array
invalidReasons
nel file importJSON
scaricato. "testCasesValidationDetails" : [ {
"name" : "Test",
"invalidReasons" : [ "INVALID_INPUT_PARAMETERS" ],
...