Series de Pruebas y Casos de Prueba
Puede crear un caso de prueba para diferentes casos de uso. Puede crear uno de estos casos de prueba a partir de JSON o grabando conversaciones en el comprobador de conversaciones. Estos casos de prueba forman parte de los metadatos de la aptitud para que persistan en las versiones.
Por este motivo, puede ejecutar estos casos de prueba para asegurarse de que las extensiones realizadas en la aptitud no han roto la funcionalidad básica. Los casos de prueba no se limitan a simplemente preservar las funciones principales. Se utilizan para probar nuevos escenarios. A medida que la aptitud evoluciona, puede retirar los casos de prueba que fallan continuamente debido a los cambios introducidos mediante extensiones.
Todos los casos de prueba pertenecen a un conjunto de pruebas, contenedores que le permiten particionar las pruebas. Proporcionamos un conjunto de pruebas llamado Default Test Suite, pero también puedes crear el tuyo propio. La página Conjunto de Pruebas muestra todos los conjuntos de pruebas y los casos de prueba que les pertenecen. Los conjuntos de pruebas que se muestran en esta página pueden ser los que ha creado o pueden haberse heredado de una aptitud que ha ampliado o clonado. Puede utilizar esta página para crear y gestionar conjuntos de pruebas y casos de prueba y compilar casos de prueba en ejecuciones de prueba.
Descripción de la ilustración test-suites.png
Adición de casos de prueba
Tanto si está creando una aptitud desde cero como ampliando una aptitud, puede crear un caso de prueba para cada caso de uso. Por ejemplo, puede crear un caso de prueba para cada tipo de carga útil. Puede crear un conjunto completo de casos de prueba para una aptitud simplemente grabando conversaciones o creando archivos JSON que definen objetos de mensajes.
Creación de un caso de prueba a partir de una conversación
- Abra la aptitud o el asistente digital para el que desee crear la prueba.
- En la barra de herramientas situada en la parte superior de la página, haga clic en Vista previa.
- Haga clic en Comprobador de bots.
- Seleccione el canal.
Nota
Los casos de prueba son específicos del canal: la conversación de prueba, tal y como la gestiona el canal seleccionado, es lo que se registra para un caso de prueba. Por ejemplo, los casos de prueba registrados mediante uno de los canales basados en texto del comprobador de aptitudes no se pueden utilizar para comprobar la misma conversación en el canal web de Oracle. - Introduzca las expresiones que sean específicas del comportamiento o de la salida que desea probar.
- Haga clic en Guardar como prueba.
- Complete el cuadro de diálogo Guardar conversación como caso de prueba:
- Si es necesario, elimine el caso de prueba de las ejecuciones de prueba desactivando Activado.
- Si está ejecutando un caso de prueba para conversaciones o mensajes que tienen acciones de devolución, puede activar Ignorar variables de devolución para permitir que el caso de prueba se transfiera ignorando las diferencias entre el mensaje esperado y el mensaje real en el nivel de variable de devolución.
- Introduzca un nombre y un nombre mostrado que describan la prueba.
- Como paso opcional, agregue detalles en el campo Descripción que describan cómo el caso de prueba valida el comportamiento esperado para un escenario o caso de uso.
- Si es necesario, seleccione un conjunto de pruebas distinto del conjunto de pruebas predeterminado en la lista Conjunto de pruebas.
- Para probar los diferentes valores de parámetros que los usuarios pueden introducir en sus solicitudes o respuestas, agregue arrays al objeto en el campo Parámetros de entrada para cada parámetro de entrada y sustituya los marcadores de posición correspondientes por la entrada de usuario que está probando en el área de texto Conversación. Por ejemplo, introduzca una matriz
{"AGE":["24","25","26"]}
en el campo Parámetros de Entrada y${"AGE"}
(el marcador de posición) en el área de texto Conversación. - Si las respuestas de la aptitud o del asistente digital incluyen información dinámica, como registros de hora, que harán que los casos de prueba fallen continuamente, sustituya la definición de variable que rellena estos valores por un marcador de posición con el formato
${MY_VARIBALE_NAME}
.
- Haga clic en Agregar a conjunto.
Agregar Parámetros de Entrada para Mensajes de Usuario
Mientras agrega marcadores de posición variables para garantizar que los casos de prueba se superen cuando los mensajes de aptitud tengan valores que cambian constantemente, agrega parámetros de entrada para probar una variedad de valores en los mensajes de usuario. Los parámetros de entrada simplifican las pruebas, ya que permiten ejecutar varias variaciones de un solo caso de prueba. Sin ellos, tendría que crear casos de prueba duplicados para cada valor de parámetro. Sin embargo, debido a la flexibilidad que ofrecen los parámetros de entrada, puede generar varios resultados de prueba simplemente agregando una matriz para los valores de los parámetros de entrada en la definición del caso de prueba. Cuando se ejecuta el caso de prueba, se generan resultados de prueba independientes para cada elemento de la definición de la matriz de parámetros de entrada. Una matriz de tres pares clave-valor de parámetros de entrada da como resultado una ejecución de prueba con tres resultados de prueba, por ejemplo. La numeración de estos resultados se basa en el índice del elemento de matriz correspondiente.
Descripción de la ilustración input-parameters-test-run-results.png
text
de la carga útil del mensaje de usuario por un marcador de posición y definir una matriz correspondiente de valores de parámetros:
- En la vista Probador de bots, haga clic en Guardar como prueba.
- En el área de texto Conversación, sustituya el valor del campo
text
de un mensaje de usuario ({"source": "user", ...}
) por una expresión FreeMarker de Apache que asigne un nombre al parámetro de entrada. Por ejemplo,"${AGE}"
en el siguiente fragmento:{ "source": "user", "messagePayload": { "type": "text", "text": "${AGE}", "channelExtensions": { "test": { "timezoneOffset": 25200000 } } } },
- Haga clic en
para ampliar el campo Parámetros de entrada.
- En el objeto de campo Parámetros de entrada (
{}
), agregue pares de clave-valor para cada parámetro. Los valores deben ser matrices de valores de cadena. Por ejemplo:{"AGE":["24","25","26"], "CRUST": ["Thick","Thin"]}
A continuación, se muestran algunos aspectos que se deben tener en cuenta al definir parámetros de entrada:- Usar solo matrices: los parámetros de entrada se deben definir como matrices, no como cadenas.
{"NAME": "Mark"}
da como resultado un resultado de prueba fallido, por ejemplo. - Usar valores de cadena en la matriz: todos los elementos de matriz deben ser cadenas. Si introduce un elemento como valor entero en su lugar (
{"AGE": ["25", 26]}
, por ejemplo), se convertirá en una cadena. No se generan resultados de prueba para valores nulos.{ "AGE": [ "24", "25", null ] }
da como resultado dos resultados de prueba, no tres. - Usar mayúsculas/minúsculas consistentes: las mayúsculas/minúsculas de la clave y el marcador de posición de la expresión FreeMarker deben coincidir. Las mayúsculas/minúsculas no coincidentes (
Age
yAGE
, por ejemplo), harán que falle el caso de prueba.
- Usar solo matrices: los parámetros de entrada se deben definir como matrices, no como cadenas.
- Haga clic en Agregar a conjunto.
Agregar marcadores de posición variables
Las variables con valores siempre cambiantes en las respuestas de la aptitud o del asistente digital provocarán que los casos de prueba fallen cuando la ejecución de la prueba compare el valor real con el valor esperado. Puede excluir información dinámica de la comparación sustituyendo un marcador a un formato ${MY_VARIBALE_NAME}
en la respuesta de aptitud. Por ejemplo, un valor temporal, como el devuelto por la operación de fecha ${.now?string.full}
Apache FreeMarker, hará que los casos de prueba fallen continuamente debido a la discrepancia de la hora en que se registró el caso de prueba y la hora en que se ejecutó el caso de prueba.
Descripción de la ilustración ver-variable-value-difference.png
messagePayload
del bot en el área de texto Conversación por un marcador de posición. Por ejemplo, ${ORDER_TIME}
sustituye una cadena de fecha como Monday, April 8, 2024 7:42:46 PM UTC
en lo siguiente:{
"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."
}
}
En el caso de casos de prueba recién creados, el campo Variable detecta el marcador de posición SYSTEM_BOT_ID que se sustituye automáticamente por los valores
system.botId
que cambian cuando la aptitud se ha importado de otra instancia o clonado.
Creación de un caso de prueba a partir de un objeto JSON
[]
) con los objetos de mensaje. Esta es la plantilla para los distintos tipos de carga útil: {
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.]
}
Ejecución de casos de prueba
No puede suprimir un caso de prueba heredado. Solo puede desactivarlo.

Description of the illustration test-run-results.png
Visualización de resultados de ejecución de la prueba

Los resultados de la ejecución de prueba de cada aptitud se almacenan durante un período de 14 días, tras el cual se eliminan del sistema.
Revisión de casos de pruebas con fallos
El informe muestra los puntos de fallo en el nivel de mensaje, con la columna Elemento de mensaje que indica la posición del mensaje de aptitud en la conversación de caso de prueba. Para cada mensaje, el informe proporciona una comparación de alto nivel de las cargas útiles esperadas y reales. Para aumentar detalle para ver esta comparación y conciliar las diferencias para permitir que este caso de prueba pase en futuras ejecuciones de prueba, haga clic en el menú Acciones.
Descripción de la ilustración top-level-menu.png
Corrección de casos de pruebas con fallos
- Ampliar todo: amplía los nodos de objeto de mensaje.
- Ver diferencia: proporciona una comparación en paralelo de la salida real y la esperada. La vista varía según el nodo. Por ejemplo, puede ver una sola acción o la matriz de acciones completa. Puede utilizar esta acción antes de conciliar la salida real y la esperada.
- Ignorar diferencia: seleccione esta acción cuando los valores enfrentados no afecten a la funcionalidad. Si tienes varias diferencias y no quieres pasar por ellas una por una, puedes elegir esta opción. En el nivel de devolución, por ejemplo, puede aplicar valores reales de forma individual o puede ignorar las diferencias para todo el objeto de devolución.
- Aplicar valor real: algunos cambios, por pequeños que sean, pueden provocar que se produzca un fallo en muchos casos de prueba dentro de la misma ejecución. Este suele ser el caso con los cambios en cadenas de texto como peticiones de datos o etiquetas. Por ejemplo, si se cambia una petición de datos de texto de "¿Qué tamaño de pizza desea?" a "¿Qué tamaño de pizza?", se producirá un fallo en cualquier caso de prueba que incluya esta petición de datos, incluso aunque la funcionalidad de la aptitud no se vea afectada. Mientras que puede realizar este cambio volviendo a grabar completamente el caso de prueba, puede actualizar rápidamente la definición del caso de prueba con la petición de datos revisada haciendo clic en Aplicar valor real. Dado que el caso de prueba se encuentra ahora en el paso con la nueva definición de aptitud, el caso de prueba transferirá (o al menos no fallará debido a la redacción cambiada) en futuras ejecuciones de prueba.
Nota
Si bien puede aplicar valores de cadena, como peticiones de datos y URL, no puede utilizar Aplicar valor real para corregir un caso de prueba cuando un cambio en los valores de una entidad o su comportamiento (mediante la desactivación de la función Extracción incorrecta, por ejemplo) haga que los valores proporcionados por el caso de prueba no sean válidos. La actualización de una entidad hará que el caso falle porque la aptitud solicitará de forma continua un valor que nunca recibirá y sus respuestas estarán fuera del paso con la secuencia definida por el caso de prueba. - Agregar expresión regular: puede sustituir una expresión regular para resolver valores de texto conflictivo. Por ejemplo, agregue
user*
para resolver cadenasuser
yuser1
en conflicto. - Agregar: en el nivel de devolución del recorrido, las acciones Agregar aparecen cuando una aptitud revisada incluye acciones de devolución que no estaban presentes en el caso de prueba. Para evitar que el caso de prueba falle debido a la nueva acción de devolución, puede hacer clic en Agregar para incluirlo en el caso de prueba. (Agregar es similar a Aplicar valor real, pero en el nivel de devolución).
El juego de resultados de prueba generados para los parámetros de entrada hace referencia al mismo caso de prueba original, por lo que la conciliación de un valor de parámetro de entrada en un resultado de prueba concilia simultáneamente los valores de ese parámetro de entrada en el resto de los resultados de prueba.
Importación y exportación de casos de prueba
- Para exportar un conjunto de pruebas, primero seleccione el conjunto de pruebas (o conjuntos de pruebas). A continuación, haga clic en Más > Exportar conjunto seleccionado o en Exportar todo. (También puede exportar todos los conjuntos de pruebas seleccionando Exportar pruebas en el menú kebab.
en el mosaico de aptitudes.) El archivo ZIP exportado contiene una carpeta denominadatestSuites
que tiene un archivo JSON que describe el conjunto de pruebas exportado. A continuación se muestra un ejemplo 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" }
- Abra la página Conjuntos de pruebas de la aptitud de destino y, a continuación, haga clic en Más > Importar.
- Busque y, a continuación, seleccione el archivo ZIP que contiene la definición de JSON de los conjuntos de prueba. Haga clic en Cargar.
- Una vez finalizada la importación, haga clic en Descargar informe en la notificación de confirmación para obtener más información sobre la importación en el archivo JSON que se incluye en el archivo ZIP descargado.
Por ejemplo:{ "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" : [ ] } ] } ] }

Para encontrar la causa del resultado con fallos, revise la matriz
invalidReasons
en el archivo importJSON
descargado. "testCasesValidationDetails" : [ {
"name" : "Test",
"invalidReasons" : [ "INVALID_INPUT_PARAMETERS" ],
...