25

Importancia pruebas de carga en aplicaciones Web y API’s

¿Un Mito en las Pruebas de Carga?

Los juegos olímpicos de Tokio 2020 han hecho que TVN, la estación nacional que los transmitió liderara en sintonía durante el fin de semana del 31 julio. El domingo 1 de agosto dos representantes chilenos participaron de la última jornada de Golf, cuando el sitio web chilegolf se cayó debido a la gran cantidad de personas que ingresaban. Esta oportunidad de nuevo público era quizá la más grande que el golf chileno ha tenido en los últimos años, y estadísticamente es probable que muchos de los usuarios que vieron la página caída no vuelvan. ¿Se pudo prever esto? ¿Qué debió haber realizado chilegolf? Chilegolf debió haber realizado pruebas de carga, y en este post te explicamos por qué.

Antes de comenzar, es importante destacar que los conceptos de pruebas de performance y pruebas de carga se utilizan de forma intercambiable por varias empresas y artículos. Para Akzio particularmente, las pruebas de carga forman parte de las pruebas de performance. Es decir, las pruebas de performance son un concepto más amplio, que abarca no solo a las pruebas de carga.

El proceso de pruebas forma parte importante del ciclo de vida del Software. En esta etapa no solo se verifica que un sistema funcione, sino que también se busca conocer de qué forma lo hace. No basta con que un sistema responda, en el mundo digital actual es clave la rapidez en que lo hace. Las pruebas de carga consisten en evaluar el desempeño de un sistema al ser sometido a distintas cargas de usuarios simultáneos. Estos distintos escenarios buscan replicar el uso esperado del software.

Existen distintos tipos de pruebas de carga, cada uno tiene distintos propósitos y por lo tanto debe ser utilizado en distintos escenarios. Algunas de las principales son las siguientes:

Pruebas de carga

Las pruebas de carga son las centrales dentro de las pruebas de performance. Son las más conocidas del ámbito ya que responden al concepto central de este: Probar cómo un sistema se comporta bajo una gran carga de usuarios simultáneos.

Pruebas de estrés

En estas pruebas el objetivo principal es ver como un sistema se comporta bajo condiciones extremas. Se busca de manera intencional que el sistema se caiga. Aquí se investiga cuál es la máxima carga soportada, qué pasa cuando el sistema se cae, ¿Se muestra un error?, ¿El sistema se demora el doble, el triple en cargar?, entre otras interrogantes.

Pruebas de resistencia

Se realizan para verificar si el sistema puede soportar una carga esperada durante un período largo de tiempo. En términos simples se toma una prueba de carga, y si esta se realiza en minutos, en el caso de la prueba de resistencia se mantiene por horas. Se investiga si existen períodos particulares del día, o días particulares de la semana, en que el sistema se comporte de manera diferente.

¿Por qué importan las pruebas de carga?

Actualmente no importa que tan buena una aplicación y sus funciones sean, si esta presenta demoras al cargar o fallas, el usuario perderá interés. Existen diversos estudios que verifican que las personas cada vez toleran menos las demoras cuando navegan por la web, y la paciencia es mucho menor cuando se trata de caídas. Si no, recuerde cuál fue su reacción la última vez que encontró una página caída, o las veces que ha buscado algo en otra página porque su primera opción demoraba demasiado en cargar.

Según lo que los ingenieros de Google comentaron en un artículo del The New York Times en 2012, en el mundo digital, incluso un pestañeo de un ojo puede ser muy lento, el que ellos fijan en 400 ms (0.4 segundos). Y desde ese punto de partida, mientras más se demore un servicio más probable es que el usuario lo abandone.

En este mismo ámbito, Deloitte publicó el 2020 un reporte encargado por Google, llamado “Milliseconds make millions” (Los milisegundos hacen millones) enfocado en la importancia de la velocidad en sitios móviles. En él se menciona que basta con 0.1 segundos de mejora en la velocidad, para ver un aumento de 9,2% en pedidos y una subida de 5,2% en la participación de los clientes en el mundo del retail. Otra conclusión importante, es que si la página demora más de un 1 segundo, los usuarios pierden el enfoque en la tarea que están realizando.

Herramientas de Mercado

En el día de hoy existen diversas herramientas para poder realizar y monitorear pruebas de carga. Esta lista muestra algunas de las más conocidas y estudiadas por Akzio.

JMeter

Jmeter es un clásico. Es una herramienta de Apache, desarrollada en Java,  que tiene años de prestigio en el área. Su enfoque se basa en desarrollar las pruebas en una interfaz gráfica, ya que es una aplicación de escritorio.  Además de ser gratuita, existe mucha información, guías online y foros activos  para aprender a utilizar su interfaz. Sin embargo, incluso si tienes acceso a toda esta información, tienes que ser capaz y tener el tiempo para aprender su funcionamiento. También es importante considerar que la forma en que levantan los usuarios virtuales ocupa bastante recursos del servidor y que nuevas herramientas han implementado nuevas maneras de realizar esto.

Gatling

Gatling es una herramienta open source, al igual que Jmeter. La diferencia principal es que tiene un enfoque en código, es decir, las pruebas se implementan en scripts en el lenguaje Scala. Aunque también posee un grabador que registra tu navegación y transforma el escenario en código. Gatling nace el 2015 y a través de estos años ya tiene una buena reputación en el área de software gratuitos para pruebas de carga. También contiene reportes HTML bastante completos que se generan automáticamente en cada ejecución.

k6

k6 es una herramienta open source (nuestra favorita ❤️) que nace el 2017, por lo que forma parte de las herramientas más recientes para pruebas de carga. Al igual que Gatling está enfocada en desarrolladores, por lo tanto las pruebas se realizan en código. En este caso se programan en JavaScript, lo que hace que la barrera de entrada sea menor que la de Gatling, ya que JavaScript está más extendido que Scala. Uno de los mejores ámbitos de k6 es que tiene buena performance, se pueden generar grandes cargas usando solo un servidor. Además, es fácil de instalar, rápido en funcionamiento y está muy bien documentado

Finalmente, es importante mencionar que si tu sitio no recibe grandes cargas, la velocidad sigue siendo un punto clave. La razón de esto es que en 2018 Google ha mencionado que la velocidad del sitio está dentro de los factores importantes para realizar el ranking de las búsquedas de Google y de las publicidades. Si quieres tener una aplicación exitosa, esta tiene que ser rápida. En estos términos, la rapidez puede ser tu ventaja competitiva en relación a la competencia.

«Las pruebas de carga permiten prepararse para situaciones puntuales que pueden variar la carga de usuarios, como los Cyberday. Pero también son necesarias durante el desarrollo de software, ya que estas nos permiten conocer la escalabilidad, performance y estabilidad de nuestro sistema, para así poder optimizar la experiencia del usuario. Hoy en día y debido a la expansión de la arquitectura de microservicios, se vuelve esencial realizar pruebas no solo de las aplicaciones web, sino que también de las APIs que entregan el servicio.«

Valentina Pinto, Ingeniera del área de Investigación y Desarrollo de AKZIO.

Compartir esta publicación

© 2021 Derechos Reservados