Afirmaciones en SoapUI: Scripts, XQuery, Tutorial de tipos XPath

¿Qué es una afirmación?

Aserción significa acto de afirmar o afirmar algo. También puede interpretarse como un punto de control o un punto de validación.

Una vez que se envía una solicitud a un servidor web, se recibe una respuesta. Necesitamos validar si la respuesta contiene los datos que esperamos. Para validar la respuesta, necesitamos usar aserciones.

Tipos de afirmación

Hay varias formas de afirmar una respuesta; sin embargo, nos centraremos en los tipos de afirmaciones SoapUI más utilizados mientras validamos una respuesta. A continuación se muestran los que están disponibles en la versión de código abierto de SoapUI.

  1. Contenido de la propiedad
  2. Estándar de estado de cumplimiento
  3. Guión
  4. SLA
  5. JMS
  6. Seguridad
Tipos de afirmaciones en SoapUI
Tipos de afirmaciones en SoapUI

Además de los que se enumeran anteriormente, la versión PRO también tiene una aserción JDBC incorporada mediante la cual podemos afirmar si el servicio web ha actualizado la base de datos correctamente.

CONTIENE ASERCIÓN

Busca la existencia de la cadena especificada. También admite expresiones regulares.

Continuaremos con el mismo ejemplo del tutorial anterior con solicitud WSDL como http://www.dneonline.com/calculator.asmx.

Paso 1: Por defecto no hay afirmaciones.

  • El número de afirmaciones se muestra en la pestaña Afirmaciones.
  • Para agregar una nueva afirmación, haga clic en el botón "Agregar nueva afirmación".

Contiene afirmación

Paso 2: Ahora,

  1. Seleccione la categoría de afirmación.
  2. Seleccione el tipo de afirmación.
  3. Haga clic en 'Agregar'

Contiene afirmación

Paso 3: Validemos si la cadena '46' existe en la respuesta. Haga clic en Aceptar'

Nota: También podemos ignorar mayúsculas y minúsculas y agregar expresiones regulares.

Contiene afirmación

Paso 4: Al agregarlo, se ejecuta inmediatamente la aserción y muestra si es VÁLIDA o NO VÁLIDA.

Contiene afirmación

Paso 5: Ahora digamos que cambiamos el contenido de "Contiene afirmación en SoapUI" a "47" y vemos qué sucede.

Contiene afirmación

Paso 6: La afirmación se ejecuta y el resultado se envía al usuario. Como no tenemos la cadena '47' dentro de la respuesta, la afirmación falló.

Contiene afirmación

NO CONTIENE Afirmación

Busca la inexistencia de la cadena especificada. También admite expresiones regulares.

Paso 1: Ahora, después de hacer clic en el botón "agregar nuevas afirmaciones",

  1. Seleccione la categoría de afirmación.
  2. Seleccione el tipo de afirmación: en este caso, "NO contiene".
  3. Haga clic en 'Agregar'

No contiene afirmación

Paso 2: Validemos si la cadena 'intA' existe en la respuesta. Ingrese la cadena "FromCurrency" y haga clic en "Aceptar".

No contiene afirmación

Paso 3: Tan pronto como se agrega una afirmación, se ejecuta y muestra el resultado. Hasta ahora hemos agregado dos aserciones, por lo que ambas aserciones se ejecutan y muestran el resultado.

No contiene afirmación

Paso 4: Ahora cambiemos el contenido de la "Aserción no contiene" y veamos qué sucede. Comprobaremos la inexistencia de la cadena “AddResult”.

No contiene afirmación

Paso 5: La cadena 'AddResult' está realmente presente en la respuesta, por lo tanto, la afirmación 'NO Contiene' fallará como se muestra a continuación.

No contiene afirmación

ASERCIÓN DE COINCIDENCIA XPATH

Usos XPath expresión para seleccionar el nodo de destino y sus valores. XPath, es un lenguaje de consulta XML para seleccionar nodos de un documento XML.

Paso 1: Ahora, después de hacer clic en el botón "Agregar nuevas afirmaciones",

  1. Seleccione la categoría de afirmación.
  2. Seleccione el tipo de afirmación: en este caso, "XPath Match"
  3. Haga clic en 'Agregar'

Aserción de coincidencia XPath

Paso 2: Se abre la ventana Agregar XPath.

Antes de agregar SoapUI XPath, debemos declarar el NameSpace. Un espacio de nombres XML es una colección de nombres, identificados mediante una referencia de Identificador uniforme de recursos (URI), que se utilizan en documentos XML como nombres de elementos y atributos. Lo mismo se utiliza en SOAP UI XPath Assertion.

Para declarar un espacio de nombres XML, solo necesitamos hacer clic en el botón "Declarar", que haría el trabajo por nosotros; de lo contrario, también podemos declarar manualmente un espacio de nombres nosotros mismos.

Después de declarar el espacio de nombres, debemos hacer referencia al XPath utilizando el espacio de nombres creado.

Al hacer clic en el botón "Declarar", aparecerán dos espacios de nombres ya que tenemos dos URI. Uno de ellos es la URL del esquema y el otro corresponde a la URL del servicio web real. Necesitamos usar el espacio de nombres real donde se encuentra el servicio web y NO el espacio de nombres del esquema al hacer referencia a XPath.

Aserción de coincidencia XPath

declarar espacio de nombres jabón =’http://schemas.xmlsoap.org/soap/envelope/’;

declarar espacio de nombres ns1=’http://tempuri.org/’;

Aserción de coincidencia XPath

Paso 3: Ahora necesitamos ingresar el XPath del nodo XML que necesitamos validar.

//ns1:AddResult Nos da el valor del nodo encerrado entre & y ns1 corresponde al espacio de nombres declarado que apunta a 'http://tempuri.org/'

Después de ingresar el XML, debemos hacer clic en "Seleccionar del actual" para que el valor de la respuesta actual se seleccione para compararlo en el futuro.

Aserción de coincidencia XPath

Paso 4: Hasta el momento,

  1. Después de declarar los espacios de nombres, ingresamos el XPath del nodo XML que necesitamos validar.
  2. Necesitamos hacer clic en 'Seleccionar de actual' para que el valor actual sea el valor esperado.
  3. El valor actual se muestra al usuario y podemos modificarlo si es necesario.
  4. Clic en Guardar'.

Aserción de coincidencia XPath

Paso 5: La aserción agregada en SoapUI se mostrará como se muestra a continuación.

Aserción de coincidencia XPath

Afirmaciones de secuencias de comandos

Esta técnica de afirmación es la más utilizada ya que es extremadamente difícil gestionar y mantener cientos de afirmaciones.

SOAP UI utiliza Groovy Scripting o JavaScript para secuencias de comandos de afirmaciones. La técnica de secuencias de comandos se adopta para desarrollar un marco para probar SOAP. Las afirmaciones de secuencias de comandos se utilizan en seguimientowing circunstancias.

Las secuencias de comandos permiten al usuario realizar algunas operaciones antes y después de ejecutar un TestCase utilizando métodos de configuración y desmontaje respectivamente. La configuración es un procedimiento que se ejecuta antes de ejecutar un método particular (ejemplo: creación e inicialización de objetos), mientras que derribar es un procedimiento que se ejecuta después de ejecutar el método (por ejemplo, destruir objetos y limpiar). Esta función no está disponible en otros tipos de afirmaciones y solo se puede realizar mediante codificación.

Permite a los usuarios abrir/cerrar un proyecto, para inicializar o limpiar configuraciones relacionadas con el proyecto y también trabajar con variables ambientales, lo cual es muy útil durante la creación de secuencias de comandos.

Nos ayuda a afirmar un contenido de Respuesta dinámico.

Las aserciones de secuencias de comandos se utilizan para crear aserciones definidas por el usuario que NO están predefinidas por la interfaz de usuario de SOAP.

Para demostrar la afirmación del script en SoapUI, utilizaremos la calculadora WSDL, el caso de prueba "Agregar" que habíamos creado anteriormente.

Paso 1: Los pasos para agregar un script maravilloso son los mismos que para otras afirmaciones, excepto que la afirmación no es predefinida. En cambio, es una afirmación definida por el usuario que ofrece mayores flexibilidades que las incorporadas.

Seleccione el paso de prueba contra el cual se debe agregar la afirmación.

Afirmaciones de secuencias de comandos

Haga clic en el botón "Agregar afirmación" como se muestra a continuación.

Afirmaciones de secuencias de comandos

Paso 2: Ahora seleccione la categoría Afirmación.

  1. En este caso es Script.
  2. Seleccione Aserción de script SoapUI y no habrá subtipos asociados.
  3. Haga clic en 'Agregar'.

Afirmaciones de secuencias de comandos

Paso 3: Se abre el cuadro de diálogo de secuencias de comandos donde el usuario podrá escribir una secuencia de comandos definida por el usuario para validar el XML de respuesta.

Afirmaciones de secuencias de comandos

Paso 4: Ahora escribamos un script maravilloso para validar la tasa de conversión. El guión se adjunta a continuación con los comentarios incrustados. Se recomienda tener conocimientos sobre Java Script o Groovy Script antes de intentar escribir tu propio guión.

//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
  1. Haga clic en el botón "Ejecutar" para activar la ejecución.
  2. La salida del script se muestra en el panel Salida. Ha impreso tanto el valor de conversión como el resultado final (aprobado o reprobado).
  3. Se muestra la información que dice "Aserción de script aprobada". Haga clic en Aceptar.

Nota: La ventana emergente de información final siempre se mostrará con el mensaje "Aserción del script aprobada", siempre y cuando el script sea sintácticamente correcto. No tiene correlación con su afirmación en el guión.

Afirmaciones de secuencias de comandos

haga clic en Aceptar

Paso 5: Ahora la pestaña de aserción muestra todas las aserciones que agregamos para este conjunto de pruebas con el estado de cada una de ellas.

Afirmaciones de secuencias de comandos

Paso 6: Actualmente

  1. Seleccione el conjunto de pruebas en el árbol del Navegador.
  2. Haga clic en el botón "Ejecutar"
  3. Los resultados se mostrarían para todo el conjunto de pruebas.

Afirmaciones de secuencias de comandos

Aserción de coincidencia de Xquery

Utiliza una expresión Xquery para seleccionar contenido de la propiedad de destino. Necesitamos un XML de respuesta mucho más grande para comprender mejor la afirmación de XQuery en SoapUI. Importemos otro WSDL como se muestra a continuación: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Paso 1: Haga clic derecho en el proyecto existente y seleccione "Agregar WSDL".

Aserción de coincidencia de Xquery

Paso 2: Haga clic derecho en el proyecto existente y seleccione "Agregar WSDL". Deje otras opciones como predeterminadas y haga clic en el botón "Aceptar".

Aserción de coincidencia de Xquery

Paso 3: Todas las operaciones se enumeran como se muestra a continuación.

Aserción de coincidencia de Xquery

Paso 4: Ahora agreguemos un Caso de prueba dentro del mismo conjunto de pruebas que habíamos creado para Pruebas el conversor de moneda.

Aserción de coincidencia de Xquery

Paso 5: Ingrese el nombre del caso de prueba y haga clic en el botón "Aceptar".

Aserción de coincidencia de Xquery

Paso 6: El caso de prueba se crea como se muestra a continuación.

Aserción de coincidencia de Xquery

Paso 7: Añada
un nuevo paso de prueba del tipo "Solicitud de prueba de jabón" como se muestra a continuación.

Aserción de coincidencia de Xquery

Paso 8: Ingrese el nombre del paso de prueba. Digamos: Proveedor_por_Ciudad, lo cual sería más significativo. Haga clic en "Aceptar".

Aserción de coincidencia de Xquery

Paso 9: Seleccione la Operación que nos gustaría validar. En este caso es 'MedicareSupplierSoap -> GetSupplierByCity”. Haga clic en Aceptar'.

Aserción de coincidencia de Xquery

Paso 10: Ingrese el nombre del caso de prueba y haga clic en "Aceptar".

Aserción de coincidencia de Xquery

Paso 11: El esquema XML de solicitud se mostrará como se muestra a continuación.

Aserción de coincidencia de Xquery

Paso 12: Ahora busquemos toda la información de proveedores de la ciudad de "Nueva York".

Para hacerlo, agregue el siguientewing líneas a su código.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

WSDL en la siguiente URL: http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Aserción de coincidencia de Xquery

Paso 13: Al ejecutar la prueba, recibimos la siguiente respuesta.

Aserción de coincidencia de Xquery

Paso 14: Digamos que necesitamos validar todo el número de proveedor. No podemos usar XPath Assertion porque necesitamos tener cientos de XPath Assertion. Por tanto, el uso de XQuery es inevitable en este caso.

XQuery Assertion nos ayuda a validar un grupo de respuestas XML que son de naturaleza repetitiva.

Aserción de coincidencia de Xquery

Paso 15: Ahora haga clic en 'Agregar una afirmación',

  1. Seleccione la "Categoría de afirmación": Contenido de propiedad en este caso.
  2. Seleccione el tipo de afirmación como 'Aserción XQuery'
  3. Haga clic en 'Agregar'.

Aserción de coincidencia de Xquery

Paso 16: De manera similar a la afirmación XPath, necesitamos declarar el espacio de nombres.

  1. Haga clic en el botón "Declarar" para permitir automáticamente que la interfaz de usuario de SOAP declare el espacio de nombres. Al hacer clic en el botón declarar, se mostrará al usuario una "ventana emergente" con el mensaje "declarar espacio de nombres desde el esquema". Haga clic en "Sí" para proceder como se muestra a continuación.

    Nota: Al presionar el "botón Declarar", es posible que termine con diferentes URL como declaración de espacio de nombres; sin embargo, el espacio de nombres de la ubicación real del servicio web es lo que se consideraría para la codificación.

    Aserción de coincidencia de Xquery

  2. Para recuperar todo el número de proveedor, debemos escribir una consulta XPath y la colocaremos dentro de las etiquetas y .
  3. Haga clic en 'Seleccionar de la actual' que se ejecutará a partir de la respuesta actual.
  4. Al hacer clic en "Seleccionar del actual", se enumeran todos los números de proveedor.
  5. Clic en Guardar'.
// Namespace declaration
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webservicex.net/';
declare namespace x = '';

// Placing the result in Myresult Tags

{
// Iterating through all the supplier number 
for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData

//Return all the Supplier number within ‘SupplierNumber’ Tags.
return {data($x/ns1:SupplierNumber)}
}

Aserción de coincidencia de Xquery

Paso 17: XQuery Assertion se ejecuta y muestra el resultado final en el panel 'Aserción' como se muestra a continuación. Ahora hemos agregado con éxito una aserción Xquery mediante la cual hemos validado toda la información del número del proveedor. Lo mismo se comparará con los datos reales cada vez que se envíe la solicitud al servidor web.

Nota: Los valores reales no se mostrarán. Si todos los valores reales son iguales a los valores esperados, entonces muestra VÁLIDO; de lo contrario, mostrará "Error".

Aserción de coincidencia de Xquery

¿Cuándo utilizar la afirmación incorporada?

  • Cuando una respuesta es corta y puede validarse utilizando una de esas afirmaciones incorporadas.
  • También podemos utilizar la aserción incorporada si la respuesta enviada desde el servidor web es siempre de naturaleza estática. Si es dinámico, no podremos afirmarlo utilizando aserciones incorporadas.
  • Cuando el uso de aserciones incorporadas, como aserciones de tiempo de espera y aserciones de seguridad, se vuelve inevitable.
  • Las afirmaciones incorporadas son bastante buenas para un uso único en el que no es necesario repetir las pruebas.

Opciones de afirmaciones

Las aserciones creadas se pueden controlar mejor con la ayuda del panel de control que se destaca a continuación.

Opciones de afirmaciones

Las aserciones creadas permiten a los evaluadores configurar followwing cosas de la herramienta de afirmacionesbox.

Optión Descripción

Opciones de afirmaciones

La Aserción seleccionada sube en el orden.

Opciones de afirmaciones

La afirmación seleccionada baja en el orden.

Opciones de afirmaciones

Elimina la afirmación seleccionada

Opciones de afirmaciones

Reconfigurar/editar la aserción seleccionada.
  • A continuación se muestran las funciones disponibles exclusivamente en la versión PRO de SOAP UI. La versión PRO también nos ayuda a agrupar aserciones para que podamos agregar una capa más de validación a las aserciones creadas.
  • Y: Todas las aserciones se evalúan como aserción VÁLIDA, lo que dará como resultado una condición de grupo PASADA. O: Al menos una de las aserciones dentro del grupo debe ser VÁLIDA para poder afirmar una condición de grupo PASADA.

  • La versión Pro también permite Clonación de afirmaciones: Esta opción permite a los evaluadores copiar una aserción en un paso de prueba diferente en el mismo proyecto o en uno diferente.
  • Deshabilitar/Habilitar aserciones: esta opción permite habilitar o deshabilitar cualquier aserción agrupada o desagrupada. Si una aserción está deshabilitada, aparece atenuada y cuando se ejecuta un caso de prueba, las aserciones deshabilitadas no se ejecutarán.
  • Desagrupar aserciones: cualquier aserción agrupada se puede desagrupar si los evaluadores deciden hacerlo.

Lista completa de métodos disponibles en varios tipos de afirmaciones

Mecanismo de afirmación

Descripción

CONTENIDO DE LA PROPIEDAD
contiene Busca la existencia de la cadena especificada. También admite expresiones regulares.
no contiene Busca la inexistencia de la cadena especificada. También admite expresiones regulares.
Coincidencia XPath Utiliza la expresión XPath para seleccionar el nodo de destino y sus valores.
Coincidencia de XQuery Utiliza una expresión Xquery para seleccionar contenido de la propiedad de destino.
Cumplimiento, Estado, Estándares
HTTP Descargar todos los recursos Valida el documento HTML después de la descarga y se mantiene válido para cualquier propiedad que contenga HTML.
Códigos de estado HTTP no válidos Verifica si la respuesta HTML contiene un código de estado que no está en la lista de códigos definidos.
No es culpa de SOAP Verifica si el último mensaje recibido no es una falla SOAP. Es muy obvio que solo se aplica a los pasos de prueba de SOAP.
Cumplimiento del esquema Verifica si el último mensaje recibido cumple con la definición de esquema estándar WSDL o WADL. Es válido para los pasos de prueba SOAP y REST.
Fallo de jabón Verifica si el último mensaje recibido es una falla SOAP. Es lo inverso de las afirmaciones de error "NO SOAP".
Respuesta SOAP Verifica si la última respuesta recibida es una respuesta SOAP válida y es válida únicamente para los pasos de solicitud de prueba SOAP.
Códigos de estado HTTP válidos Verifica si la respuesta HTML contiene un código de estado que esté en la lista de códigos definidos. Es lo inverso a la afirmación de "Códigos de estado HTTP no válidos".
Solicitud de direccionamiento WS Verifica si la última solicitud recibida contiene encabezados WS-Addressing adecuados.
Respuesta de direccionamiento WS Verifica si la última respuesta recibida contiene encabezados WS-Addressing adecuados.
Estado de seguridad WS Valida si el último mensaje recibido contiene encabezados WS-Security válidos y solo es válido para solicitudes SOAP.
Guión
Afirmación de guión Permite a los usuarios ejecutar un script personalizado para realizar validaciones definidas por el usuario.
SLA
SLA de respuesta Valida si el tiempo de respuesta de la última respuesta recibida estuvo dentro del límite definido.
JMS
Estado JMS Verifica si la solicitud JMS del paso de prueba se ha ejecutado correctamente y es válida para los pasos de prueba con un punto final JMS.
Tiempo de espera JMS Verifica si la respuesta JMS de un paso de prueba no tardó más que la duración especificada.
Seguridad
Exposición de información confidencial Verifica si el mensaje de respuesta no expone información confidencial sobre el sistema de destino. Podemos utilizar esta afirmación para los pasos de prueba REST, SOAP y HTTP.

DESCARGUE EL PROYECTO SOAPUI QUE CONTIENE LAS Afirmaciones ANTERIORES

Errores comunes y solución de problemas

Utilice el espacio de nombres correcto. El espacio de nombre debe ser la URL donde se encuentra el servicio web.

Si se produce un error al desarrollar una aserción de secuencia de comandos, use 'log.info' para imprimir el contenido de las variables.

Si havenNo obtuve el resultado deseado, verifique si se pasó una entrada válida en la solicitud.

Por ejemplo, en el conversor de moneda, si ingresa 'intA' como 'x' que no es un número entero, la salida arroja un código de error como 'SOAP-Client', lo que significa que el problema está en el parámetro que se pasa desde el lado del cliente.

Errores comunes y solución de problemas

Errores comunes y solución de problemas

Asegúrese de utilizar la sintaxis correcta al utilizar la aserción XPATH y XQuery. NO debe usar punto (.) en lugar de dos puntos (:) mientras usa la afirmación anterior. La sintaxis es //espaciodenombres:nombredeetiqueta y NO //espaciodenombres.nombredeetiqueta. Al hacerlo, es posible que termine recibiendo un mensaje que diga "NO coincide en la respuesta actual" aunque el nombre de la etiqueta sea correcto.

Errores comunes y solución de problemas