Gatling es una herramienta opensource de stress que permite realizar pruebas de carga a un entorno o web para estudiar su rendimiento.

Es fácil simular un escenario previamente grabado, es decir, puedes abrir tu navegador, realizar los pasos que quieras (por ejemplo: abrir una web y realizar un registro de usuario) y tras esto simular ese recorrido tantas veces como desees para comprobar cuanta carga es capaz de soportar tu web o entorno.

Además, al terminar te genera unos informes bastante majos con información sobre cada sesión simulada, tiempos de respuesta y peticiones que han resultado ok o no_ok.

Pasos:

  • Descarga Gatling
  • Usaremos por ejemplo el navegador Firefox. Cargar en una pestaña la web que queremos probar.
1
$ cd gatling/bin
1
$ ./recorder.sh
  • Configurar el proxy en firefox, desde Preferencias > Avanzado > Red > Configuración > marcar configuración manual de proxy y establecer el puerto 8000
  • Comenzar la grabación desde la interfaz de Gatling, establecer un nombre para la simulación que resultará de grabar dicho camino, se observará que van apareciendo los pasos en rojo
  • Finalmente parar la grabación, en estos momentos tendremos la simulación generada en gatling/user-files/simulations/nombre-de-la-simulación.scala

Ahora para lanzar la simulación habría que lanzar:

1
$ ./gatling.sh 

y elegir el número que corresponda a nuestra simulación, de esa forma estaríamos lanzando nuestro escenario de nuevo.

La clave para meter caña está en modificar el método setUp de la simulación .scala generada con el recorder, así, por ejemplo, cambiaremos la cantidad de usuarios por segundo que queremos inyectar.

Tras lanzar la simulación, los informes resultantes se almacenan en la carpeta gatling/results/fecha-de-la-simulación/index.html

Para quien tenga curiosidad, en su web explican cada una de las partes que componen un escenario

Todo esto se puede implementar diréctamente sin necesidad de grabar el camino y obtener la clase .scala con la simulación (y ahí es donde se tiene el poder de esta herramienta) pero quería escribir primero sobre el grabador que Gatling nos facilita para que lo conozcáis.

Llegado este punto vemos el potencial que puede llegar a tener esta herramienta pero parece no tener mucho sentido realizar unas pruebas de carga por ejemplo utilizando al mismo usuario, no es normal que se intente registrar la misma persona, en un entorno real, una y otra vez. ¡Pues bien! con Gatling podemos injectar un .csv utilizando feeders, de tal forma que consigamos crear un escenario real, donde en cada sesión tendremos a un usuario distinto intentando registrarse en la web. Pero esto, da para otro tema de conversación :)

Espero que sea de ayuda y empecéis a investigar.

alt text

Image from xkcd

Me han parecido interesantes, para centrarnos un poco en lo que es QA Testing, estas charlas que he encontrado de Portnov Computer School. La calidad de los videos no es muy buena, pero merece la pena.

Go testing!!

Siempre que compartes un repo con otras personas, sabes que te encontrarás con los bonitos merges caóticos. Como truco para no perder nada y tener en local todo actualizado justo antes de subir mis cambios yo almaceno todo mi estado (del working directory) con un stash.

El tema sería el siguiente:

  • Estamos dos personas en la misma rama
  • Cada uno desarrolla
  • El otro sube sus cambios sin problemas
  • LLego yo a subir lo mío y no estoy actualizada
  • Me guardo mis cambios
1
$ git stash
  • Me descargo lo que hay arriba
1
$ git pull
  • Recupero mis cambios
1
$ git stash pop
  • Agrego mis cambios y describo mi commit
1
2
$ git add --all
git commit -m "Mis cambios automágicos"
  • Subo mi commit
1
$ git push

Y todo perfecto, no he visto asomar la cabeza a ningún merge!!