Vea cómo integrar fácilmente el análisis estático, las pruebas unitarias y otros métodos de prueba de software C y C++ en su canalización de CI/CD. Regístrese para la demostración >>

Beneficios de la virtualización de servicios más allá del stubbing y la simulación

Por Jeff Peeples

15 de septiembre de 2022

7  min leer

Haga más que burlarse y golpear. Aproveche todos los beneficios de la virtualización de servicios, que prueba una aplicación por completo, incluso si todos los componentes aún no están disponibles.

La virtualización de servicios (SV) es un método que utilizan los equipos de DevOps para simular componentes del comportamiento de una aplicación. Los componentes son API, bases de datos, redes, dispositivos y más. Los equipos usan SV porque algunos componentes del proyecto pueden no estar disponibles por varias razones, entre ellas:

  • Los desarrolladores aún los están desarrollando.
  • Pueden ser problemáticos para configurar.
  • Pueden ser de difícil acceso.
  • Los terceros pueden poseerlos.
  • Pueden ser costosos o restringidos.

La virtualización de servicios es como un simulador de vuelo para aplicaciones. El objetivo es que los probadores prueben la funcionalidad y las deficiencias durante el desarrollo y reconozcan los problemas potenciales, abordándolos lo antes posible para que el avión no se estrelle.

El impacto y los beneficios de la virtualización en los puntos de referencia de calidad y rendimiento

Lecciones de ING y Bank of America

El uso de SV ahorra tiempo, dinero, dolor de cabeza y frustración. Los equipos de DevOps no terminan con una actitud de "nosotros contra ellos" cuando el desarrollo se detiene mientras esperan que sus compañeros de equipo completen su parte.

Virtualización de servicios: entrar en los detalles

  • Un servicio virtual es un "doble de prueba". A menudo es un software como servicio (SaaS) y nunca funciona en proceso directamente con funciones o métodos.
  • Para crear servicios y activos virtuales, los desarrolladores pueden registrar el tráfico con una plataforma de virtualización de servicios en lugar de construir el patrón de interacción desde cero.
  • La virtualización de servicios suele admitir varios protocolos, como MQ, HTTP, TCP y otros. Un simulacro o talón a menudo admite solo uno.
  • Las herramientas de virtualización de servicios suelen presentar interfaces de usuario que permiten a los que no son desarrolladores utilizar las herramientas para realizar pruebas sin tener que conocer los detalles del proyecto.

Las herramientas de virtualización de servicios también pueden replicar aspectos no funcionales del sistema, como cargas de actividad intensa o conexiones y tiempos de respuesta lentos. Algunos servicios virtuales tienen un grupo de respuestas añadidas para los criterios de solicitud proporcionados y envían todas las demás solicitudes a un sistema de back-end operativo. Esto se llama stubbing parcial.

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

Al igual que los simulacros, la virtualización de servicios puede incluir comparadores de solicitudes complejas. Estos permiten que la prueba devuelva una respuesta para muchos tipos de solicitudes. Más allá de la simple simulación, la virtualización de servicios simula el comportamiento de un sistema cuando construye y devuelve respuestas basadas en atributos y datos de solicitud.

Comparación de stubs y simulacros

Los stubs y los simulacros realizan algunas de las mismas funciones que la virtualización de servicios pero, como observamos, no son tan completos ni tan flexibles.

¿Qué son los talones?

Un stub ejecuta mínimamente una interfaz y devuelve información codificada que está estrechamente relacionada con el conjunto de pruebas. Los equipos de prueba encuentran que los stubs son más útiles cuando el conjunto de pruebas no es complicado y retener la información codificada en el stub no es un problema.

Los desarrolladores escriben stubs, generalmente para uso personal, y normalmente no los comparten porque los stubs no pueden operar entre plataformas y debido a dependencias de infraestructura codificadas.

¿Qué son los simulacros?

Un simulacro es un "observador" de interfaz programable que verifica si el resultado del desarrollo cumple con las expectativas definidas por la prueba. Las herramientas de prueba crean simulacros empleando una biblioteca de terceros, por ejemplo, JMock, Mockito o WireMock.

Los evaluadores usan simulacros cuando tienen conjuntos de pruebas grandes, donde usar un código auxiliar no funcionará (porque cada prueba requiere una configuración de datos diferente) o conservarlos en un código auxiliar sería demasiado costoso. Los desarrolladores también escriben simulacros para su uso personal y, por lo general, no los comparten por la misma razón por la que no comparten stubs como se mencionó anteriormente.

Los beneficios y desafíos de la virtualización de servicios

Los muchos beneficios de usar la virtualización de servicios incluyen:

  • Establece una comunidad para que los equipos de desarrollo puedan comunicarse con sus compañeros de desarrollo y equipos de prueba y compartir artefactos. Los equipos también pueden intercambiar fácilmente activos de SV dentro de la empresa.
  • Fácil de aprender, incluso para personas que no son de TI, por lo que los desarrolladores pueden continuar con su trabajo mientras los evaluadores usan SV para probar todos los aspectos de un proyecto, con la consiguiente reducción de costos de mano de obra.
  • Admite muchos protocolos y puede registrar el tráfico. Idealmente, estas grabaciones de tráfico se pueden usar para generar automáticamente activos virtuales.
  • Reduce la dependencia de la disponibilidad de componentes de terceros y no hay cargos por servicio para bases de datos, API o servicios de terceros.
  • Reduce el tiempo de comercialización porque SV reduce las pruebas y, por lo tanto, el tiempo de desarrollo.
  • Aumenta la calidad porque las pruebas son más exhaustivas y precisas.

Algunas personas dicen que el uso de la virtualización de servicios presenta demasiados desafíos. Parasoft proporciona soluciones.

Desafío: “A diferencia de los testers o desarrolladores que crean un stub o un simulacro para probar el proyecto, ¿las herramientas SV no cuestan más?”

Solución: No usar SV complica las pruebas y aumenta los gastos. Vea cómo Parasoft aborda los problemas de complejidad, gastos y otros problemas potenciales aquí.

Desafío: “Los sistemas SV son grandes y pueden no ser adecuados para mi pequeña empresa”.

Solución: Las licencias simples y basadas en el valor de Parasoft se adaptan a las necesidades de su empresa y admiten implementaciones grandes y pequeñas con un mezcla de ofertas.

Desafío: “Para evitar una experiencia de usuario deficiente, ¿cómo puede mi empresa asegurarse de que el paquete de virtualización de servicios que elijo sea adecuado para mis necesidades?”

Solución: Los expertos de Parasoft explican los aspectos a considerar para seleccionar la herramienta de virtualización de servicios adecuada a los requerimientos de su empresa en este documento técnico.

¡Vea Parasoft Virtualize en acción!

Virtualización de servicios de API y datos

Los equipos de DevOps suelen utilizar dos tipos principales de SV:

  • Virtualización de servicios de datos
  • Virtualización de servicios de API

Virtualización De Datos

El mantenimiento y el aprovisionamiento de la base de datos suelen ser problemáticos. Los administradores de bases de datos pueden carecer de la capacitación que necesitan en estos días de operaciones basadas en la nube o las habilidades que necesitan para crear datos de prueba reutilizables de manera eficiente y efectiva. La virtualización del servicio de la base de datos permite a los evaluadores "desacoplar" las capas de la base de datos, lo que posteriormente permite a los miembros del equipo compartir y distribuir los recursos de las bases de datos según sea necesario.

El uso de la virtualización del servicio de la base de datos permite que los equipos continúen construyendo y probando con ejemplos de datos realistas, incluso si las fuentes de datos no están disponibles. Una vez que el desarrollador identifica la fuente de datos, especifica los atributos que incluye la fuente. Cuando una solicitud pasa al activo virtual, utiliza la fuente de datos simulada para producir respuestas específicas del entorno que se basan en factores de solicitud. A medida que el probador modifica los conjuntos de datos, las respuestas simuladas se actualizan automáticamente.

La virtualización de la base de datos reduce la fricción del equipo que a menudo causan las dependencias. El trabajo de desarrollo puede progresar aunque las fuentes de datos reales no estén en las instalaciones. Los equipos también pueden emplear una base de datos virtual para migrar de un servidor a otro sin interrupción. Esta es una oportunidad para ahorrar en los grandes gastos de infraestructura en los que suele incurrir la gestión tradicional de bases de datos.

Virtualización de servicios de API

Las API (interfaces de programación de aplicaciones) son intermediarios de software que permiten que dos aplicaciones se comuniquen entre sí. Cuando está en su PC interactuando en Facebook, o en su teléfono realizando una transacción en el sitio web de un banco o revisando las noticias, las API están en funcionamiento, ya sea por adelantado o detrás de escena. Las aplicaciones complejas pueden usar muchos tipos diferentes de API, lo que aumenta la dificultad de realizar pruebas exhaustivas.

Cuando los evaluadores utilizan la virtualización de servicios para probar las API, el desarrollo avanza rápidamente y la calidad aumenta. Las pruebas de rendimiento, el sandboxing de terceros y las pruebas de carga ayudan a los desarrolladores a comprender las capacidades completas de una API durante retrasos y situaciones de alta carga y tráfico. Los probadores pueden usar la virtualización de servicios para probar varios tipos de mensajes y diferentes protocolos, como JSON, JMS, WADL y REST. Pueden usarlo para pruebas de extremo a extremo, lo que proporciona validación de múltiples capas en una amplia variedad de puntos finales. Otras formas en que los desarrolladores usan la virtualización de servicios de API incluyen permitir a los evaluadores:

  • Vea cómo varios eventos y mensajes pasan a través de arquitecturas complicadas.
  • Realice pruebas para casos extremos, como grandes volúmenes de llamadas o mala conectividad.
  • Investigue fallas como tiempos de respuesta lentos, tiempo de inactividad o inaccesibilidad de una integración posterior.
  • Prueba de brechas de seguridad.
  • Pruebe incluso si algunos de los componentes del sistema no están disponibles.
  • Pruebe un concepto antes de construir una pieza.
  • Encuentra la mejor API con la que integrarte.

Virtualización de servicios de microservicios API

Las empresas han descubierto que las pruebas de microservicios mediante la virtualización de servicios son muy valiosas. Los microservicios son partes pequeñas de un sistema más grande que las empresas han lanzado de forma independiente o han cambiado o implementado en varios momentos. Cuando cada servicio proviene de un lugar y entorno diferentes, las pruebas son difíciles. Con la virtualización de microservicios de API, los probadores instalan solo el microservicio en el que están trabajando y luego virtualizan el resto, ahorrando horas de tiempo.

¡Vea Parasoft Virtualize en acción!

Reducción de dependencias

Reducir las dependencias es otra ventaja de las pruebas de la API de SV. Cuando los desarrolladores "se desplazan hacia la izquierda" e involucran a QA desde el comienzo de la creación del sistema, las pruebas de API de SV permiten que QA salte directamente y pruebe "trabajos en progreso" en una réplica exacta del entorno, incluso si los desarrolladores no han publicado los detalles del programa. Esto implica ejecutar pruebas automatizadas o pruebas continuas para obtener retroalimentación directa.

Potenciación de las pruebas de CI/CD

Asegurarse de que la aplicación funcione bien no es suficiente. También debe cumplir con los requisitos del sistema y los objetivos comerciales más amplios del proyecto, además de asegurarse de que todas las integraciones sean continuas y estables. La virtualización del servicio de API permite que el control de calidad realice pruebas incluso cuando los desarrolladores todavía están creando la API. Además, ayuda a los probadores de aplicaciones a asegurarse de que las API puedan integrarse correctamente con las API de terceros, incluso si esas aplicaciones aún no están listas para su lanzamiento.

Mejora de la transformación de DevOps

Para realizar CI/CD (integración continua/entrega continua), el objetivo de automatizar el 80 % de las pruebas es óptimo. Probar las API es muy importante porque ayuda a garantizar que toda la canalización siga funcionando correctamente después de que el equipo agregue nuevas funciones. Esto incluye tanto las API externas como las internas. Las operaciones y el desarrollo se integran cada vez más, por lo que los bucles de retroalimentación y los lanzamientos son más frecuentes. Pero cuando estos equipos solo ejecutan conjuntos de pruebas de interfaz de usuario, los bucles de retroalimentación pueden romperse. La virtualización de servicios de API permite a los equipos de DevOps simular dependencias desde el principio para que puedan implementar pruebas automatizadas a medida que avanza el desarrollo.

Diseños iterativos

Si su entorno de diseño es iterativo, considere la virtualización de servicios. Le permite experimentar rápidamente con nuevas ideas y enfoques mientras evita construir toda la API. El resultado es un método Agile para ver si las nuevas colaboraciones y funciones funcionan, sin grandes inversiones en tiempo y recursos.

Aceleración de las pruebas de interfaz de usuario

La virtualización de servicios permite a los equipos describir integraciones de interfaz de usuario comunes con paquetes web como SOA y AJAX. Esto les permite ejecutar pruebas de IU en cualquier lugar, en cualquier momento y sin interrupciones. Los equipos pueden simular entornos externos, lo que permite un mayor control sobre los datos que devuelven los servicios web. Además, los equipos pueden incluso crear y probar integraciones de interfaz de usuario antes de que los servicios web estén disponibles.

Simulación de API frente a virtualización de servicios

La simulación de API imita los componentes del software para que los desarrolladores puedan probar la operatividad. Las funciones de la burla suelen ser específicas del contexto. En otras palabras, las funciones imitan una respuesta de comportamiento para satisfacer un requisito de desarrollo particular. Además, la simulación de API aísla solo una parte individual de la aplicación. Es demasiado simplista y obliga a los desarrolladores a crear nuevas interfaces, lo cual es complicado.

Los talones son igualmente simplistas e incómodos. El uso de simulacros y stubs consume más tiempo y tiene una eficacia limitada en comparación con la virtualización de servicios de API.
La virtualización de servicios de API produce un entorno replicado realista y con muchas más funciones completas. Beneficios incluidos:

  • Más flexibilidad porque no está vinculado a un contexto o datos específicos.
  • Los desarrolladores pueden usar API SV durante la producción y las pruebas.
  • Reutilizables.
  • Se puede automatizar.
  • No requiere probar scripts o clases.

Ejemplos de virtualización de servicios

Ejemplo 1. Su equipo está trabajando en una aplicación heredada grande y compleja con muchas dependencias. La cobertura de la prueba actual es baja, en particular cuando las dependencias del sistema no están disponibles de manera constante.

La virtualización de servicios le permite registrar el tráfico cuando las dependencias estén disponibles. Como resultado, el equipo puede probar más tarde con servicios virtuales si reproduce el tráfico. Esto reduce el impacto de la el tiempo de inactividad de las dependencias para el equipo y los probadores.

Ejemplo 2. Su equipo está trabajando en una arquitectura de tipo microservicios. Un departamento tiene 10 probadores y 20 desarrolladores. El grupo está a cargo de entregar 70 pequeñas aplicaciones, que forman un producto.

Los equipos de trabajo prueban las aplicaciones de forma individual y aislada. Si bien el sistema CI/CD de su equipo funciona bien, el entorno exterior no es ágil. Sus API son lentas y, a menudo, no están disponibles, lo que dificulta la configuración de datos de prueba.

Para resolver el problema, cada equipo que interactúa con terceros usa herramientas SV y los evaluadores de aceptación las usan durante la compilación de CI. Los desarrolladores también los usan para pruebas exploratorias manuales. Luego, el equipo usa las herramientas en la compilación de integración principal que ejecuta todas las aplicaciones. Finalmente, los equipos de prueba de rendimiento utilizan las herramientas SV en las pruebas de rendimiento de pila completa.

Resumen

Mejor que los simulacros y los resguardos, la virtualización de servicios es útil para su empresa porque permite realizar pruebas continuas, es más compartible y reutilizable. Cuando se agrega a su flujo de trabajo de CI/CD, SV reduce los costos y acorta el tiempo de comercialización.

Comience a eliminar las restricciones en su entorno con Virtualize

Por Jeff Peeples

Jeff Peeples es un Gerente de Producto Senior en Parasoft, liderando la dirección de la plataforma funcional para SOAtest, Virtualize y CTP. Jeff tiene una amplia experiencia en la definición de soluciones y el desarrollo de hojas de ruta para las industrias empresariales, incluidas la energía, las tecnologías financieras y los viajes / hotelería.

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