Pregunta

tengo una prueba de JMeter con 2 grupos de hilos - el primero es un solo hilo (que crea algunos inventario) y el segundo tiene múltiples hilos (que compran todo el inventario). Yo uso BeanShell afirmaciones y Extractores XPath para analizar el valor devuelto (que es XML) y las variables de la tienda (tales como los identificadores de los artículos para comprar).

Sin embargo, los valores que se crean en el primer grupo de hilos, si se extrae en las variables de tipo estándar, o ${jmeter} tipo ${__BeanShell(vars.get("jmeter"))} VARs, no están disponibles en el segundo hilo de grupo. ¿Hay alguna forma para crear una variable en el primer grupo de hilos y hacerla visible a la segunda?

¿Fue útil?

Solución

Yo no era capaz de hacer esto con variables (ya que son locales a hilos individuales). Sin embargo, yo era capaz de resolver este problema con propiedades!

Una vez más, mi primer ThreadGroup hace todo el montaje, y necesito algo de información de que el trabajo esté disponible para cada uno de los hilos en el segundo ThreadGroup. Tengo un BeanShell aserción en el primer ThreadGroup con lo siguiente:

${__setProperty(storeid, ${storeid})};

El $ {} StoreID se extrae con un extractor de XPath. El BeanShell aserción hace otras cosas, como la comprobación de que StoreID se volvió de la llamada anterior, etc.

De todos modos, en la segunda ThreadGroup, puedo usar el valor de la propiedad "StoreID" en muestreadores con lo siguiente:

${__property(storeid)}

Funciona como un encanto!

Otros consejos

De acuerdo con la documentación JMeter:

  

16.12 variables de compartición entre hilos y grupos de hilos

     

variables son locales a un hilo de un conjunto variable en un hilo no se puede leer en   otro. Esto es por diseño. Para las variables que se pueden determinar   antes de una prueba se inicia, consulte Definición de parámetros pruebas (arriba). Si el valor   No se sabe hasta que comience el examen, hay varias opciones:

     
      
  1. almacenar la variable como una propiedad - propiedades son globales para la   ejemplo JMeter
  2.   
  3. Escriba las variables en un archivo y volver a leerlos.
  4.   
  5. Utilice el espacio de nombres bsh.shared - ver 16.8.2 Variables compartir
  6.   
  7. Escriba sus propias clases Java
  8.   

Otra manera de pasar variable entre los hilos es utilizar JMeter-plugins como mencionado por Andrey Botalov debajo .

Sin embargo, he encontrado que es un poco confuso para usarlo por primera vez, pero le da un control completo de la variable durante el paso del hilo a hilo. Sigue mi ejemplo, con el uso de BeanShell y ves lo fácil que es:

stucture Proyecto A continuación se hace referencia a las secciones en la imagen abajo:

(1.1) Aquí creé variable personalizada en las variables definidas por el usuario (o puede hacerlo con FBC Proccessor - desactivado en este ejemplo (1.2))

(2.1) (2.4) que con éxito variable utilizada en primer hilo - nada especial:)

(2.2) Agregado BeanShell postprocesador y personalizada mi variables

(2.3) lo agregó a la cola

(3.1) En segundo hilo - la variable se toma de la cola - con cualquier nombre que desee. Pero tenga cuidado, use sabiamente Tiempo de espera, ya que este hilo va a esperar hasta que cierre previo para que pueda obtener la variable modificada (experimento con algún tipo de respuesta de largo)

(3,2) (3,3) (3,4) que las repetidas etapas de usar y modificar la variable

(3.5) variable se envía una vez más en la nueva cola - así proporcionar nuevo nombre a ella

(4,1) (4,2) (4,3) Grabbed variables modificado de nueva cola funciona como encanto

Advertencia

  1. Si agregar más temas a continuación, añadir un poco de Contador para enhebrar Grupo con variable y añadir este nombre de variable para el nombre de cola - hacer lo mismo en Tema Grupo donde se intenta coger la cola por lo que la cola tendrá nombre único para cada hilo (escribir un comentario si necesita alguna explicación necesaria más clara)

  2. Si usted tiene más de una solicitud HTTP en un grupo de hilos a continuación, añadir el procesador pre comunicación hilo como un hijo de la última (o de otro tipo si se quiere lograr algo personalizado) http Solicitud

Reproducir, modificar, personalizar para obtener mejor resultado :) La adición de más hilos puede dar lugar a un comportamiento no deseado por lo que necesita estar alerta.

La información sobre la estructura del proyecto

He encontrado que creo que es la forma más sencilla de hacer esto.

Uso

Bean Shell PostProcessor

para establecer la variable ( http://jmeter.apache.org/usermanual /best-practices.html#bsh_variables )

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("PC_CREATED_PROMO_CODE", "value");

O si usted está leyendo de una variable

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("PC_CREATED_PROMO_CODE", vars.get("Extracted_PC_CREATED_PROMO_CODE"));

Y luego desde el otro grupo de hilos, leerlo a través de ( http: // jmeter. apache.org/usermanual/functions.html#__property )

${__property(PC_CREATED_PROMO_CODE)}

entre hilos Comunicación para este propósito.

Hay 2 métodos de uso:

  • postprocesador / preprocesador
  • Funciones __fifoPut y __fifoPop

En mi opinión postprocesador / preprocesador es más fácil de usar.

Esto no es posible en JMeter, porque no es el comportamiento normal de los clientes (el intercambio de parámetros entre los hilos). En lugar de este uso un hilo-Grupo con los controladores:

Thread Group
+ Create inventory
+ + XPath
+ Loop
+ + Purchase inventory

Bueno, esto es una manera de hacerlo; siga estos pasos y va a trabajar, más adelante se puede ajustar a sus necesidades! Las variables no son compartidos entre los hilos (JMeter llama a esto una característica probablemente :)). Pero las propiedades son! A fin de establecer la variable como un hotel fenomenal, así:

1) Haga clic en su testplan y permitir 'grupos de hilos en forma consecutiva' -> esto hace que los grupos de hilos corren ordenados y no al azar. (Que más tarde se puede ajustar, pero por ahora a conseguir que funcione ..)

2) crear un ThreadGroup llamada 'configuración', por ejemplo; en que grupo de hilos añadir un BeanShell Sampler con el código siguiente:

import org.apache.jmeter.util.JMeterUtils;
JMeterUtils.setProperty("theNameOfYourNewProperty", "theValueOfYourPropery");

Así que ahora la propiedad se ha establecido! Si el valor que desee almacenar como un hotel fenomenal es una variable allready (Usuario definded variable o reqex por ejemplo) que puede hacer:

JMeterUtils.setProperty("theNameOfYourNewProperty", vars.get("theNameOfYourVariable"));

3) añadir una 'prueba real' TestGroup por ejemplo con un número de hilos superiores a 1;    agregar una prueba y que esa prueba BeanShell añadir un preprocesador con el siguiente código:

import org.apache.jmeter.util.JMeterUtils;
vars.put("theNameOfYourNewProperty", JMeterUtils.getProperty("theNameOfYourNewProperty"));

Así que ahora que usted ha creado una variable en ese hilo llamado theNameOfYourNewProperty que tiene el valor de su theNameOfYourNewProperty propiedad del sistema. En su prueba ahora se puede acceder a ella como:

${theNameOfYourNewProperty}

Y funcionará para cada hilo, no sólo es justo el primer hilo ..

Vamos a dar un tema de una segunda vida :) Una forma más para transferir variables entre hilos es para escribir / leer el archivo. pasar variables entre hilos

Otra solución es utilizar la tabla de servidores simple para gestionar el conjunto de datos. Esta característica fue añadir el 1,2 JMeter plugins.

"La idea principal es utilizar un pequeño servidor HTTP en JMeter plugins para gestionar los archivos de conjunto de datos con órdenes sencillas a obtener / Añadir filas de datos en los archivos"

Mire la documentación: http://jmeter-plugins.org/wiki/HttpSimpleTableServer/

Saludos.

JMeter haba de Shell aserción

Sólo tiene que añadir una cáscara afirmación de frijol utilizar una función de propiedad para asignar el valor a una variable (como una variable global), que contendrá el valor incluso después de que pasa a otro hilo.

  

Añadir grupo de hilos >> >> >> Las afirmaciones de la haba de Shell aserción

${__setProperty(Global_variable_Name,${Variable_name_whose_Value_to_be_Passed})}

y luego en el otro hilo que pueda llamar a esta variable global y puede utilizarse

a continuación es la función que se debe utilizar para llamar el valor almacenado:

${__property(global_variable_name)}

https://medium.com/@priyank .it / JMeter de paso-variables-entre-hilos-a4dc09903b59

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top