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.
- Contenido de la propiedad
- Estรกndar de estado de cumplimiento
- Script
- SLA
- JMS
- Seguridad

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".
Paso 2: Ahora,
- Seleccione la categorรญa de afirmaciรณn.
- Seleccione el tipo de afirmaciรณn.
- Haga clic en 'Agregar'
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.
Paso 4: Al agregarlo, se ejecuta inmediatamente la aserciรณn y muestra si es VรLIDA o NO VรLIDA.
Paso 5: Ahora digamos que cambiamos el contenido de "Contiene afirmaciรณn en SoapUI" a "47" y vemos quรฉ sucede.
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รณ.
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",
- Seleccione la categorรญa de afirmaciรณn.
- Seleccione el tipo de afirmaciรณn: en este caso, "NO contiene".
- Haga clic en 'Agregar'
Paso 2: Validemos si la cadena 'intA' existe en la respuesta. Ingrese la cadena "FromCurrency" y haga clic en "Aceptar".
Paso 3: Tan pronto como se agrega una afirmaciรณn, se ejecuta y muestra el resultado. Hasta ahora hemos agregado dos afirmaciones, por lo tanto, ambas se ejecutan y muestran el resultado.
Paso 4: Ahora cambiemos el contenido de la "Aserciรณn no contiene" y veamos quรฉ sucede. Comprobaremos la inexistencia de la cadena โAddResultโ.
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.
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",
- Seleccione la categorรญa de afirmaciรณn.
- Seleccione el tipo de afirmaciรณn: en este caso, "XPath Match"
- Haga clic en 'Agregar'
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.
declarar espacio de nombres jabรณn =โhttp://schemas.xmlsoap.org/soap/envelope/โ;
declarar espacio de nombres ns1=โhttp://tempuri.org/โ;
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.
Paso 4: Hasta el momento,
- Despuรฉs de declarar los espacios de nombres, ingresamos el XPath del nodo XML que necesitamos validar.
- Necesitamos hacer clic en 'Seleccionar de actual' para que el valor actual sea el valor esperado.
- El valor actual se muestra al usuario y podemos modificarlo si es necesario.
- Clic en Guardar'.
Paso 5: La afirmaciรณn agregada en SoapUI se mostrarรก como se muestra a continuaciรณn.
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 cualquiera de los dos Groovy secuencias de comandos o JavaScript Para la creaciรณn de scripts de aserciones. La tรฉcnica de creaciรณn de scripts se adopta para desarrollar un marco de trabajo para probar SOAP. Las aserciones de creaciรณn de scripts se utilizan en las siguientes circunstancias.
Los scripts permiten al usuario realizar algunas operaciones antes y despuรฉs de ejecutar un TestCase utilizando los mรฉtodos de configuraciรณn y desmontaje respectivamente. La configuraciรณn es un procedimiento que se ejecuta antes de ejecutar un mรฉtodo en particular (por ejemplo, creaciรณn e inicializaciรณn de objetos), mientras que el desmontaje es un procedimiento que se ejecuta despuรฉs de ejecutar el mรฉtodo (por ejemplo, destrucciรณn de objetos y limpieza). Esta funciรณn no estรก disponible en otros tipos de aserciones 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.
Haga clic en el botรณn "Agregar afirmaciรณn" como se muestra a continuaciรณn.
Paso 2: Ahora seleccione la categorรญa Afirmaciรณn.
- En este caso es Script.
- Seleccione Aserciรณn de script SoapUI y no habrรก subtipos asociados.
- Haga clic en 'Agregar'.
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.
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 Guiรณn o Groovy Guiรณn antes de intentar escribir su 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"}
- Haga clic en el botรณn "Ejecutar" para activar la ejecuciรณn.
- 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).
- Se muestra la informaciรณn "Se aprobรณ la aserciรณn de script". 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.
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.
Paso 6: Ahora
- Seleccione el conjunto de pruebas en el รกrbol del Navegador.
- Haga clic en el botรณn "Ejecutar"
- Los resultados se mostrarรกn para todo el conjunto de pruebas.
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".
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".
Paso 3: Todas las operaciones se enumeran como se muestra a continuaciรณn.
Paso 4: Ahora agreguemos un Caso de prueba dentro del mismo conjunto de pruebas que habรญamos creado para Pruebas el conversor de moneda.
Paso 5: Ingrese el nombre del caso de prueba y haga clic en el botรณn "Aceptar".
Paso 6: El caso de prueba se crea como se muestra a continuaciรณn.
Paso 7: Agregar la extensiรณn de
un nuevo paso de prueba del tipo "Solicitud de prueba de jabรณn" como se muestra a continuaciรณn.
Paso 8: Ingrese el nombre del paso de prueba. Digamos: Proveedor_por_Ciudad, lo cual serรญa mรกs significativo. Haga clic en "Aceptar".
Paso 9: Seleccione la Forma para Operaciรณn que queremos validar. En este caso es 'MedicareSupplierSoap -> GetSupplierByCity'. Haga clic en 'Aceptar'.
Paso 10: Ingrese el nombre del caso de prueba y haga clic en "Aceptar".
Paso 11: El esquema XML de la solicitud se mostrarรก como se muestra a continuaciรณn.
Paso 12: Ahora busquemos toda la informaciรณn de proveedores de la ciudad de "Nueva York".
Para ello, agregue las siguientes 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
Paso 13: Al ejecutar la prueba, recibimos la siguiente respuesta.
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.
Paso 15: Ahora haga clic en 'Agregar una afirmaciรณn',
- Seleccione la "Categorรญa de afirmaciรณn": Contenido de propiedad en este caso.
- Seleccione el tipo de afirmaciรณn como 'Aserciรณn XQuery'
- Haga clic en 'Agregar'.
Paso 16: De manera similar a la afirmaciรณn XPath, necesitamos declarar el espacio de nombres.
-
Haga clic en el botรณn "Declarar" para permitir automรกticamente que SOAP UI declare el espacio de nombres. Al hacer clic en el botรณn de declaraciรณn, se mostrarรก al usuario una ventana emergente con el mensaje "Declarar el espacio de nombres desde el esquema". Haga clic en "Sรญ" para continuar 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.
- Para recuperar todo el nรบmero de proveedor, debemos escribir una consulta XPath y la colocaremos dentro de las etiquetas y .
- Haga clic en 'Seleccionar de la actual' que se ejecutarรก a partir de la respuesta actual.
- Al hacer clic en "Seleccionar del actual", se enumeran todos los nรบmeros de proveedor.
- 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)} }
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: No se mostrarรกn los valores reales. Si todos los valores reales son iguales a los valores esperados, se mostrarรก "VรLIDO"; de lo contrario, se mostrarรก "Error".
ยฟ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.
Las afirmaciones creadas permiten a los evaluadores configurar las siguientes cosas desde la caja de herramientas de afirmaciones.
| Opciรณn | Descripciรณn |
|---|---|
|
|
La Aserciรณn seleccionada sube en el orden. |
|
|
La afirmaciรณn seleccionada baja en el orden. |
|
|
Elimina la afirmaciรณn seleccionada |
|
|
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.
- 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 deshabilitar o habilitar cualquier aserciรณn agrupada o no agrupada. Si una aserciรณn estรก deshabilitada, aparece en gris 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.
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.
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. |
| Script | |
| 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 no ha obtenido el resultado deseado, verifique si se pasa 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.
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.














































