Prueba de Carga Avanzada en JMeter

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.

<?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 .

Thread Group de JMeter
users.xml de JMeter
Http Request JMeter

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.