Elimine el estrés de las pruebas probando SLA de rendimiento de componentes en desarrollo

Las aplicaciones compuestas de hoy en día tienen cientos de puntos de fallo —pérdidas de memoria, excepciones de socket, conexiones abiertas—, todo agravado cuando servicios y API de terceros se agregan a la mezcla. Y sin mencionar la complejidad adicional de cuando la solicitud debe hacerse mediante el caos de un ESB complejo a una base de datos o sistema heredado en el backend que nunca está disponible para pruebas.  

Tampoco es suficiente hacer más pruebas unitarias. Sí, puede ayudar a los desarrolladores a encontrar más errores en su código, pero no le dirá cosas como si se malinterpretaron los requisitos o si resistirá condiciones que no se pensaron. Cada componente debe probarse y optimizarse antes de integrarlo en un sistema más grande. Los sistemas se comportan diferente cuando reciben carga y se los conecta con el resto de la infraestructura. Por ejemplo, podría descubrir que un caso de prueba que siempre funcionó con un usuario fallará con 100 usuarios simultáneos reales si dos de los usuarios obtienen información de la cuenta del otro del nivel medio.

Incluir presupuestos de rendimiento en el nivel de componentes permite que los equipos practiquen ingeniería de rendimiento de manera congruente con la realidad de arquitecturas de aplicaciones compuestas modernas. Cada servicio y componente debe cumplir el objetivo de rendimiento global de una aplicación. Los tiempos de respuesta o los niveles de servicio esperados se "presupuestan" o "descomponen" en cada componente. Los niveles de servicio de rendimiento se verifican y aplican en el nivel de componentes. ¿Pero CÓMO?

Aquí es donde un marco de pruebas moderno como DevTest de CA entra en juego. Las herramientas como DevTest de CA combinan la virtualización de servicios y un banco de pruebas basado en Java multiprotocolo en una sola solución. Los mismos casos de prueba que su equipo creó para pruebas de unidad, funcionales y de regresión pueden usarse para pruebas de carga y estrés que pueden ejecutarse continuamente. Las dependencias pueden virtualizarse usando carga de condiciones reales con increíble eficiencia o la necesidad de comprar hardware adicional para pruebas.

Como se muestra en el ejemplo más abajo de un cliente líder en telecomunicaciones, probar el rendimiento de una solución casi finalizada no es suficiente. En la línea superior, vemos la solución completa (compuesta por los pasos de pedido, búsqueda y precio) que regresa con un tiempo de respuesta deficiente de 4.0 segundos, que está muy por encima del segundo SLA de 2.1 segundos. ¿Qué sucede a continuación? Los equipos generalmente suman más hardware al problema, quizá intentando instalar más servidores, memoria, almacenamiento, etcétera en el laboratorio de pruebas, pero casi nunca consiguen resolver el problema raíz.

Debajo de la línea de tiempo de más arriba está el ejemplo del "después", que muestra cómo el equipo descompuso el SLA y le dio a cada parte de la solución su propio "presupuesto de rendimiento" para ajustar a nivel de componente. DevTest de CA permite que los equipos aíslen cada componente virtualizando los entornos de laboratorio circundantes (y los tiempos de respuesta esperados y observados) de otros componentes en el sistema. Usando este método, puede determinar, por ejemplo, que la app de precios está entregando exceso de tiempo a la solución general, y porque establece un presupuesto para el tiempo de respuesta, puede tomar medidas correctivas individuales para ajustar cada componente aislado, con mayor rapidez y costos de infraestructura mucho menores.

La virtualización de servicios captura y crea versiones realistas, altamente escalables y reactivas de servicios virtuales para cualquier sistema dependiente con el que el laboratorio de rendimiento deba conectarse, usando cualquier herramienta que usen actualmente para pruebas de carga, sin requerir codificación ni reconfiguración de nuevo hardware para representar esos sistemas en el laboratorio de rendimiento.

Una vez que se ha establecido un entorno de servicio virtual (o VSE), cualquiera en la organización de desarrollo y prueba puede obtener acceso al servicio virtual para usar cuando lo necesite. Sin hardware nuevo, sin solicitudes de acceso extra, sin esperar para iniciar una prueba o para que estos equipos múltiples tengan una forma muy actual y real de simular el resto de la aplicación para que las pruebas de rendimiento y carga puedan realizarse a nivel de componente, tal como si el componente se hubiera integrado al resto de la solución.

En CA Service Virtualization, se pueden configurar complementos para escala de respuesta, respuesta de lote y escala de tiempo de respuesta recurrente en el servicio virtual, para variar el rendimiento del servicio virtual durante un periodo. Las especificaciones de tiempo de respuesta especifican la latencia en la respuesta. Esto puede escalarse usando la escala de tiempo de respuesta durante la implementación o usando complementos. Las especificaciones de tiempo de respuesta o la escala de tiempo de respuesta altas pueden simular un comportamiento lento de la red.

Ejecutar miles de pruebas de rendimiento requiere de muchos datos de prueba. No solo necesita muchos datos, sino que también necesita muchos datos cargados con cosas como números de tarjeta de crédito, números de seguro social y otros datos de identificación personal. El uso de datos de producción para pruebas es muy costoso de ocultar e ineficiente para generar. También se arriesga a exponer datos confidenciales, y generalmente ofrece una cobertura deficiente (de 10 a 20 %).

La generación de datos de prueba sintéticos reduce en un 50 % el tiempo que se pierde cuando se buscan datos manualmente o se crean datos de prueba. También le permite mejorar los conjuntos de datos de prueba existentes o crear datos de prueba faltantes. Asimismo, los datos de prueba sintéticos, impulsados por requisitos, le permiten mejorar las pruebas, detectar defectos antes y mejorar la calidad de las pruebas.

Los datos de prueba sintéticos pueden insertarse directamente en un servicio virtual. Esto también elimina la necesidad de crear o mantener datos manualmente para un servicio virtual. La integridad referencial de los datos se mantiene creándola directamente desde una especificación API (por ejemplo, WSDL), que ayuda a crear entornos más estables sin dependencias entre sistemas. Además, pueden crearse entornos de prueba a pedido sin riesgos de incumplimientos, porque no se expone ningún dato en vivo.

En resumen, el rendimiento es tan importante como la funcionalidad en el mundo de hoy. El rendimiento a nivel de componente que se hace antes de la integración en vivo genera mayor confianza durante la integración y las pruebas de aceptación del usuario. No hay otra forma de garantizar que la aplicación realmente cumpla con un flujo de trabajo complejo y con sus requisitos de negocio. Los servicios virtualizados, los bancos de pruebas multiprotocolo y los datos sintéticos les brindan a los equipos de DevTest las herramientas para ejecutar y escalar con éxito pruebas de rendimiento a nivel de componente. CA Technologies ofrece muchas de las herramientas necesarias para automatizar y escalar las pruebas de rendimiento como parte de una iniciativa de pruebas continuas. Sus capacidades se han fortalecido aún más con la adquisición de BlazeMeter

Póngase en contacto con CA

Chat
¿Sobre qué le gustaría hablar?
Soporte
Contacto
Contáctenos 1-800-225-5224
Contáctenos