Ir al contenido
wannacode

Desempeño y carga

En resumen: Un requisito de desempeño dice qué acción, con qué rapidez, para qué parte de las peticiones y con qué carga: «el 95 % de las aperturas del carrito son de menos de 300 ms con 200 clientes a la vez». Una prueba de carga comprueba lo prometido, la de estrés busca dónde se rompe, y la de resistencia si aguanta durante horas.

Problema

Era rápida mientras yo compraba solo

El requisito es «La tienda debe ser rápida». El tester abre el carrito: 0,8 segundos. Rápido. El requisito se cumple.

El Black Friday entran en la tienda 600 personas a la vez. El carrito se abre en 14 segundos, los pagos agotan el tiempo de espera, y los clientes llenan sus carritos una y otra vez, lo que lo ralentiza todo aún más. La tienda pierde su mejor día del año.

La prueba del tester era correcta. El requisito no decía nada que pudiera fallar.

La idea

Las cinco partes del requisito

Un requisito de desempeño dice cinco cosas:

  1. Qué acción: abrir el carrito, la búsqueda, el pago. No «la tienda».
  2. Qué medida: tiempo de respuesta, pedidos por minuto, tasa de errores.
  3. Qué límite: menos de 300 ms, al menos 50 pedidos por minuto, menos del 1 % de errores.
  4. Para qué parte: el 95 % de las peticiones, no la media.
  5. Con qué carga y condiciones: 200 clientes a la vez, en un entorno como el real, con los 12 000 productos.

Todo junto: «el 95 % de las aperturas del carrito son de menos de 300 ms con 200 clientes a la vez». Esta frase puede fallar. «Tiene que ser rápido» no.

Más precisamente, para curiosos

En la ISO/IEC 25010:2023 esta es la característica eficiencia de desempeño (performance efficiency), con tres subcaracterísticas: comportamiento temporal, utilización de recursos y capacidad. Cómo se escribe un requisito así como escenario de arquitectura, y por qué los porcentajes de disponibilidad se multiplican a lo largo de una cadena de servicios, está en la lección Requisitos no funcionales medibles del curso de ingeniería de software.

La idea

Por qué no la media

Diez clientes abren el carrito. Nueve esperan hasta 0,6 segundos, uno espera 9,8. La media es 1,3 segundos y parece buena. Pero un cliente esperó casi 10 segundos, y la media lo esconde.

Un percentil dice cuántas peticiones están por debajo del límite. p95 = 300 ms significa: el 95 % de las peticiones son de menos de 300 ms, y el 5 % puede ser más lento. El requisito dice exactamente cuántas peticiones lentas son aceptables, y no deja que unas pocas muy rápidas escondan a las lentas.

Para el pago, donde cada cliente lento es un pedido perdido, los equipos suelen pedir también p99.

Pruébalo

Calcúlalo

1. Diez aperturas del carrito: 0,2; 0,2; 0,3; 0,3; 0,3; 0,4; 0,4; 0,5; 0,6 y 9,8 segundos. La media es 1,3 segundos. ¿Cuántos clientes esperaron más de 1,3 segundos?
2. El requisito es «el 95 % de las aperturas en menos de 2 segundos». De 1000 aperturas, 970 son de menos de 2 segundos. ¿Pasa?
3. El carrito se abre en 1,1 segundos cuando en la tienda solo está el tester. ¿Qué sabes sobre la oferta?

La idea

Tres preguntas, tres tipos de pruebas

Las pruebas de desempeño son pruebas no funcionales, normalmente en el nivel de sistema. Responden a preguntas distintas:

  • Pruebas de carga: ¿aguanta el sistema lo que se espera? 200 clientes, tantos como en el pico. Comprueba el requisito.
  • Pruebas de estrés: ¿dónde se rompe, y cómo? Los clientes crecen más allá de lo prometido hasta que algo se detiene. Luego: ¿se recupera la tienda sola?, ¿se pierden pedidos?
  • Pruebas de resistencia (soak): ¿aguanta? 48 horas con la carga habitual. Atrapa lo que se acumula despacio: memoria, conexiones abiertas.

También hay picos (spike testing): de 80 a 600 clientes en un minuto, cuando sale el correo de la oferta.

Para todo esto hay herramientas que ejecutan miles de clientes falsos. Aquí no las enseñamos: una herramienta no sirve si el requisito no dice qué medir y cuándo fallar.

Más precisamente, para curiosos

La escalabilidad y la capacidad se comprueban con pruebas parecidas: cuántos clientes aguanta el sistema, y cómo crece eso cuando se añade un servidor. En la ISO/IEC 25010:2023 la escalabilidad es parte de la flexibilidad, y la capacidad es parte de la eficiencia de desempeño.

Pruébalo

¿Qué tipo de prueba?

1. La tienda funciona durante 2 horas con 200 clientes a la vez, el pico esperado de la oferta, y se mide el tiempo de respuesta.
2. Los clientes aumentan de 200 a 2000 hasta que la tienda deja de responder. También se comprueba si se recupera sola cuando baja la carga.
3. La tienda funciona durante 48 horas con los 80 clientes habituales. En la hora 30 las peticiones se vuelven cada vez más lentas, y luego la tienda se cae.

La idea

Quién da los números

Los números no son de los programadores («el servidor aguanta 150») ni del tester. Son una necesidad del negocio: cuántos clientes vinieron a la última oferta, cuántos vendrán con la nueva publicidad, cuántos segundos de espera significan un pedido perdido.

El analista los pide como pide las reglas: con un ejemplo. «El último Black Friday hubo 420 personas en 10 minutos en el pico. Este año esperamos un 50 % más. ¿Cuánta espera en el pago es aceptable?».

Luego el requisito se acepta como cualquier otro: una prueba en las condiciones acordadas, y el resultado comparado con el límite acordado. Si pasa pero los clientes siguen quejándose, el requisito está mal, no el programa. Eso es validación de lo no funcional.

Más precisamente, para curiosos

CT-AcT v1.0, capítulo 4, trata el desempeño como parte de las pruebas de aceptación: las medidas se acuerdan antes con el negocio, y el entorno de pruebas tiene que ser representativo. Las pruebas de desempeño son caras (entorno, datos, tiempo), así que son buenas candidatas a seleccionarse por riesgo: el pago y el carrito primero, la página «Quiénes somos» después.

Ejercicio

Un requisito para la oferta

1. Black Friday. Revisa el requisito de marketing.

Marca las palabras que hacen que el requisito sea imposible de verificar o ambiguo, y elige el tipo de cada problema.

Pulsa las palabras que son un problema; otra vez para quitar la marca. Con las flechas se pasa de palabra en palabra.

Test

Ponte a prueba

1. ¿Cuál es un buen requisito de desempeño?
2. ¿De dónde sale el número «200 clientes a la vez»?
3. La prueba de carga pasa en el portátil del tester con una base de datos de 50 productos. ¿Qué está mal?
4. ¿De qué característica de la ISO/IEC 25010 es el tiempo de respuesta?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·