lunes, 21 de marzo de 2011

Jmeter - Variables compuestas con counter

Si queremos utilizar variables propias cuyo valor, o parte de éste esté en función de la variable counter, deberemos declarar nuestras variables, en vez de como "Config element -> User defined variables", como "Pre processors -> User parameters". Al parecer es debido a que las "user defined variables" se inicializan antes que el counter y probablemente una única vez por instanciación del hilo, mientras que las variables definidas en el pre processador, se generan cada vez (yo por ejemplo las puse como pre proceso de un controlador, así que se generan en cada invocación del controlador). Y como como el counter se inicializa antes que los pre-procesos, éstos ya pueden obtener el su valor correctamente. El counter, como elemento de configuración, se instancia antes que los pre-procesadores, aunque el elemento vaya colocado en el mismo nivel del árbol, detrás de los susodichos pre-procesadores.

Así podremos tener variables compuestas, definidas como MI_VARIABLE_${VAR_COUNTER}.

Yo por ejemplo, lo utilice para poder generar una batería de test para un conjunto de de nombres de usuario, uno distinto para cada iteración.

Ejemplo



Definí los posibles valores de usuarios en el nodo de "User Defined Variables". Para ello, todas las variables que quería recorrer con el controlador For, tienen el mismo prefijo, en este caso 'lolaUser' y tras el separador (también podría no haber usado el separador), números consecutivos.:

jmeter for controllerY luego en el For Controller, hago referencia a dichas variables, por el prefijo que comparten "lolaUser". Como he usado el separador, también he tenido que marcar la opción correspondiente. El valor para cada iteración se guarda en la variable especificada en el controlador FOR, en el registro "output variable name", en éste caso la llamé PROFILE, a la que posteriormente podré acceder dentro de los distintos nodos dentro del bucle con ${PROFILE}:

jmeter for controller