La prueba ilustrada en la sección anterior lleva acabo solicitudes idénticas en todos sus ciclos, sin embargo, aunque este tipo de requisiciones simulan el comportamiento que puede tener determinado cliente (Navegador/"Browser"), carece de elementos específicos que puedan simular con mayor exactitud una carga de producción real.
A través de JMeter también es posible realizar requisiciones para que cada solicitud contenga parámetros únicos por usuario, de esta manera permitiendo simular clientes específicos. Una caso típico como este se puede presentar al intentar simular el registro simultáneo de varios usuarios en una aplicación, ya que cada cliente (Navegador/"Browser") emplea un usuario y contraseña distinta.
A continuación se ilustra paso a paso como llevar acabo una prueba de esta naturaleza en JMeter.
La definición de usuarios con sus respectivos parámetros de requisición es llevado acabo en un archivo
XML
llamado users.xml
; en el directorio bin
de JMeter puede encontrar una muestra de este archivo, así como su respectivo
DTD
.
Para nuestra prueba utilizaremos un archivo users.xml
con los siguientes datos :
<?xml version="1.0"?> <!DOCTYPE allthreads SYSTEM "users.dtd"> <allthreads> <thread> <parameter> <paramname>usario</paramname> <paramvalue>asanchez</paramvalue> </parameter> <parameter> <paramname>contraseña</paramname> <paramvalue>java</paramvalue> </parameter> </thread> <thread> <parameter> <paramname>usario</paramname> <paramvalue>jperez</paramvalue> </parameter> <parameter> <paramname>contraseña</paramname> <paramvalue>xml</paramvalue> </parameter> </thread> <thread> <parameter> <paramname>usario</paramname> <paramvalue>tpadilla</paramvalue> </parameter> <parameter> <paramname>contraseña</paramname> <paramvalue>puntonet</paramvalue> </parameter> </thread> <!-- Más usuarios ("Threads") en base a prueba --> </allthreads> |
Como puede notar, el archivo inicia con el elemento <allthread>
que anida estructuras <thread>
, como fue mencionado anteriormente y para efectos prácticos, cada "Thread" representa una requisición de usuario. A su vez, dentro de cada elemento <thread>
se definen los Tags <parameter>
-- empleado para definir parámetros por solicitud -- y estos a su vez incluyen, <paramname>
-- utilizado para definir el nombre del parámetro -- , así como <paramvalues>
para especificar su respectivo valor.
En resumen, el archivo anterior representa tres solicitudes de usuarios con dos parámetros por requisición : nombre
y contraseña
; el tipo de solicitudes generadas por JMeter serían idénticas a las creadas por una
forma HTML / XHTML
.
Un vez generado users.xml
coloquelo en el directorio bin
de JMeter, sobre-escribiendo el archivo muestra.
Realice los mismos pasos indicados en la
prueba básica de JMeter
en la definición del "Thread Group", modificando el numero de usuarios para reflejar aquellos definidos en users.xml
, en este caso tres :
Una vez definidas las características del grupo de usuarios ("Thread Group"), coloquese nuevamente en este icono de la columna izquierda y ahora seleccione la opción Add -- Sampler -- HTTP Request
. Lo anterior genera un icono denominado HTTP Request
utilizado para definir las requisiciones de simulación.
Ahora es necesario asociar el grupo de usuarios definidos en nuestro archivo con las requisiciones, esto se logra colocándose en el icono HTTP Request
oprimiendo el botón derecho del "mouse" y seleccionando la opción : Add -- Pre Processors -- HTTP User Parameter Modifier
; en esta ventana puede observar que las instrucciones "default" son leer el archivo users.xml
del directorio bin
de JMeter :
Posteriormente, seleccione nuevamente el icono HTTP Request
para definir sus otros parametros en la ventana derecha :
Server Name or IP
: Empleado para definir la dirección I.P o nombre del servidor donde será llevada acabo la prueba de carga, se utilizará 127.0.0.1
para indicar un servidor local.
port number
: Define el puerto TCP de operación del servidor, será empleado 80
, que es el "default" para
Servidores de Páginas .
HTTP Request - Method
: Modifique el método de requisición a tipo POST
, ya que el proceso a simular es de registro.
path
: Utilizada para definir la
aplicación de servidor empleada para procesar la requisición, en esta caso definiremos un JSP en el directorio principal del servidor : /logon.jsp
.
Send parameters with the request
: A través del icono Add
debe agregar los parámetros que serán enviados por solicitud como fueron definidos en users.xml
, lo único que debe definir son sus nombres, los valores son tomados automáticamente del archivo
XML
.
Coloquese nuevamente en el icono de HTTP Request
y oprima el botón derecho de su "mouse", del menú generado seleccione la opción Add -- Listener -- Graph Results
, así como Add -- Listener -- View Results in Table
. Lo anterior le indica a JMeter que debe generar una gráfica y tabla (respectivamente) con los resultados obtenidos en la simulación.
Finalmente guarde su plan de prueba ("Test Plan") y ejecutelo seleccionando la opción Run -- Start
del menú superior. Si se coloca en el icono Graph Results
mientras se esta llevando acabo la simulación, puede observar como es construida interactivamente la gráfica de resultados.
Como ultima nota, es recomendable que cuando ejecute la presente prueba de carga también realice un análisis sobre el comportamiento del Hardware, para tener una perspectiva global acerca del sistema.