En este momento estás viendo Visión general acerca de las Pruebas de Rendimiento

Visión general acerca de las Pruebas de Rendimiento

  • Autor de la entrada:
  • Categoría de la entrada:performance

¿Tu software funciona correctamente, pero se «cuelga» cuando hay demasiados usuarios? La calidad no es solo que el botón haga clic, sino que responda rápido. Los pilares clave entonces son la: velocidad, escalabilidad, estabilidad y confiabilidad. ¿Cómo probamos dichos pilares? ¿Tienes en cuenta el impacto en el negocio si alguno de estos pilares no tiene el desempeño esperado? Por qué la latencia reduce las conversiones y el abandono de usuarios. A continuación, profundizo en estos temas y otros vinculados y finalizo con un análisis que hice evaluando los escenarios candidatos para ser impulsados con Inteligencia Artificial Generativa.


Pruebas de Rendimiento más allá del "Funciona"

Definición Integral y Técnica

Las Pruebas de Rendimiento (Performance Testing) son un conjunto de metodologías y técnicas de evaluación pertenecientes a la categoría de pruebas no funcionales, cuyo propósito fundamental es medir y validar cómo un sistema de software se comporta, responde y se adapta ante diferentes niveles de carga, volumen de datos, concurrencia de usuarios y condiciones operacionales variadas.

Componentes Clave de la Definición

A. Naturaleza de las Pruebas

Las pruebas de rendimiento trascienden la simple verificación de que «el sistema funciona». Se enfocan en aspectos cuantitativos y cualitativos del comportamiento del software bajo estrés, incluyendo:

  • Velocidad de Respuesta: Tiempo que tarda el sistema en procesar una solicitud y retornar una respuesta al usuario o cliente.
  • Escalabilidad: Capacidad del sistema de mantener o mejorar su rendimiento conforme aumentan los usuarios, transacciones o datos.
  • Estabilidad: Comportamiento consistente del sistema bajo cargas sostenidas en el tiempo.
  • Capacidad de Respuesta: Medida de cómo el sistema mantiene su funcionalidad y velocidad bajo condiciones de estrés extremo.
  • Confiabilidad bajo Carga: Garantía de que el sistema no falla, corrompe datos ni presenta errores críticos durante picos de uso.

B. Contextos de Evaluación

Estas pruebas se centran en medir métricas en condiciones variadas que incluyen:

  • Carga normal esperada
  • Carga pico o máxima prevista
  • Cargas sostenidas en el tiempo
  • Cargas fluctuantes o impredecibles
  • Estrés extremo (más allá de la capacidad esperada)
  • Degradación controlada (para identificar límites)

Conceptos arquitectónicos fundamentales

Es esencial comprender las arquitecturas sobre las cuales se ejecutan los sistemas que serán sometidos a pruebas de rendimiento:

Sistemas Monolíticos

Definición: Arquitectura donde toda la funcionalidad de la aplicación reside en una única unidad ejecutable, con componentes internamente acoplados.

Características:

  • Un único punto de despliegue
  • Componentes interdependientes
  • Escalabilidad vertical (más poder en una sola máquina)
  • Punto de fallo único para la aplicación completa
  • Implicaciones para Performance Testing: Cambios mínimos en carga afectan toda la aplicación

Ejemplo: Aplicación tradicional de tres capas (Frontend – Backend – Base de Datos) en un único servidor.

Sistemas Distribuidos

Definición: Arquitectura donde la funcionalidad se divide en múltiples componentes independientes, potencialmente ubicados en diferentes servidores o máquinas, comunicándose entre sí.

Características:

  • Múltiples puntos de despliegue
  • Componentes débilmente acoplados
  • Escalabilidad horizontal (agregar más máquinas)
  • Resiliencia: Fallos parciales no derriban el sistema completo
  • Complejidad aumentada en comunicación y sincronización
  • Implicaciones para Performance Testing: Necesidad de evaluar latencia de red, bottlenecks entre servicios, sincronización distribuida

Ejemplo: Arquitectura de microservicios donde cada servicio se ejecuta independientemente en su propio contenedor.

APIs (Interfaces de Programación de Aplicaciones)

Definición: Conjunto de protocolos, herramientas y definiciones para la construcción de software que permiten la comunicación entre diferentes sistemas o componentes.

Tipos Relevantes en Performance Testing:

  • APIs REST: Basadas en HTTP/HTTPS, utilizan recursos y métodos HTTP (GET, POST, PUT, DELETE)
  • APIs SOAP: Protocolo basado en XML para comunicación compleja
  • APIs GraphQL: Lenguaje de consulta que permite solicitar exactamente los datos necesarios
  • APIs WebSocket: Comunicación bidireccional en tiempo real

Implicaciones para Performance Testing:

  • Los endpoints de API son puntos críticos de evaluación
  • Latencia API = latencia percibida por el usuario
  • Bajo concurrencia, APIs deben mantener disponibilidad y respuesta

Servicios y Servicios Web

Servicios: Unidades funcionales independientes que ejecutan una lógica específica, accesibles a través de interfaces definidas.

Servicios Web: Implementación específica de servicios que utiliza protocolos estándar de internet (HTTP/HTTPS) para su acceso, permitiendo interoperabilidad entre plataformas heterogéneas.

Relación Arquitectónica:

  • Los servicios web son componentes de sistemas distribuidos
  • Se comunican mediante APIs (generalmente APIs REST)
  • Cada servicio puede escalar independientemente

Backend vs Frontend

Frontend (Capa de Presentación):

  • Interfaz con la que interactúa el usuario final
  • Ejecuta en el navegador del cliente o aplicación cliente
  • Responsable de experiencia del usuario (UX)
  • Depende del backend para procesar lógica de negocio

Backend (Capa de Lógica de Negocio):

  • Procesa la lógica de negocio
  • Gestiona la persistencia de datos
  • Ejecuta en servidores remotos
  • Expone APIs para que el frontend comunique

Impacto en Performance Testing:

  • Frontend: Rendimiento depende de carga de recursos, JavaScript execution, renderizado
  • Backend: Rendimiento depende de procesamiento, acceso a BD, comunicación inter-servicios
  • Ambos deben evaluarse independientemente y en conjunto

Porqué trasciende la funcionalidad

La calidad de software va más allá de evaluar que un sistema «funcione» correctamente. Esto se justifica por:

Impacto Empresarial

  • Satisfacción del Usuario: Un sistema funcional pero lento genera insatisfacción y abandono
  • Pérdida de Ingresos: Cada segundo de latencia adicional reduce conversión de compras
  • Reputación: Un sistema que «cuelga» bajo demanda daña la marca
  • Retención: Usuarios migran a competencia si rendimiento es deficiente

Impacto Técnico

  • Un bug funcional afecta a algunos usuarios; un problema de rendimiento afecta a todos
  • La escalabilidad no se «hereda»; debe diseñarse deliberadamente
  • Problemas de rendimiento en producción son costosos y complejos de resolver

Importancia de JMeter en Performance Testing

¿Por Qué JMeter?

Apache JMeter es la herramienta estándar de la industria para performance testing porque permite:

  • Simular múltiples usuarios concurrentes (sin código)
  • Generar carga controlada en APIs, servicios y aplicaciones web
  • Medir métricas críticas: latencia, throughput, tasa de error
  • Identificar bottlenecks en el sistema bajo estrés
  • Validar que la escalabilidad horizontal/vertical realmente funciona
  • Reproducir escenarios de carga del mundo real

Relación con los Conceptos Arquitectónicos

  • En sistemas monolíticos: JMeter valida que el servidor único no colapsa bajo carga
  • En sistemas distribuidos: JMeter debe simular carga distribuida y validar comportamiento de cada servicio
  • Con APIs: JMeter realiza llamadas HTTP simulando usuarios reales
  • Con servicios: JMeter puede validar latencia inter-servicio

Métricas y KPIs en Performance Testing

Las siguientes son métricas críticas a validar:

MétricaDescripciónHerramienta Medición
Response Time (ms)Tiempo desde solicitud hasta respuestaJMeter
Throughput (req/sec)Número de solicitudes procesadas por segundoJMeter
Concurrent UsersUsuarios simultáneos soportadosJMeter
Error Rate (%)Porcentaje de solicitudes fallidasJMeter
CPU Utilization (%)Uso del procesadorMonitor
Memory Utilization (%)Uso de memoria RAMMonitor
Database Query TimeLatencia de consultas BDAPM Tools

Conclusión y recomendaciones pedagógicas

Para una comprensión integral de Performance Testing con JMeter, debemos:

  1. Entender la dicotomía: Funcionalidad ≠ Rendimiento
  2. Dominar arquitecturas: Comprender que monolíticos y distribuidos requieren estrategias de testing diferentes
  3. Conocer APIs y Servicios: Son los puntos de medición en JMeter
  4. Aplicar herramientas correctamente: JMeter es solo el instrumento; la estrategia de testing es lo crítico

El presente curso establece las bases para que los participantes no solo ejecuten pruebas con JMeter, sino que comprendan por qué cada métrica importa y cómo una deficiencia de rendimiento impacta el negocio.



¿Podemos aplicar IA Generativa?

Se han identificado los siguientes ejes clave donde la IA aporta valor operativo, tales como:

  • la personalización de casos de estudio, 
  • la creación de simulaciones interactivas, 
  • la generación automática de ejemplos de pruebas
  • y el soporte en el diagnóstico de problemas técnicos (troubleshooting).

También se pueden desarrollar tres frameworks específicos para aplicar esta IA:

  • Generación de Casos de Uso por Industria: Diseñado para crear escenarios realistas (por ejemplo, Black Friday en E-commerce) que permiten dimensionar los objetivos de rendimiento específicos y métricas medibles.
  • Análisis Simulado de Resultados JMeter: Permite generar datos realistas de ejecuciones de prueba (como fallos de CPU o fugas de memoria) para la interpretación de métricas, el diagnóstico de causas raíz y la propuesta de soluciones.
  • Generación de Scripts JMeter Comentados: Se enfoca en la creación de scripts ejecutables en formato .jmx, que sirven como herramienta al incluir comentarios detallados sobre el «qué» y el «por qué» de cada componente, promoviendo la aplicación de mejores prácticas.

Puedes seguir mis publicaciones y contactarme por DM desde LinkedIn.

Muchas gracias por seguirme.

Gus Terrera

Apasionado por el agile testing y la ia.