SoapUI: jugando con web services

24
321420

soapUI: jugando con web services

Indice

  1. Introducción a soapUI – Fast and Fun SOA Testing
    1. Introducción
    2. Instalar soapUI 3.0.1
    3. Ejemplo: probar un web service existente
    4. Características y funcionalidades de soapUI
    5. Conclusión

Introducción

soapUI es una aplicación muy versátil que nos permite probar, simular y generar código de servicios web de forma ágil, partiendo del contrato de los mismos en formato WSDL y con vínculo SOAP sobre HTTP. soapUI tiene dos distribuciones: soapUI freeware (GNU LGPL y opensource java) y soapUIPro (comercial), en versión de escritorio, online y plugin para varios IDE.

Introducimos esta herramienta en este tutorial, mostrando su instalación y un primer ejemplo de uso con un web service público. Por último comentamos las características principales de soapUI.

En adictosaltrabajo.com existen otros tutoriales que explican o utilizan soapUI:

Instalar soapUI 3.0.1

La página del producto es www.soapui.org, si bien los fuentes y binarios del proyecto se alojan en SourceForge.net, http://sourceforge.net/projects/soapui/. Descargamos la distribución más reciente (al escribir esto, la 3.0.1) en su versión freeware, mediante el enlace de su página web:

Descargar soapUI freeware opensource
Enlace de descarga de soapUI

Lo que nos llevará a la web de SourceForge e iniciará la descarga del fichero soapUI-x32-3_0_1.exe de tamaño 67.8 MB:

soapUI en sourceforge
Proyecto soapUI en SourceForge.net

Una vez en local, ejecutamos el instalador. Aceptamos el contrato de licencia:

Contrato de licencia de soapUI
Contrato de licencia GNU LGPL

Seleccionamos el directorio de instalación:

Directorio de instalacion de soapUI
Directorio de instalación de soapUI

Para utilizar el programa es suficiente con la instalación de los binarios de soapUI:

Instalar componentes de soapUI
Componentes de instalación de soapUI

Aceptando los siguientes pasos, comienza la copia de ficheros:

Instalacion de soapUI
Instalación de soapUI 3.0.1

Al finalizar el asistente, iniciamos la herramienta:

Distribucion de escritorio de soapUI
Distribución de escritorio de soapUI 3.0.1

Ejemplo: probar un web service existente

Hagamos un test simple a un servicio web existente para comprobar al correcta instalación y conocer las funcionalidades básicas. En internet encontramos directorios y recursos de web services que pueden utilizarse libremente y sin subscripción de pago, por ejemplo:

  • http://www.webservicex.net, servicios web listos para utilizar
  • http://xmethods.net, otro clásico
  • http://www.wsindex.org/Web_Services, servicios web y recursos relacionados

Vamos a utilizar el servicio Global Weather, cuyo endpoint es: http://www.webservicex.net/globalweather.asmx, para conocer las condiciones meteorológicas actuales de las principales ciudades del planeta.

Creamos un nuevo proyecto soapUI desde el menú File | New soapUI Project:

Nuevo proyecto de soapUI
Nuevo proyecto de soapUI

Completamos la siguiente información del proyecto:

  • Project Name: Tiempo meteorologico
  • Initial WSDL/WADL, dirección web o ruta de fichero donde se encuentra el descriptor del servicio web de trabajo. En este caso nos lo indican el la web del servicio Global Weather: http://www.webservicex.net/globalweather.asmx?wsdl
  • Create Request: activamos el checkbox de ‘Create sample requests for all operations?‘. soapUI creará un esqueleto de mensaje SOAP para invocar a los métodos del servicio web

Datos del proyecto de soapUI
Datos del proyecto de soapUI

Si la dirección del descriptor es correcta, soapUI lo recuperará:

Recuperando descriptor WSDL del web service
Recuperando el WSDL del web service

Y a continuación lo analizará. Si no hay errores sintácticos ni ciertas incoherencias semánticas, creará el proyecto con la siguiente estructura:

  • Nombre del proyecto
  • Dos interfaces, GlobalWeatherSoap12 y GlobalWeatherSoap. En este caso en particular el servicio web expone dos interfaces, cada una con una versión de SOAP distinta.
  • Dentro de cada interfaz, los metodos del servicio: GetCitiesByCountry y GetWeather
  • Dentro de cada método, un esqueleto de mensaje SOAP, con el nombre genérico Request 1

Proyecto de nuestro servicio web
Proyecto de nuestro servicio web

Haciendo soble click sobre Request 1 accedemos al mensaje de petición SOAP, el que enviaremos al servicio web. Sustituimos los caracteres ? por nuestros datos:

  • CityName: San Sebastian
  • CountryName: Spain

Mensaje de peticion al metodo GetWeather
SOAP Request al método GetWeather

Enviamos el mensaje al servicio pulsando en la fecha verde de la esquina izquierda. Tras unos instantes, recibimos el mensaje de respuesta SOAP que se mostrará a la derecha de la ventana anterior:

Respuesta SOAP con los datos solicitados
SOAP Response con el tiempo de San Sebastián registrado a las 8:30 p.m. de hoy

Si editamos el SOAP Request del método GetCitiesByCountry, para conocer por ejemplo las ciudades disponibles en Chile:

Ciudades disponibles para Chile
¿Qué ciudades de Chile podemos consultar?

Recibiremos en la respuesta un dataset con los valores: Arica, Balmaceda, Chile Chico, etc.:

Ciudades de chile con datos meteorologicos disponibles
Ciudades de Chile con datos del tiempo

Si pulsamos en la pestaña lateral Raw, podemos ver el mensaje del protocolo HTTP sobre el que viaja SOAP, con el payload y el mensaje en su cuerpo:

Mensaje HTTP en claro
Mensaje HTTP en claro

Finalmente mostramos un ejemplo de un mensaje de error. Si el mensaje de petición contiene datos no aceptados por el servicio web, o el mensaje SOAP tiene algún error que no permita ser analizado en el servidor, recibiremos un mensaje SOAP Fault. Vamos a forzar uno editando el SOAP Request anterior y modificamos la estructura XML del mensaje, cambiando por ejemplo web:CountryName y dejando web:Country:

Mensaje SOAP erroneo
Mensaje SOAP alterado

mensaje de respuesta del servicio:

SOAP Fault con mensaje de error de aplicacion
SOAP Fault con error de aplicación

El servicio web emite un mensaje de error, describiendo el tipo (SqlException de .NET al esperar pero no disponer del parámetro CountryName)

Características y funcionalidades de soapUI

Vista la funcionalidad básica, que es la generación de un proyecto para vincularnos con un servicio web en este caso ya existente, otras interesantes son:

Examinar detalles y validar interfaces

Podemos ver los detalles de cada interfaz expuesta por el servicio web. Para ello, en nuestro ejemplo anterior, pulsamos con el botón derecho sobre uno de los dos, por ejemplo GlobalWeatherSoap12:

soapUI Interface viewer
soapUI Interface viewer

Inicialmente obtenemos un resumen der servicio y operaciones:

soapUI overview
soapUI overview

En la pestaña WSDL Content podemos ver el descriptor y navegar por su árbol de nodos:

soapUI WSDL content
soapUI WSDL Content

Asimismo, en la pestaña WS-I Compliance, podemos validar si el descriptor WSDL cumple con el estándar WS-I Basic Profile de interoperabilidad del Web Services Interoperability Organization (WS-I). Iniciamos el análisis pulsando en el icono de fecha verde:

Analizando conformidad del WSDL respecto WS-I
Analizando conformidad del WSDL respecto del WS-I

El resultado emitido por el propio WS-I se muestra en la ventana, y su informe indica que el uso de SOAP 1.2 no es válido conforme el Basic Profile 1.1:

Informe de conformidad del WS-I BP
Informe de conformidad del WS-I Basic Profile 1.1

Generar casos de prueba funcionales

SOA promueve que todo web service sea probado exhaustivamente a nivel funcional. soapUI nos permite generar baterías de pruebas unitarias. La funcionalidad está disponible pulsando botón derecho sobre la interfaz a probar, y escogiendo la opción Generate TestSuite:

soapUI test suite
Batería de pruebas unitarias con soapUI

EL manual de soapUI nos muestra información detallada acerca de esta funcionalidad: http://www.soapui.org/userguide/functional/testsuites.html

Generar pruebas de rendimiento

De igual manera las pruebas de rendimiento de un servicio, por su naturaleza de ser un componente reutilizable por múltiples clientes, se hacen imprescindibles. Una vez creado un TestCase dentro de un TestSuite, podemos hacer botón derecho sobre el nodo Load Test (0) y crear un nuevo test de carga seleccionando New LoadTest:

Crear un test de carga
Crear un test de carga

Más información en: http://www.soapui.org/userguide/loadtest/index.html

Simular el coportamiento de un web service

Una característica fundamental de los servicios web es la separación de su definición y su implementación. con soapUI y el WSDL de un servicio, podemos exponer la interfaz en un endpoint en su servidor de aplicaciones jetty, aun no estando programada su lógica de negocio. soapUI, mediante su funcionalidad Web Service Mocking, nos permite simularlo con scripts de Groovy: http://www.soapui.org/userguide/mock/index.html

Generar código fuente java y .NET cliente y servidor de un webservice

La construcción de web services dirigidos por contrato a partir de su WSDL es una tarea habitual y soapUI, al igual que muchas otras herramientas y frameworks, permite hacerlo. El menú Tools nos muestra todas las posibilidades y entornos de generación de código fuente de web services cliente y proveedor:

Generacion de codigo del web service
Entornos de generación de código del web service

Cabe señalar que tales entornos deben instalarse por separado y configurar soapUI para integrarse con ellos y acceder a sus comandos de generación.

Generar documentación del servicio

La documentación de un servicio, además de la incluida en el WSDL, es una labor promovida por el área de Gobierno SOA. Asimismo, para los desarrolladores puede ser de gran utilidad. La generación automática de documentación en HTML es una opción disponible pulsando con el botón derecho sobre una interfaz del servicio y seleccionando Generate Documentation:

 

Generacion de documentacion con soapUI
Generar documentación con soapUI

El documento se generará en la carpeta seleccionada y se mostrará a continuación en un navegador:

Documentacion de un servicio web en HTML con soapUI
Documentación HTML de un servicio a partir de su contrato

Probar servicios basados en REST

A las opciones antes explicadas sobre servicios web con SOAP se añade la posibilidad de hacerlo sobre aquellos basados en REST. En este caso puede especificarse la URL del servicio o un documento WADL (Web Application Description Language). La documentación de referencia se encuentra en http://www.soapui.org/userguide/rest/index.html

Conclusión

Herramientas como soapUI aportan notable agilidad al desarrollo y prueba de servicios web. No sólo a los desarrolladores les es muy útil, sino también en nuestros trabajos de análisis y arquitectura para validar y distribuir requisitos mediante el contrato de interfaz.

24 COMENTARIOS

  1. Una consulta?, por casualidad sabes porque cuando activo el Monitor SOAP, y luego ejecuto el mismo requerimiento que antes me funcionaba, ya no funciona.
    Si me pudieses ayudar, lo agradecería mucho.
    Gracias.

  2. La verdad que felicito a quien escribió este tutorial, me parece excelente para los que no conocíamos la herramienta.
    JASM

  3. Buenos días amigo, podrás ayudarme en la creación de un mock para una web rest service. No tengo la idea de como comenzar.

    Gracias Anticipadas.

    • Hola Lorenzo, espero estes bien. Lograste crear el mock.?? estoy empezando a usar esta herramienta y debo aprender como crear mock con la misma. Me seria de gran ayuda la informacion que me puedas brindar al respecto.

      Saludos

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad