Logotipo de Parasoft

¿Qué es la virtualización de servicios? Una guía completa

Saltar a la sección

Descripción general

Es posible que los servicios que llama tu aplicación no estén disponibles para realizar pruebas cuando los necesites. Virtualización de servicios Crea servicios virtuales estables que replican la cosa real.

¿Qué es la virtualización de servicios?

La virtualización de servicios es una función de las pruebas de software que permite emular las dependencias de una aplicación. Permite a los equipos de DevOps utilizar simulaciones generadas por computadora de las dependencias de los servicios en lugar de las reales, lo que les permite realizar pruebas con frecuencia y con anticipación, y reducir costos en diversas situaciones. Esto incluye partes clave del sistema distribuido que faltan: por ejemplo, cuando los componentes dependientes son inaccesibles, el escalado de entornos de capacitación y la creación de escenarios de incorporación de socios.

El uso de servicios virtuales con fines de prueba es más rentable que el uso de entornos de producción para esos fines. Las pruebas de API con simulación de puntos finales eliminan las posibilidades de perder datos, evitan el uso de los costosos servidores que el programa actual necesita para funcionar y permite a la empresa renunciar a las tarifas de licencia excesivas. Esto da como resultado procedimientos de prueba rápidos, precisos y menos engorrosos.

Los equipos pueden integrar la virtualización de servicios en prácticas de pruebas automatizadas para las pruebas de integración continua que exigen los flujos de trabajo de DevOps.

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

Las empresas se benefician de varias maneras al implementar la virtualización de servicios para pruebas de software.

Icono de flecha hacia abajo azul

Reducir o eliminar los tiempos de inactividad de las pruebas

La virtualización de servicios garantiza pruebas continuas sin interrupciones, ya que simula dependencias no disponibles o inestables. Cuando un servicio en vivo deja de estar disponible durante las pruebas, la automatización de pruebas continúa a medida que se ejecutan los casos de prueba en el servicio virtualizado. Esto reduce los defectos en etapas finales y evita retrasos en el lanzamiento causados ​​por obstáculos del entorno.

Icono de flecha de tendencia ascendente azul

Aumentar la productividad del desarrollo

La virtualización de servicios permite el desarrollo paralelo y entornos de prueba virtuales dedicados. Como resultado, los equipos pueden trabajar con independencia de las dependencias externas y eliminar las limitaciones derivadas de los entornos de prueba compartidos, acelerando así los ciclos de prueba.

Icono de trabajo en equipo

Acelerar el aprovisionamiento de recursos

Los equipos optimizan la gestión de recursos y los procesos de prueba con entornos virtuales, que pueden clonarse, compartirse, implementarse y destruirse rápidamente según sea necesario. Ahorran tiempo, esfuerzo y costos derivados de la configuración y el mantenimiento de entornos de prueba en vivo.

Icono de tiempo y costos azul

Reducir los costos de capital y operativos

La virtualización de componentes elimina la necesidad de múltiples entornos físicos, lo que reduce los costos de infraestructura y pruebas. Además, evita los cargos por acceder a ciertas dependencias de terceros durante las pruebas.

Icono de descarga eléctrica acelerada azul

Acelerar el tiempo de comercialización

Las pruebas tempranas y frecuentes con virtualización de servicios permiten resolver problemas con mayor rapidez y acortar los ciclos de desarrollo. Gracias a ello, las organizaciones comercializan sus productos con mayor rapidez..

Soluciones Gear con icono de marca de verificación azul

Aumentar la calidad del software

La virtualización de servicios facilita la realización de pruebas frecuentes y exhaustivas durante el desarrollo, lo que mejora la calidad del software. La capacidad de simular escenarios de fallo en entornos virtuales ayuda a identificar y resolver problemas de forma temprana para obtener mejores versiones de software.

Formas de utilizar la virtualización de servicios

Hay varias áreas que pueden aprovechar la virtualización de servicios para mejorar la productividad.

Desarrollo ágil / paralelo

Las prácticas de software modernas involucran a varios equipos de operaciones que trabajan en partes del entorno por separado y luego las juntan a través de API para formar el producto final. Cuando esperan el acceso a una parte de la aplicación, los equipos de DevOps pueden usar la virtualización de servicios para simular esas partes faltantes para que puedan continuar con el desarrollo de su aplicación.

Test de rendimiento

La virtualización de servicios facilita las pruebas de rendimiento mediante la simulación de sistemas dependientes que podrían no estar disponibles, ser costosos o difíciles de escalar en entornos reales. Permite a los equipos crear servicios virtuales estables y predecibles que pueden replicar diversas condiciones de rendimiento, como latencia, rendimiento y escenarios de error. Esto permite a los evaluadores identificar cuellos de botella de rendimiento en las primeras etapas del ciclo de desarrollo y validar el comportamiento de la aplicación bajo diferentes cargas.

Prueba de gestión de datos

Las empresas tienen grandes cantidades de datos que forman una parte importante de sus interacciones con sus clientes, por ejemplo, un banco. Esta información puede incluir PII (información de identificación personal), como números de seguro social. No es apropiado permitir que los probadores tengan acceso a fuentes de datos de producción reales para sus fines. La virtualización de servicios brinda a los equipos de prueba la capacidad de generar datos de forma sintética, por ejemplo, números de seguro social enmascarados y con el formato adecuado, que luego pueden usar para probar funcionalidades.

Formación de los empleados

Las empresas pueden utilizar la virtualización de servicios para capacitar a los empleados en una aplicación que utilizarán en el día a día. Esto evita que los aprendices tengan que capacitarse en la versión de producción real del software, que puede estar vinculada a múltiples aplicaciones complicadas, y evita que modifiquen o eliminen datos confidenciales.

Incorporación de socios

Las empresas a menudo exponen las API a los clientes o socios comerciales, incluidos los entornos de prueba para facilitar la integración. Mantener estos entornos de prueba para socios tiene un costo, al igual que con cualquier otro entorno. La virtualización de servicios es una excelente técnica para ofrecer a los socios acceso a entornos sandbox de sus API para integrarse más fácilmente a un costo menor.

Prácticas recomendadas para la virtualización de servicios

Hay varias áreas que pueden aprovechar la virtualización de servicios para mejorar la productividad.

  • Virtualice sólo lo que importa.
    No es necesario crear todo, ni siquiera gran parte, del comportamiento del sistema que se está virtualizando. Solo se necesitan implementar las transacciones esenciales. Y no se debe intentar emular solicitudes ad hoc. Si se encuentra con un caso de prueba incorrecto a partir de una entrada errónea, se puede generar una transacción virtualizada que lo replique.
  • Reconozca los casos de prueba que está apoyando.
    Incluya comportamientos en su servicio virtual solo después de comprender cómo interactúan con ellos los casos de prueba. Su plan de pruebas debe definir con precisión qué transacciones incluir en la virtualización. Permita que el plan de pruebas determine qué transacciones virtualizará.
  • Pruebe el sistema correcto.
    Asegúrese de crear escenarios de prueba que validen el sistema que está probando, no la virtualización del servicio. Simule una réplica ideal del componente dependiente. Al mismo tiempo, la virtualización debe ser lo suficientemente inteligente como para permitir que el cliente finalice un flujo de trabajo. Por ejemplo, al realizar pruebas de interfaz de usuario para un banco, el servicio virtual solo necesita representar correctamente un retiro o depósito, sin necesidad de verificar el saldo de la cuenta.

Ejemplo de virtualización de datos

Una empresa de comercio electrónico que desarrolla un nuevo sistema de gestión de pedidos se integra con varias API de terceros para el procesamiento de pagos, los envíos y la gestión de inventario. Durante las pruebas de integración, el equipo de control de calidad necesita datos de prueba realistas que representen diversos escenarios de pedidos, incluyendo casos extremos como artículos agotados, envíos parciales y pagos fallidos. Sin embargo, depender de los datos de producción plantea problemas de privacidad. Además, la coordinación con socios externos para obtener las condiciones de prueba adecuadas genera retrasos significativos.

Mediante la virtualización de servicios, el equipo simula los servicios dependientes y genera datos de prueba sintéticos que reflejan transacciones del mundo real, sin necesidad de acceder a datos de producción confidenciales.

Utilizan el tráfico registrado para inferir automáticamente modelos y restricciones de datos, y luego generan diversos conjuntos de datos que abarcan una amplia gama de escenarios. Los mensajes basados ​​en JSON se gestionan con vistas intuitivas en árbol, y el enmascaramiento de datos garantiza el cumplimiento de la privacidad. Dado que cada equipo puede crear y gestionar sus propios conjuntos de datos de prueba de forma independiente, las pruebas ya no se retrasan por el aprovisionamiento de datos ni se ven afectadas por la contaminación de los datos de prueba, lo que acelera los ciclos de lanzamiento y mejora la cobertura y la calidad de las pruebas.

Gráfico que compara el flujo de trabajo sin virtualización de servicios frente a con virtualización de servicios

Cómo comenzar con la virtualización de servicios

La virtualización de servicios es una herramienta potente para simular dependencias en las pruebas y el desarrollo de software. Puedes empezar así:

  1. Comprende los conceptos básicos. La virtualización de servicios implica la creación de versiones virtuales de componentes como API, bases de datos o servicios de terceros. Esto permite realizar pruebas y desarrollar sin depender de los sistemas reales.
  2. Elige la herramienta adecuada. Hay varias herramientas disponibles con funciones únicas. Elige la que mejor se adapte a las necesidades de tu equipo.
  3. Configure su entorno. Instale la herramienta elegida y configúrela para emular los servicios que necesita. Por ejemplo, puede crear recursos virtuales y respondedores para simular comportamientos específicos.
  4. Definir escenarios. Identifique los escenarios que desea probar. Esto podría incluir servicios no disponibles, respuestas lentas o condiciones de error específicas.
  5. Integre con su flujo de trabajo. Incorpore la virtualización de servicios en sus procesos de desarrollo y pruebas. Esto facilita la integración continua y las pruebas iniciales.
  6. Aprende y experimenta. Muchas herramientas ofrecen tutoriales y guías. Por ejemplo, Parasoft Virtualize proporciona instrucciones paso a paso para crear servicios virtuales.

Herramientas de virtualización de servicios

Hay dos tipos diferentes de herramientas de virtualización de servicios.

  1. Herramientas ligeras. Herramientas gratuitas y de código abierto como Traffic Parrot y Mockito ofrecen a los principiantes una forma sencilla y específica de explorar los beneficios de la virtualización de servicios. Los equipos suelen adoptarlas para proyectos específicos. Sin embargo, estas soluciones ligeras suelen tener capacidades limitadas y poca usabilidad para usuarios sin conocimientos técnicos. A pesar de ser gratuitas inicialmente, suelen resultar costosas con el uso a largo plazo debido a las necesidades de mantenimiento y personalización.
  2. Herramientas empresariales. Al ofrecer funciones robustas para usuarios avanzados, las herramientas de virtualización de nivel empresarial facilitan la colaboración en equipo y una integración fluida en los flujos de trabajo de CI/CD. Estas soluciones destacan por gestionar grandes volúmenes de tráfico manteniendo el rendimiento, lo que las hace ideales para entornos DevOps. Si bien son más eficaces que las alternativas gratuitas, requieren inversión, por lo que los equipos deben evaluar cuidadosamente sus necesidades antes de adoptarlas.

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

La mejor manera de elegir una solución de virtualización de servicios adecuada para su organización es:

  1. Examina las diferentes capacidades que tu equipo puede requerir.
  2. Identificar soluciones que incluyan esas capacidades.
  3. Piense en las necesidades de capacidad futuras.
Capacidades

Funcionalidades sin scripts

Permite crear servicios virtuales sin escribir código o generarlos automáticamente a partir de grabaciones de tráfico. Los evaluadores y otros usuarios sin experiencia en desarrollo que no estén familiarizados con las implementaciones de servicios pueden comprender, crear y compartir fácilmente servicios virtuales. Esto facilita una adopción más rápida, aumenta la colaboración en equipo y permite una utilización más amplia.

Creación rápida de servicios virtuales antes de que el servicio real esté disponible

Permitir el desarrollo de servicios virtuales junto con servicios reales posibilita el desarrollo paralelo, evitando la desincronización de los procesos ágiles. Para lograrlo, es importante buscar soluciones que admitan la creación de servicios virtuales a partir de archivos de definición de servicio. Esto permite a los equipos desviar las pruebas a la izquierda mediante la creación de un servicio virtual de la dependencia aún no desarrollada, necesaria en su flujo de trabajo de pruebas.

Correlación de respuesta inteligente

Permite que los servicios virtuales respondan de forma diferente según las solicitudes entrantes. Garantiza que el comportamiento preciso y dinámico del servicio se adapte a las solicitudes específicas. Los diferentes tipos de correlación de respuesta a considerar incluyen:

  • Correlación de implementación para garantizar que cada servicio virtual procese solo los mensajes destinados a él, distinguiendo los mensajes entre distintos oyentes, como HTTP y Kafka.
  • Correlación de mensajes para enrutar mensajes hacia la lógica de respuesta adecuada según patrones, como distinguir entre operaciones de “agregar cuenta” y operaciones de “actualizar cuenta”.
  • Correlación de fuentes de datos para generar respuestas dinámicas según la información clave de la solicitud. Por ejemplo, responder de forma diferente a distintas cuentas de clientes.

Desacoplar los datos de los respondedores para servicios virtuales dinámicos

Mejore la flexibilidad de la virtualización abstrayendo la lógica de los datos. Permiten que los servicios virtuales se conecten a diversas fuentes de datos, como Excel, CSV y bases de datos en tiempo real, para realizar búsquedas en tiempo real, lo que facilita respuestas dinámicas y en constante evolución.

Capacidad de reutilizar servicios

Fomenta la colaboración entre equipos, promueve el consenso sobre comportamientos de servicios clave y ahorra esfuerzo al simular comportamientos de servicios compartidos una vez y reutilizarlos en múltiples servicios virtuales.

Un marco de extensibilidad personalizado

Admite múltiples lenguajes de scripting, como Java, Python, JavaScript y Groovy, para adaptarse a diversas experiencias y preferencias. También ofrece extensibilidad para gestionar nuevos formatos y protocolos de mensajes, lo que permite a las organizaciones adaptarse eficientemente a los estándares del sector o a implementaciones personalizadas.

Soporte para autenticación y seguridad

Valida la seguridad de la capa de transporte, como los certificados SSL. También admite diversos mecanismos de autenticación, como OAuth, autenticación básica y Kerberos. Además, negocia y emula la seguridad de la capa de mensajes, incluyendo el cifrado de carga útil, SAML y firmas. Estas capacidades garantizan servicios virtuales realistas y ayudan a identificar fallos en los mecanismos de autenticación o seguridad.

Entornos de rendimiento configurables

Permite realizar pruebas de rendimiento precisas mediante la emulación de dependencias fuera de alcance. Los servicios virtuales permiten realizar pruebas de rendimiento con mayor rapidez sin depender únicamente de entornos completos. Las soluciones deben admitir retrasos de rendimiento ajustables, tanto estáticos como dinámicos, por ejemplo, reduciendo el rendimiento con un mayor uso.

Capacidades

Funcionalidades sin scripts

Permite crear servicios virtuales sin escribir código o generarlos automáticamente a partir de grabaciones de tráfico. Los evaluadores y otros usuarios sin experiencia en desarrollo que no estén familiarizados con las implementaciones de servicios pueden comprender, crear y compartir fácilmente servicios virtuales. Esto facilita una adopción más rápida, aumenta la colaboración en equipo y permite una utilización más amplia.

Creación rápida de servicios virtuales antes de que el servicio real esté disponible

Permitir el desarrollo de servicios virtuales junto con servicios reales posibilita el desarrollo paralelo, evitando la desincronización de los procesos ágiles. Para lograrlo, es importante buscar soluciones que admitan la creación de servicios virtuales a partir de archivos de definición de servicio. Esto permite a los equipos desviar las pruebas a la izquierda mediante la creación de un servicio virtual de la dependencia aún no desarrollada, necesaria en su flujo de trabajo de pruebas.

Correlación de respuesta inteligente

Permite que los servicios virtuales respondan de forma diferente según las solicitudes entrantes. Garantiza que el comportamiento preciso y dinámico del servicio se adapte a las solicitudes específicas. Los diferentes tipos de correlación de respuesta a considerar incluyen:

  • Correlación de implementación para garantizar que cada servicio virtual procese solo los mensajes destinados a él, distinguiendo los mensajes entre distintos oyentes, como HTTP y Kafka.
  • Correlación de mensajes para enrutar mensajes hacia la lógica de respuesta adecuada según patrones, como distinguir entre operaciones de "agregar cuenta" y operaciones de "actualizar cuenta".
  • Correlación de fuentes de datos para generar respuestas dinámicas según la información clave de la solicitud. Por ejemplo, responder de forma diferente a distintas cuentas de clientes.

Desacoplar los datos de los respondedores para servicios virtuales dinámicos

Mejore la flexibilidad de la virtualización abstrayendo la lógica de los datos. Permiten que los servicios virtuales se conecten a diversas fuentes de datos, como Excel, CSV y bases de datos en tiempo real, para realizar búsquedas en tiempo real, lo que facilita respuestas dinámicas y en constante evolución.

Capacidad de reutilizar servicios

Fomenta la colaboración entre equipos, promueve el consenso sobre comportamientos de servicios clave y ahorra esfuerzo al simular comportamientos de servicios compartidos una vez y reutilizarlos en múltiples servicios virtuales.

Un marco de extensibilidad personalizado

Admite múltiples lenguajes de scripting, como Java, Python, JavaScript y Groovy, para adaptarse a diversas experiencias y preferencias. También ofrece extensibilidad para gestionar nuevos formatos y protocolos de mensajes, lo que permite a las organizaciones adaptarse eficientemente a los estándares del sector o a implementaciones personalizadas.

Soporte para autenticación y seguridad

Valida la seguridad de la capa de transporte, como los certificados SSL. También admite diversos mecanismos de autenticación, como OAuth, autenticación básica y Kerberos. Además, negocia y emula la seguridad de la capa de mensajes, incluyendo el cifrado de carga útil, SAML y firmas. Estas capacidades garantizan servicios virtuales realistas y ayudan a identificar fallos en los mecanismos de autenticación o seguridad.

Entornos de rendimiento configurables

Permite realizar pruebas de rendimiento precisas mediante la emulación de dependencias fuera de alcance. Los servicios virtuales permiten realizar pruebas de rendimiento con mayor rapidez sin depender únicamente de entornos completos. Las soluciones deben admitir retrasos de rendimiento ajustables, tanto estáticos como dinámicos, por ejemplo, reduciendo el rendimiento con un mayor uso.

Además de las capacidades mencionadas anteriormente, debe evaluar los flujos de trabajo optimizados y las tecnologías compatibles.

Flujos de trabajo optimizados

  • Creación y mantenimiento automático de servicios virtuales
  • Creación de activos impulsada por IA
  • Gestión y generación de datos de prueba
  • Reutilización de datos
  • Conmutación por error al sistema en vivo
  • Emulación de comportamiento con estado

Tecnologías soportadas

  • Virtualización de API REST
  • Virtualización de API SOAP
  • Mensajería API asincrónica
  • Virtualización MQ/JMS
  • Virtualización de IoT y microservicios
  • Virtualización de bases de datos
  • Virtualización de páginas web
  • Virtualización de transferencia de archivos
  • Marco principal y longitud fija
  • Virtualización EDI
  • FIX, Swift y otros protocolos

Vea el valor de Parasoft Virtualize

Descubra el ROI potencial que su organización podría experimentar con la solución de virtualización de servicios de Parasoft.

Calcule sus ahorros »

Imagen abstracta de un gráfico circular y análisis que demuestra Parasoft Jtest
Imagen de banner rectangular con principalmente azul oscuro y esquinas en ángulo en azul estándar. En la esquina superior derecha hay un collage de íconos de productos Parasoft para DTP, prueba C/C++, CTP, Jtest, Selenic, Insure++, prueba C/C++ CT, dotTEST, Virtualize y SOAtest.

Mejore sus pruebas de software con las soluciones de Parasoft.

Solicitar una demo