Te va a interesar!

6/recent/ticker-posts

Qué es Performance Testing?


Si sos un Tester habrás visto alguna vez al equipo de Performance Testing. Son como el bajista de una banda: Esos bichos raros que no hacen testing funcional, tampoco desarrollo y tampoco test de integración. O si? 

Lo cierto es que el Performance Testing se maneja más que nada sobre la capa de webservices de una aplicación y tiene una finalidad muy específica: Ver que la performance del sistema se encuentra dentro de los parámetros aceptados por el equipo y que, además, no empeora más allá de los límites puestos al cambiar la aplicación. 

Generalmente estamos ante una prueba que apunta a ver qué tan bien escala un sistema ante una carga de usuarios que podríamos esperar en producción. Se irá a aguantar a los miles de usuarios que esperamos logueando? Y las cientos de miles de búsquedas por minuto que van a hacer? Todo eso es parte de lo que prueba un script de Performance. 

Como se imaginarán, hay varios tipos de Performance Testing, siendo Stress y Load los más conocidos. 

Stress Testing: Llevando al sistema a su límite. 

El Stress Testing se hace para probar cuáles son los límites del sistema bajo prueba y si está alineado a lo que se esperaba. También va a ser clave para ver cómo el sistema se recupera después de una carga extrema. Volverá a su performance habitual? Se romperá hasta que alguien reinicie algo? Todo eso es verificado con este tipo de testing. 

También, dentro del Stress Testing, tenemos dos variantes: Spike Test y Soak Test, que hace algo similar pero de diferente manera.

El Spike Test va a ser cuando hacemos una escalada repentina de requests al sistema para ver cómo se comportaría ante ese tipo de carga en tan poco tiempo. Piensen en un Black Friday, Cyber Monday, época de inscripción a materias en la facultad o Working Holiday Visas para emigrar... van a haber decenas de miles de usuarios intentando hacer lo mismo a la vez en un lapso de tiempo muy corto.

El Soak Test, al contrario, es una escalada de requests mucho más gradual pero durante un tiempo más prolongado para ver si el sistema es capaz de sostener la performance esperada.

El primero es una carrera de 100 metros y el segundo una maratón. 

Load Testing: Cuántos usuarios aguanta nuestro sistema?

Poner 1000 usuarios haciendo login, otros 500 haciendo un checkout de una compra, otros 600 haciendo una búsqueda de sus artículos listados... todo eso es parte de un Load Testing. Es para ver que nuestro sistema pueda soportar la cantidad de usuarios concurriendo al mismo tiempo y haciendo distintas cosas en nuestro sistema. 
Es el que se debería tener siempre por defecto y la manera de saber que la infraestructura que tenemos (servidores, bases de datos, load balancers, proxies, etc) pueden aguantar lo que necesitan aguantar.

También vamos a poder monitorear fugas de memoria, uso del CPU y otras métricas útiles del lado del servidor para identificar la degradación que causa en el sistema la carga que probamos. 

Conclusión

Por más que una aplicación sea hermosa, muy ingeniosa y no tenga un solo defecto (existe tal cosa?), si la performance es mala los usuarios no van a usarla. Si tenemos una aplicación que necesitamos que aguante cientos de miles de usuarios para hacer ventas y así generar ingresos, si no aguanta la cantidad de usuarios vamos a perder plata...

Es por cosas como esta que Performance Testing es una parte vital y muchas veces infravalorada por los equipos de Testing, pero algo que paga su tiempo en oro cuando se implementa bien! 

En próximos posteos y tutoriales de Patreon vamos a estar aprendiendo a desarrollar tests de Performance con JMeter y usar Grafana para generar Dashboards hermosos y visuales para comunicar los resultados!

Publicar un comentario

0 Comentarios