2009-09-07 87 views
46

Tenemos un flujo de prueba de rendimiento simple en una aplicación.Gestión de sesiones/cookies en Apache JMeter

  1. Nos Identifícate
  2. Búsqueda en base a unos criterios
  3. búsquedas repetidas para diferentes parámetros.

Estamos utilizando Jmeter para hacer una prueba de rendimiento. Necesitamos tener múltiples hilos ejecutándose para probar esto de una manera escalable.

La forma en que actualmente tenemos esta arreglado es:

-Test Plan 
    - Thread Group 
     - Cookie Manager 
     - Login To application 
     - Search on param 1 
     - Search on param 2 
    - results summary table 
    - Summary report 

Así que básicamente tienen el cuadro resumen de retorno y presentan informe sobre el nivel del plan administrador de cookies mientras está presente en el nivel de grupo de hilos.

Cuando ejecuto un hilo, funciona bien y se completa bien. Cuando lo escalo en múltiples hilos, tan pronto como se inicia el siguiente hilo, la sesión del último hilo queda invalidada. Esto causa fallas para todos los subprocesos que ya se están ejecutando debido a la nueva secuencia generada.

llegué a este resultado con la observación: respuestas válidas
1. Si me quedo múltiples hilos, sólo el último hilo tiene en consecuencia árbol Resumen
2. Si me quedo con 2 hilos con la rampa encima periodo de hasta 10 segundos, lo que significa que cada hilo tiene tiempo para terminar, y luego ambos se ejecutan con éxito.

Según mi comprensión, cada conexión de subprocesos está en la aplicación y, dado que el administrador de cookies está en el nivel de subprocesos, los valores se mantendrán para la id. De sesión para cada subproceso, respectivamente. Pero, ¿qué está causando la anulación del valor de la identificación de la sesión entre los hilos?

Cualquier ayuda será muy apreciada.

Respuesta

46

Copiado documentación jmeter:

El último elemento es una cookie HTTP Manager. Un Cookie Manager debe ser agregado a todas las pruebas web; de lo contrario, JMeter ignorará las cookies. Al agregar en el nivel del Grupo de subprocesos, nosotros aseguramos que todas las solicitudes HTTP compartan las mismas cookies.

Desde el capítulo "4.2.2 Controladores lógicos" en http://jmeter.apache.org/usermanual/test_plan.html.

EDIT: Supongo que debe usar http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controller para agrupar sus solicitudes junto con el Administrador de cookies.

1

Trate de aumentar el tiempo de aceleración. Me encontré con el mismo problema donde el tiempo de aceleración era de aproximadamente 1 segundo, luego lo aumentaba a 3 segundos por hilo y funcionaba bien.

6

Creo que la respuesta de Andrey no puede ayudar.Se cita que cada solicitud usará las mismas cookies, pero de acuerdo al manual jmeter:

Cada hilo JMeter tiene su propia "área de almacenamiento de cookies".

Por lo que entiendo la pregunta, desea que cada subproceso comparta la misma cookie de ID de sesión. Entonces me parece que necesita tener dos grupos de hilos y ejecutarlos consecutivamente. En primer grupo de hilos (con un único hilo que se ejecuta sólo una vez) debe iniciar la sesión y guardar el valor de la cookie de sesión a un parámetro global (tal vez es necesario utilizar las capacidades de scripting de JMeter). asentando después de que la galleta en el administrador de cookies del segundo grupo de hilos.

Espero que ayude.

+2

+1 a esto. * ¿Es posible "propagar" cookies a través de diferentes grupos de hilos de un mismo plan de pruebas? hilos No. JMeter pretenden representar usuarios independientes, por lo que las cookies y variables son locales de un hilo. * Como por [esta] (http://jmeter.512774.n5.nabble.com/HTTP-cookie-manager -td544523.html). –

0

Prueba esto:

Abiertas las user.properties presente en la carpeta bin de JMeter

editar y añadir la siguiente línea:

CookieManager.check.cookies=false 

Guardar y ejecutar la secuencia de comandos. Espero que solucione tu problema.

0

En primer lugar cambiar el código para:

jmeter.properties 
CookieManager.save.cookies=true 
CookieManager.name.prefix=mycookie_ 

A continuación, añadir un administrador de cookies HTTP en el mismo grupo de hilos como su muestreador java.

Luego, en el muestreador java añadir:

JMeterVariables jmv = JMeterContextService.getContext().getVariables(); 
Iterator<Map.Entry<String,Object>> it = jmv.getIterator(); 
while(it.hasNext()){ 
    Map.Entry<String,Object> v = it.next(); 
    System.out.println("name: " + v.getKey() + " value: " + v.getValue()); 
}