jueves, septiembre 28, 2017

Simular varios usuarios en paralelo con JMeter

En JMeter existe la posibilidad de ejecutar en paralelo varios hilos, pero en nuestro caso queremos que cada hilo se ejecute siempre con los mismos datos.

Imaginemos un plan de pruebas con dos hilos en paralelo, y el primer hilo lo queremos ejecutar siempre con los datos del usuario número 1, mientras que el segundo hilo lo queremos ejecutar con los datos del usuario número 2.

Para hacer esto creamos un plan de pruebas con dos hilos y utilizamos un fichero CSV, pero con las opciones que da el JMeter cualquiera de los dos usuarios se podrá ejecutar en un hilo u otro.

Nuestra idea es la siguiente:


Hilo 1 --> Se ejecuta siempre con los datos del usuario 1
Hilo 2 --> Se ejecuta siempre con los datos del usuario 2

Para conseguir esto creamos en nuestro plan de pruebas dos Grupos de hilos, el primero de los cuales se encargará de cargar los datos del fichero CSV en memoria, mientras que el segundo se encargará de ejecutar el plan de pruebas.


Grupo de hilos para cargar el fichero CSV

En este grupo de hilos crearemos un muestreador de tipo BeanShell, que será el encargado de cargar los datos del fichero CSV y guardarlo en variables internas, que serán utilizadas más tarde en el plan de pruebas. Para ello añadimos el código que mostramos más abajo. Este código carga el fichero CSV y va recorriendo línea a línea todo el fichero y guardando los datos en las variables "usuario_x" y "busqueda_x".

LineNumberReader lineReader = new LineNumberReader(new FileReader(new File("${fichero}")));
String line = null;
int count = 1;
while ((line = lineReader.readLine()) != null) {
 String[] par = line.split(";");
 props.put("usuario_" + count, par[0]);
 props.put("busqueda_" + count, par[1]);
 count++;
}
lineReader.close();


Grupo de hilos con la ejecución en paralelo

En este grupo de hilos vamos a realizar las ejecuciones del plan de pruebas, con dos hilos en paralelo.

Para que los datos sean correctos utilizamos la siguiente sentencia ${__P(busqueda_${__threadNum})}. Esto funciona como una variable y por lo tanto podemos utilizarla, por ejemplo, en un muestreador. Lo importante es indicar el "__threadNum".

No hay comentarios: