Taller ofrecido por Gastón Marichal y Marcos Manicera (ambos de Uruguay) durante la 3ra edición del Argentesting 2018
La interacción con servicios web puede ser todo un desafío durante la construcción de software, aún más si estos son externos y no tenemos control sobre su funcionamiento.
El taller tiene como objetivo introducir al tester en el concepto de virtualización de servicios web y exponer cómo mediante esta actividad se puede sortear ciertos problemas que normalmente aparecen a la hora de diseñar y ejecutar las pruebas de software.
En este taller veremos típicos problemas que pueden surgir con los servicios web y cómo la virtualización puede ser una gran herramienta para hacerles frente en las etapas de desarrollo y testing.
Luego del taller, los participantes contarán con el conocimiento teórico/práctico para virtualizar servicios web utilizando la herramienta SoapUI y poder manipular las respuestas que dicho servicio deberá resolver.
La metodología del taller es una introducción y capacitación teórica de la temática del taller, la presentación de la herramienta y primeros pasos en la virtualización de servicios, un bloque de capacitación práctica guiado por una serie de ejercicios con la herramienta, un cierre teórico donde se presentan recomendaciones y buenas prácticas sobre este tipo de actividades.
Conocimientos previos requeridos
Conocimientos de test y desarrollo de software básicos como protocolo HTTP, Testing de integración, XML, JSON
Requerimientos
Para el taller el participante debe traer su computadora con:
La última versión de SoapUI (edición free) instalada: https://www.soapui.org/downloads/soapui.html
De forma opcional el servidor Apache Tomcat instalado: https://tomcat.apache.org/download-90.cgi
También es recomendable algún editor de texto como NotePad ++
Gastón Marichal
https://www.linkedin.com/in/gmarichal/
Marcos Manicera
https://www.linkedin.com/in/mmanicera/
Argentesting 2018 - 503 – SERVICE UNAVAILABLE: La virtualización de servicios como salvavidas
1. 503 - Service Unavailable:
La virtualización de
servicios como salvavidas
Gastón Marichal
gmarichal@genexusconsulting.com
@gamarichal
21 y 22 de mayo,
2018
www.testinguy.org
#testinguy
@testinguy
Marcos Manicera
mmanicera@genexusconsulting.com
@marcosmanicera
2. Agenda:
• Contexto y motivación
• Expectativa Vs. Realidad
• Virtualizando nuestro primer servicio
• Demos
• Ejercicios prácticos
• Buenas practicas y recomendaciones
6. Situación real
Error HTTP 503
Service unavailable
Error HTTP 401
Unauthorized
Servicio en
desarrollo
Mi
Aplicación
Servicios pagos
7. Consecuencias
Retrasos y tiempo ocioso
Aumenta el esfuerzo de coordinación
Incertidumbre en el desarrollo y testing
Menos control y cobertura de pruebas
No se puede paralelizar actividades
8. ¿Cómo romper mi dependencia
con servicios externos no
disponibles?
9. Virtualización (Mocking)
Replicar el comportamiento de un objeto real
creando una copia virtual con sus mismas
características.
Servicio realCopia virtual
25. Respuestas estáticas
Útiles para contextos simples
Varias respuestas distintas por operación
Cambiar respuesta fácilmente
Permite cambiar el Dispatch Mode
26. Respuestas estáticas – Dispatch Mode
o Alterar la forma que
selecciona la respuesta
o Programación
o Secuencial
o Aleatorio
GASTON
Dejenmé que les cuenta como comenzó todo esto de la virtualización para mi…
Queriendo simular un delay… Si correcto un simple y puntual delay entre la comunicación de 2 sistemas.
Ocurria que si el web service demoraba mas de 30 segundos en responderle a nuestro sistema, dejaba datos inconsistentes.
Debido a esto fue que encontramos a la virtualización de servicios como alternativa para estos problemas.
GASTON
Lo que si es seguro y no es nada nuevo lo que les voy a contar es que las aplicaciones ya no funcionan aisladas
Por el contrario, cada día están mas y mas conectadas!!
Con Redes sociales (Facebook, Instagram, twitter, etc.)
Con Servicios en la nube (Maps, Clima, sist. Bancarios, etc.)
Con Otras aplicaciones o sistemas comerciales (internos y externos, entes estatales, etc.)
La idea de esta charla es ver los problemas que puedo tener al trabajar con servicios web y como la virtualización puede ayudarme a solucionarlos.
MARCOS
La situación más “feliz” o la ideal es que cuando desarrollemos y probemos este tipo de aplicaciones, contemos con que todos los servicios que esta utiliza (internos, externos) APIs tercearizadas, etc. Funcionen correctamente y
Podamos trabajar con ellos de forma fluida y sin esfuerzo.
Por ejemplo, consumirlo con alguna herramienta, analizarlo para desarrollar nuestra aplicación.
Bueno todos acá sabemos que esto es una utopía….
En el mejor de los casos nos conformamos con tener acceso a un backEnd de test o a la Base de Datos no?
Y nos encontramos con algunos de estos problemas…
MARCOS
MARCOS
Se generar retrasos debido a que mis desarrolladores o Testers no pueden realizar sus actividades porque estos servicios no están disponibles.
GASTON
Entonces…
Que alternativas tengo para romper con esas dependencias a los sistemas externos, los cuales sin ellos no puedo desarrollar/testear mi aplicación.???
GASTON
GASTON
MARCOS
MARCOS
MARCOS
MARCOS
La herramienta para crear los mock o servicios virtuales será SoapUI, y lo que vamos a hacer es ver diferentes posibilidades que tenemos para crear estos mock.
MARCOS
Primero que nada, la idea es que podamos trabajar tanto con servicios SOAP como REST por lo que vamos a ver ejemplos con ambas tecnologías..
Mostrar los 2 Servicios web que vamos a trabajar, uno REST y otro SOAP
Describr ambos para tener una idea del context de trabajo.
MARCOS
MARCOS
La WSDL se puede cargar via URL por el servicio (pasando el parametron ?WSDL al final de la direccion)
Tambien se puede cargar desde un archive .XML
MARCOS
MARCOS
MARCOS
MARCOS
Bien, hasta el momento pudimos crear y configurar nuestro mock para que escuche en la dirección y puesto que nosotros queramos.
Ahora es tiempo de manipular las respuestas que necesitemos que nuestro servicio devuelva.
Las mismas pueden ser respuestas estáticas, es decir devuelven un valor fijo siempre (a fuego) o Dinámicas si necesitamos un mock mas intelgiente que responda en base a ciertos inputs o condiciones como puede ser un archivo, la propia peticion, una base de datos o lógica programada (Scripting).
GASTON
Siempre que se invoque, devolverá el mismo valor, se pueden armar varias respuestas estáticas y seleccionar cual queremos que devuelva.
Siempre que se invoque, devolverá el mismo valor, se pueden armar varias respuestas estáticas y seleccionar cual queremos que devuelva.
GASTON
GASTON
MARCOS
Evitar caer en “Virtualizar todos los servicios”, no todos los servicios generan las mismas complicaciones o tienen fallas, muchas veces caemos en virtualizar todo por si acaso y terminamos consumiendo tiempo que podrìa haber sido invertido en otras tareas (Ej.: Mas pruebas)
Priorizar puede ser una gran herramienta para definir que servicios deberían virtualizarse: Puede ser según…
Frecuencia de uso
Complejidad
Accesibilidad
Valor para el negocio
Dejar claro que tan ‘real’ será el comportamiento del mock, si con una respuesta estática alcanza o es necesario otro mecanismo más inteligente de respuesta (BDD).
Los mocks pueden ser reutilizados en varios escenarios, pueden compartirse fácilmente entre el equipo (desarrolladores, testers) y mantenerlos actualizados es facil.
Por eso en lugar de crearlos y desecharlos, se debería considerar estos mocks como un activo mas dentor del equipo y que todos sepan que existe y que puede ser una alternativa rapida para mostrar algo sin mayor complicaciones.
La prueba de integración es necesaria,
Los servicios reales tiene la última palabra para evaluar si la comunicación es 100% exitosa.
Los mock puede usarse en fases tempranas de desarrollo y testing pero siempre asegurarse que al final el sistema se comunique bien con el servicio real.
GASTON
Volviendo al tema del Delay…
Veamos que tan difícil es simular un delay con un mock.