Seminario web destacado: MISRA C++ 2023: todo lo que necesita saber | Vea ahora

¿Qué es la virtualización de servicios? Herramientas y ejemplos de prueba

Logotipo del cubo de Parasoft 300x300
7 de septiembre de 2021
4 min leer

La virtualización de servicios se ha convertido en un componente vital de las pruebas de software. Continúe para aprender cómo puede usar la virtualización de servicios para obtener un fácil acceso a los componentes que impiden el desarrollo y las pruebas.

Definición de virtualización de servicios

Como componente crítico de muchas de las estrategias de prueba de nuestros clientes, tendemos a recibir muchas preguntas sobre la virtualización de servicios. Aquí hay algunas explicaciones.

Virtualización de servicios proporciona a los equipos un fácil acceso a los componentes restringidos que impiden el desarrollo y las pruebas. Esto generalmente se manifiesta como restricciones ambientales, en las que se requieren componentes que técnicamente están fuera del alcance de las pruebas para habilitar la funcionalidad completa de un extremo a otro.

Pruebe en cualquier momento y en cualquier lugar con la solución de virtualización de servicios adecuada

Con la virtualización de servicios, puede eliminar estas restricciones simulando esas dependencias posteriores e intercambiando la funcionalidad real con un comportamiento emulado. Cuando se hace correctamente, el sistema se comporta como si el componente real estuviera disponible.

Por lo tanto, puede eliminar las restricciones de programación al proporcionar acceso ubicuo a un entorno de prueba emulado preciso. Y puede eliminar los cuellos de botella del proceso proporcionando acceso rápido a sistemas dependientes en evolución, no disponibles o de difícil acceso. Como se indica en la entrada de virtualización de servicios de Wikipedia, estos sistemas dependientes podrían ser:

  • No completado aún
  • Sigue evolucionando
  • Controlado por un tercero o socio
  • Disponible para pruebas solo en capacidad limitada o en momentos inconvenientes
  • Difícil de aprovisionar o configurar en un entorno de prueba
  • Necesario para el acceso simultáneo de diferentes equipos con una configuración de datos de prueba variada y otros requisitos
  • Uso restringido o costoso para pruebas de carga y rendimiento

La entrada de Wikipedia continúa describiendo esto bien:

En lugar de virtualizar sistemas completos, virtualiza solo porciones específicas de comportamiento dependiente críticos para la ejecución de tareas de desarrollo y prueba. Esto proporciona la lógica de aplicación suficiente para que los desarrolladores o evaluadores obtengan lo que necesitan sin tener que espere a que el servicio real se complete y esté disponible.

Por ejemplo, en lugar de virtualizar una base de datos completa (y realizar toda la gestión de datos de prueba asociada, así como configurar la base de datos para cada sesión de prueba), usted monitorea cómo la aplicación interactúa con la base de datos, luego emula el comportamiento de la base de datos relacionada consultas que se pasan a la base de datos, los conjuntos de resultados correspondientes que se devuelven, etc.).

¿Por qué es importante la virtualización de servicios?

Para lograr calidad rápidamente, es esencial tener acceso ilimitado a un proveedor confiable y entorno de prueba realista. Es importante reconocer que un entorno de prueba completo incluye la aplicación bajo prueba (AUT) y todos sus componentes dependientes, como API, servicios de terceros, bases de datos, aplicaciones y otros puntos finales.

La virtualización de servicios permite a los equipos de DevTest obtener acceso a un entorno de prueba completo, que incluye todos los componentes críticos del sistema dependientes, así como alterar el comportamiento de esos componentes dependientes de formas que serían imposibles con un entorno de prueba por etapas, lo que le permite probar antes, más rápido y de manera más completa. También le permite aislar diferentes capas de la aplicación para la depuración y las pruebas de rendimiento.

Cómo elegir la solución de virtualización de servicios adecuada

Obtener acceso a un entorno de prueba completo

Con los rápidos ciclos de desarrollo iterativos de hoy, los equipos de DevTest necesitan acceso temprano a un entorno de prueba completo para:

  • Valide la funcionalidad de cada historia de usuario tan pronto como se complete
  • Valide el impacto de cada historia de usuario tan pronto como se complete
  • Realice pruebas más completas al principio del proceso
  • Complete sus propias tareas de DevTest incluso si otro equipo está implementando o evolucionando un componente dependiente en paralelo con la iteración actual

La virtualización de servicios puede proporcionar acceso a cualquier componente dependiente que falte o esté restringido en su entorno de prueba: servicios de terceros, API, bases de datos, mainframes, ESB y otros componentes que se comunican mediante protocolos de mensajería comunes. Los principales candidatos para la virtualización de servicios incluyen componentes dependientes que son ambos:

  • Moderadamente (o más) difícil de acceder para realizar pruebas, por ejemplo, debido a conflictos de programación, tarifas de acceso, licencias, límites geopolíticos, etc.
  • Moderadamente (o más) complejo de configurar para pruebas

Por ejemplo, un servicio interno puede ser fácilmente accesible desde un entorno de prueba por etapas y simple de configurar. Por otro lado, una cola de mensajes compleja probablemente sea más difícil de soportar en un entorno de prueba por etapas y considerablemente más difícil de configurar para la prueba. En el extremo del espectro, un sistema de mainframe o ERP tendrá múltiples restricciones asociadas con el acceso a DevTest, así como distintas limitaciones en su capacidad para configurarlo para la prueba. Aprovechar la virtualización de servicios garantiza que se pueda acceder a un entorno de prueba bajo demanda. Elimina las restricciones de acceso y reduce la sobrecarga asociada con la configuración repetida. Los equipos pueden realizar pruebas virtualmente sin límites.

Alterando el comportamiento de los componentes dependientes

La virtualización de servicios también le permite controlar el comportamiento de los componentes dependientes. Es muy difícil alterar la configuración de la red o el hardware asociado con cada componente dependiente del AUT. También es bastante común enfrentarse a entornos de prueba por etapas que exhiben un rendimiento más lento del que encontraría en producción.

Usando la virtualización de servicios, tiene un mayor control sobre cómo responden las dependencias. Esto le brinda acceso bajo demanda a una gama mucho más amplia de comportamientos de dependencia (como un simulador de vuelo). Como resultado, puede evaluar el riesgo de una versión candidata de forma más rápida y precisa.

Por ejemplo, puede simular un comportamiento de dependencia diferente para:

  • Compruebe cómo responde su AUT a las variaciones de rendimiento en las dependencias. ¿Pueden los usuarios completar transacciones principales incluso cuando una dependencia experimenta una latencia alta? ¿Los escenarios de baja latencia exponen problemas de simultaneidad?
  • Aísle el componente bajo prueba para comprender si un comportamiento inesperado se debe a problemas con las dependencias o a su AUT
  • Configure el entorno de prueba completo en diferentes estados y valide la seguridad y resistencia de su AUT en esos contextos
Cómo adoptar y escalar la virtualización de servicios

Modificar los datos de los componentes dependientes

Los servicios virtuales no necesitan responder siempre con los datos reales en el sistema real. De hecho, existen muchos beneficios al proporcionar datos inesperados de sus servicios virtuales. Los servicios virtuales están separados de sus fuentes de datos, lo que permite una flexibilidad mucho mayor en la generación de datos de respuesta que se adapten a las necesidades de los diferentes equipos, tales como:

  • Los equipos de desarrollo que desean protegerse contra respuestas mal formadas o comportamientos negativos en su aplicación pueden generar respuestas de servicio que generen un comportamiento negativo.
  • Los equipos de prueba que desean validar cómo el servicio maneja las respuestas no nominales pueden devolver caracteres ilegales en la respuesta.
  • Los equipos de rendimiento que desean comprender el impacto de las respuestas de gran carga útil pueden proporcionar respuestas más grandes de lo normal de los componentes dependientes.

Al simular los diferentes datos de servicio en este tipo de situaciones, puede obtener mucha más flexibilidad con sus pruebas.

Beneficios prácticos de la virtualización de servicios

Por supuesto, solo hemos arañado la superficie aquí. Hay muchos beneficios de implementar la virtualización de servicios en su organización. Las empresas que han adoptado la práctica de prueba de vanguardia de la virtualización de servicios informan menos defectos, una mejor cobertura de prueba, mayores tasas de ejecución de prueba y mucho menos tiempo dedicado a la prueba.

Vea cómo su equipo puede crear simulaciones de servicios confiables y predecibles con Parasoft Virtualize.

Publicación relacionada + Recursos