Gracias a herramientas como Watir o Selenium donde podemos automatizar tareas repetitivas podes hacer pruebas de regresión en corto tiempo y de forma muy sencilla, pero estas herramientas no son útiles para pruebas de carga o performance de servers.
Una herramienta sencilla de utilizar y que es Open Source, es JMeter, esta herramienta permite ejecutar pedidos al server de forma paralela, a través de threads, cada uno pudiéndole pedir diferente tipo de pedidos, esta potencial herramienta ademas permite realizar pruebas de forma distribuidas, donde múltiples equipos simulan múltiples usuarios.
La herramienta se la puede conseguir aquí: http://jakarta.apache.org/jmeter/.
Una vez descargado, se debe ejecutar: jmeter.bat (windows) o jmeter (GNU/Linux); al principio su interfaz parece ser poco intuitiva, pero es sencilla, JMeter tiene un arbol de elementos que se pueden cargar o agregar segun corresponda el caso, se divide en dos, el Plan de Pruebas y el Banco de Trabajo, dentro del Plan de Pruebas se deben agregar todos elementos pertenecientes a nuestros casos que iremos armando durante la utilización de JMeter, y el Banco de Trabajo, permite utilizar elementos temporarios para emplear con nuestro Plan.
En la imagen se puede observar la pantalla con la que nos encontramos al ejecutar JMeter. En este caso vamos a realizar pruebas sencillas contra servers publicos, y vamos a generar el plan de forma casi automatica.
Lo primero que debemos hacer es agregar un Grupo de Hilos, seleccionamos nuestro Plan, hacemos click con el boton derecho del mouse, Añadir->Grupo de Hilos; el grupo de hilos nos permite definir cuantos hilos (simula la cantidad de usuarios) se deben ejecutar, el periodo de subida es cada cuanto tiempo debe ejecutarse un nuevo hilo, y el contador de bucle define cuantas repeticiones se deben hacer antes de finalizar la ejecución.
Una vez agregado el Grupo de Hilos debemos agregar un nuevo elemento llamado "Valores por Defecto para Petición HTTP", seleccionamos el Grupo de Hilos, y hacemos click derecho, Añadir->Elemento de Configuración->Valores por Defecto para Petición HTTP.
Este elemento nos permite definir parámetros del server, como la dirección, puerto, timeouts, protocolo (http, https), encoding, path y agregar parámetros que se enviaran al server al comenzar.
El resultado debe quedar de la siguiente forma, usaremos a yahoo.com como server de prueba:
Una vez configurado nuestro server, para facilitarnos la tarea de agregar las peticiones manualmente usaremos un proxy HTTP que incluye JMeter, este no funciona contra servers HTTPS, por lo que conviene guardar las peticiones usando una conexion no segura y despues si utilizar la conexion segura para ejecutarlas.
Para ello seleccionamos nuestro banco de trabajo, y hacemos click con el boton derecho, Añadir->Elemento de No Prueba->Servidor Proxy HTTP; aquí debemos configurar los parametros para nuestro proxy, el cual debemos agregar a nuestro navegador, como la mayoria de las veces en ambientes de desarrollo los puertos 80 y 8080 se encuentran ocupados, utilizaremos otro puerto, en nuestro ejemplo 9090; en esta pantalla se pueden definir diferente opciones, pero las requeridas son el puerto y el tipo de peticion, se recomienda seleccionar el controlador objetivo, en nuestro caso: Plan de Pruebas -> Grupo de Hilos.
La configuración debe ser como la siguiente pantalla:
Ademas se pueden definir que tipo de archivos pueden omitirse o cuales incluirse.
Ahora configuramos las opciones del proxy de nuestro navegador, con la configuración de JMeter:

Siendo los nuevos elementos de nuestro plan, las peticiones al servidor; volviendo a la configuración inicial de el grupo de hilos, cambiamos el parametro de numero de hilos, y seleccionamos el valor 5, para simular 5 usuarios, y el periodo de subida en 60 (1 cada 60 segundos), grabamos nuestro plan de pruebas, y solo nos resta ejecutar.
Seleccionamos el menu Lanzar, y seleccionamos la opción Arrancar, y con esto ejecutamos nuestro plan de pruebas, arriba a la derecha se encendera un recuadro verde que se apagara cuando ya no queden hilos ejecutandose.
Para obtener resultados de las ejecuciones, se suele agregar Listeners (escuchadores), de los cuales los mas comunes son Summary Report y Reporte Agregado, ambos retornan los valores de respuesta del server con respecto a la ejecución de las pruebas cuanto mayor los valores, peor es la performance en la llamada que el listener muestre, en un próximo post detallare como leer un listener y obtener información util.
Una herramienta sencilla de utilizar y que es Open Source, es JMeter, esta herramienta permite ejecutar pedidos al server de forma paralela, a través de threads, cada uno pudiéndole pedir diferente tipo de pedidos, esta potencial herramienta ademas permite realizar pruebas de forma distribuidas, donde múltiples equipos simulan múltiples usuarios.
La herramienta se la puede conseguir aquí: http://jakarta.apache.org/jmeter/.
Una vez descargado, se debe ejecutar: jmeter.bat (windows) o jmeter (GNU/Linux); al principio su interfaz parece ser poco intuitiva, pero es sencilla, JMeter tiene un arbol de elementos que se pueden cargar o agregar segun corresponda el caso, se divide en dos, el Plan de Pruebas y el Banco de Trabajo, dentro del Plan de Pruebas se deben agregar todos elementos pertenecientes a nuestros casos que iremos armando durante la utilización de JMeter, y el Banco de Trabajo, permite utilizar elementos temporarios para emplear con nuestro Plan.

Una vez agregado el Grupo de Hilos debemos agregar un nuevo elemento llamado "Valores por Defecto para Petición HTTP", seleccionamos el Grupo de Hilos, y hacemos click derecho, Añadir->Elemento de Configuración->Valores por Defecto para Petición HTTP.
Este elemento nos permite definir parámetros del server, como la dirección, puerto, timeouts, protocolo (http, https), encoding, path y agregar parámetros que se enviaran al server al comenzar.
El resultado debe quedar de la siguiente forma, usaremos a yahoo.com como server de prueba:
Una vez configurado nuestro server, para facilitarnos la tarea de agregar las peticiones manualmente usaremos un proxy HTTP que incluye JMeter, este no funciona contra servers HTTPS, por lo que conviene guardar las peticiones usando una conexion no segura y despues si utilizar la conexion segura para ejecutarlas.
Para ello seleccionamos nuestro banco de trabajo, y hacemos click con el boton derecho, Añadir->Elemento de No Prueba->Servidor Proxy HTTP; aquí debemos configurar los parametros para nuestro proxy, el cual debemos agregar a nuestro navegador, como la mayoria de las veces en ambientes de desarrollo los puertos 80 y 8080 se encuentran ocupados, utilizaremos otro puerto, en nuestro ejemplo 9090; en esta pantalla se pueden definir diferente opciones, pero las requeridas son el puerto y el tipo de peticion, se recomienda seleccionar el controlador objetivo, en nuestro caso: Plan de Pruebas -> Grupo de Hilos.
La configuración debe ser como la siguiente pantalla:
Ademas se pueden definir que tipo de archivos pueden omitirse o cuales incluirse.
Ahora configuramos las opciones del proxy de nuestro navegador, con la configuración de JMeter:
Con el proxy configurado solamente nos resta arrancar el proxy de JMeter, lo arrancamos y luego en nuestro navegador ingresamos al sitio web, una vez arrancado el proxy e ingresado al sitio web, JMeter capturara los pedidos GET y/o POST que se le realicen al server, en este caso quedo asi:

Siendo los nuevos elementos de nuestro plan, las peticiones al servidor; volviendo a la configuración inicial de el grupo de hilos, cambiamos el parametro de numero de hilos, y seleccionamos el valor 5, para simular 5 usuarios, y el periodo de subida en 60 (1 cada 60 segundos), grabamos nuestro plan de pruebas, y solo nos resta ejecutar.
Seleccionamos el menu Lanzar, y seleccionamos la opción Arrancar, y con esto ejecutamos nuestro plan de pruebas, arriba a la derecha se encendera un recuadro verde que se apagara cuando ya no queden hilos ejecutandose.
Para obtener resultados de las ejecuciones, se suele agregar Listeners (escuchadores), de los cuales los mas comunes son Summary Report y Reporte Agregado, ambos retornan los valores de respuesta del server con respecto a la ejecución de las pruebas cuanto mayor los valores, peor es la performance en la llamada que el listener muestre, en un próximo post detallare como leer un listener y obtener información util.