Simplifique los flujos de trabajo de cumplimiento con el nuevo C/C++test 2024.2 y la automatización impulsada por IA | Regístrese ahora
Saltar a la sección
¿Qué es la virtualización de servicios? Herramientas y ejemplos de prueba
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.
Saltar a la sección
Saltar a la sección
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 enteros, virtualiza solo fragmentos específicos de comportamiento dependiente que son 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 esperar 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 podría ser fácilmente accesible desde un entorno de prueba por etapas y fácil de configurar. Por otro lado, una cola de mensajes compleja probablemente sea más difícil de mantener 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 mainframe o ERP tendrá múltiples restricciones asociadas con el acceso a DevTest, así como limitaciones claras en su capacidad para configurarlo para pruebas. Aprovechando la virtualización de servicios garantiza que un entorno de prueba sea accesible bajo demanda. Elimina las restricciones de acceso y reduce la sobrecarga asociada con la configuración repetida. Los equipos pueden realizar pruebas prácticamente 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, esto es solo el comienzo. Existen muchos beneficios de implementar la virtualización de servicios en su organización. Empresas que utilizan la virtualización de servicios reportar menos defectos, mejor cobertura de pruebas, mayores tasas de ejecución de pruebas y considerablemente menos tiempo dedicado a las pruebas.