X
BLOG

Cómo utilizar la virtualización con estado para engañar a los gerentes de producto para que se centren en lo que es importante

Cómo utilizar la virtualización con estado para engañar a los gerentes de producto para que se centren en lo que es importante Tiempo de leer: 5 minutos
Cuando se trata de usuarios finales, no les importa la locura de back-end que tiene lugar en su sitio. La principal preocupación de un usuario es hacer lo que sea que vinieron a hacer en la página web, sin importar la secuencia de pasos necesarios para llegar allí. Un servicio virtual que pueda simular este comportamiento permitirá realizar pruebas de un extremo a otro más temprano, mejorar la cobertura de todos los requisitos de la lógica empresarial y realizar demostraciones de productos eficaces para los gerentes de producto.

En una de nuestras revisiones de sprint menos glamorosas, uno de los gerentes de producto mostró frustración con la demostración de nuestro equipo, ya que solo pudimos mostrar las funciones / servicios recientemente implementados individualmente y no el flujo de trabajo de un extremo a otro. El razonamiento de esto fue simplemente porque aún no se había implementado suficiente funcionalidad para vincular los datos entre los diferentes servicios. Para esa historia de usuario en particular, al gerente de producto no le importaba ver las piezas individuales del rompecabezas, quería ver las piezas juntas como un todo: la lógica empresarial.

Por lo tanto, al ser una empresa que fabrica herramientas de prueba de software, usé uno de ellos para darle a nuestro gerente de producto lo que quería. Y desde entonces, hemos aprovechado la virtualización de servicios (¿no sabe qué es eso? Lea más sobre virtualización de servicios) en muchas de nuestras demostraciones y en nuestro flujo de trabajo general. La virtualización de servicios nos permite utilizar servicios virtuales para representar servicios no disponibles que todavía están en desarrollo por otros equipos que trabajan en diferentes cadencias de sprint. Nos permite plantar cara a los “talones inteligentes” que exhiben un comportamiento de dependencia realista o un comportamiento completamente ficticio para satisfacer nuestras necesidades. Al simular las porciones de nuestras demostraciones que no están disponibles, podemos ofrecer demostraciones de gestión de productos que muestran flujos de trabajo completos para obtener la retroalimentación que necesitamos, sin atascarnos en las piezas que están fuera de alcance.

Virtualización de servicios con la herramienta CRUD del repositorio de datos

Virtualizar las llamadas de servicio individuales es bastante fácil, pero garantizar que esas llamadas individuales se comporten en consecuencia como parte de un sistema completo es otra cosa. El tema se vuelve más interesante cuando algunos de esos servicios requieren que se mantengan datos persistentes entre llamadas. Cuando se trata de datos persistentes, es esencial que el servicio virtual administre los datos en los diferentes estados y simule realmente el comportamiento del servicio real para representar con mayor precisión la lógica comercial detrás de la aplicación. A esto lo llamamos "virtualización con estado" y puede leerlo todo en nuestro blog sobre agregando vida a la virtualización de servicios con pruebas de transición de estado y estado. Aquí es donde entra en juego la herramienta CRUD del repositorio de datos.

Parasoft Virtualize (nuestra solución de virtualización de servicios) tiene una función llamada herramienta CRUD del repositorio de datos. La herramienta CRUD (crear, leer, actualizar, eliminar) del repositorio de datos se creó para manejar el problema de persistencia de datos que a menudo se asocia con los servicios web que requieren una transición de estado.

Considere la experiencia tradicional del carrito de compras. Digamos que un sistema de carrito de compras se compone de 3 servicios web: el servicio de inventario, el servicio de carrito y el servicio de pago. Cada uno de estos servicios tiene su propio conjunto de datos, pero sus registros comparten un elemento o atributo (ID de inventario, ID de carrito, ID de transacción) que debe respetarse para pasar al servicio posterior. Además del elemento compartido, el registro de artículos en el carrito, su monto y el precio total calculado deben mantenerse durante toda la experiencia de compra para completar el proceso de pago.

Una solución mínima sería virtualizar un escenario fijo donde un usuario busca un artículo estático, agrega el artículo al carrito y finalmente completa el pago. Sin embargo, sabemos que las compras en línea pueden ser más complejas. Cuando el servicio real se intercambia con el servicio virtual, el comportamiento debe ser fluido y transparente para todos los demás servicios que interactúan con él. Por lo tanto, no podemos asumir que este será el único escenario que se ejecutará contra el servicio virtual.

Un usuario puede decidir agregar un artículo diferente, actualizar el artículo original o eliminarlo por completo en un acto repentino de descontento o fatiga de compra. El comportamiento humano es impredecible. La herramienta CRUD del repositorio de datos nos permite simular esta imprevisibilidad creando y modificando registros sobre la marcha y mantenerlo entre las acciones del usuario. Esto nos permite cumplir con cualquier secuencia de eventos que se lance al servicio virtual con facilidad. Cualquier aritmética o lógica adicional será manejada por la herramienta sin esfuerzo.

Aparte de nuestras demostraciones de sprint, tuve el privilegio de ayudar en dos proyectos separados este año donde las capacidades de la herramienta CRUD del repositorio de datos demostraron ser increíblemente valiosas. Déjame guiarte a través de ellos.

Estabilización de los datos del entorno dinámico durante las pruebas de rendimiento

Se requirió una prueba de rendimiento para una aplicación que se integraba con varios servicios de terceros. El equipo de desarrollo ya tenía uno o dos registros estáticos que utilizaron para validar que la aplicación se comportaba como se esperaba durante el transcurso de su prueba. Sin embargo, para que la prueba de rendimiento sea válida, los datos y las acciones realizadas en la prueba deberían ser aleatorios con alta variabilidad, para simular adecuadamente un escenario del mundo real. El estado de los conjuntos de datos individuales debía ser coherente entre todos los servicios individuales, incluidos los de terceros. Habría sido bastante simple para el equipo de desarrollo inyectar nuevos registros de base de datos en cada servicio de terceros dependiente, pero desafortunadamente, el acceso a los entornos sandbox conllevaba un alto costo y una plétora de posibles dolores de cabeza.

El equipo pudo implementar con éxito su prueba de rendimiento utilizando la virtualización de servicios y la herramienta Data Repository CRUD. Cualquier registro que no existiera en el servicio virtualizado durante el tiempo de ejecución sería creado en su estado inicial por la herramienta en una configuración de "captura todo". Luego, el servicio virtual usaría el registro recién creado para responder con éxito a la solicitud y modificarlo durante la vida útil de la prueba. La configuración fue sorprendentemente sencilla y garantizó un flujo de extremo a extremo real y confiable para cada usuario único generado por la herramienta de prueba de rendimiento.

Inyectando datos en tiempo real en un sistema bajo prueba

El segundo caso fue inusual, pero ciertamente divertido de virtualizar. El caso involucró probar una aplicación que funcionaba con un sistema de registro de vehículos estatal. Cada vez que se agregaba un nuevo VIN (número de identificación del vehículo) a la aplicación, se enviaban llamadas asincrónicas al sistema de registro para solicitar la información completa del vehículo. Si el VIN no existiera en el sistema, respondería como no registrado. Desafortunadamente, el sistema de registro tenía una política obligatoria que requería que una persona insertara manualmente la información del nuevo vehículo (sí, una persona viva que respiraba). El sistema respondería de manera diferente si la información del VIN solicitado no se registrara después de una cierta cantidad de solicitudes.

Este comportamiento general es común para los servicios asincrónicos. Esto es esencialmente el equivalente a un niño que pregunta "¿ya llegamos?" durante un viaje por carretera, una pregunta que uno normalmente ignoraría a menos que realmente se estén acercando.

Una vez que la persona registró manualmente la información, el sistema respondería con la carga útil de confirmación. El objetivo aquí era simular el sistema de registro de vehículos para probar la aplicación de forma independiente. El desafío fue determinar cómo configurar el servicio virtual para responder de manera diferente a una solicitud idéntica en diferentes momentos. Para lograr esto, utilizamos la herramienta CRUD del repositorio de datos para llevar el recuento de la cantidad de llamadas realizadas con la misma solicitud. Una vez que se alcanzaba un número de recuento en particular, la herramienta CRUD actualizaba el estado del registro para que el activo virtual respondiera de manera diferente. La herramienta CRUD también se configuró para crear un nuevo registro para cualquier VIN solicitado al azar dentro de una ventana de tiempo esperada para simular el proceso de registro manual. Algo que inicialmente parecía difícil se logró fácilmente con la herramienta adecuada.

Resumen

La verdad es que cuando se trata de un usuario final o un gerente de producto, la locura de back-end que tiene lugar durante una simple acción en una página web es insignificante. La principal preocupación de un usuario es que todo lo que vinieron a hacer en la página web se hará con éxito sin importar la secuencia de pasos necesarios para llegar allí. Un servicio virtual que pueda simular este comportamiento permitirá realizar pruebas de principio a fin, una cobertura mejorada de todos los requisitos de lógica empresarial y demostraciones de productos eficaces. Con mejoras recientes en Parasoft VirtualizeLa interfaz de usuario de la herramienta CRUD y el diseño de configuración, ahora es mucho más fácil manejar escenarios complejos y proporcionar la funcionalidad del mundo real que sus partes interesadas, gerentes de producto y evaluadores están buscando, lo antes posible.

Elección de la solución de virtualización de servicios adecuada

Escrito por

Omar Ramírez

Omar es ingeniero de SQA en Parasoft.

Reciba las últimas noticias y recursos sobre pruebas de software en su bandeja de entrada.

Prueba Parasoft