java - cookies jmeter
GestiĆ³n de sesiones/cookies en Apache JMeter (5)
Tenemos un flujo de prueba de rendimiento simple en una aplicación.
- Inicia sesión
- Búsqueda basada en algunos criterios
- repite búsquedas para diferentes parámetros.
Estamos usando 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 tenemos esto arreglado actualmente 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, tenemos una tabla resumen de resultados y un informe presente en el nivel del plan, mientras que el administrador de cookies está presente en el nivel del grupo de hilos.
Cuando corro por 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:
1. Si ejecuto varios hilos, solo el último hilo tiene respuestas válidas en el árbol de resumen de resultados
2. Si corro con 2 hilos con un período de incremento como 10 segundos, lo que significa que cada hilo tiene tiempo para terminar, ambos se ejecutarán correctamente.
Según mi entendimiento, cada inicio de sesión de subprocesos en la aplicación y dado que el administrador de cookies está en el nivel de subproceso, 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.
Copiado de la documentación de jmeter:
El último elemento es un Administrador de cookies HTTP. Se debe agregar un Administrador de cookies a todas las pruebas web; de lo contrario, JMeter ignorará las cookies. Al agregarlo en el nivel del Grupo de subprocesos, nos aseguramos de que todas las solicitudes HTTP compartan las mismas cookies.
Del capítulo "4.2.2 Controladores lógicos" en http://jmeter.apache.org/usermanual/test_plan.html .
EDITAR : Supongo que debe usar http://jmeter.apache.org/usermanual/component_reference.html#Simple_Controller para agrupar sus solicitudes junto con el Administrador de cookies.
Creo que la respuesta de Andrey no puede ayudar. Él cita que cada solicitud usará las mismas cookies PERO de acuerdo con el manual de jmeter:
Cada subproceso de JMeter tiene su propio "área de almacenamiento de cookies".
Por lo que entiendo la pregunta, quiere que cada hilo comparta la misma cookie de ID de sesión. Entonces me parece que necesita tener dos grupos de hilos y ejecutarlos consecutivamente. El primer grupo de subprocesos (con un único subproceso que se ejecuta una sola vez) debe iniciar sesión y guardar el valor de la cookie de sesión en un parámetro global (quizás necesite usar las capacidades de scripts de jmeter). Luego, configure esa cookie en el administrador de cookies del segundo grupo de hilos.
Espero que ayude.
Intenta 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.
Primero cambia tu código a:
jmeter.properties
CookieManager.save.cookies=true
CookieManager.name.prefix=mycookie_
A continuación, agregue un administrador de cookies HTTP en el mismo grupo de hilos que su muestreador de Java.
Luego, en tu muestra de java agrega:
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());
}
Prueba esto:
Abra user.properties presente en la carpeta bin de JMeter
Edítelo y agregue la siguiente línea:
CookieManager.check.cookies=false
Guárdelo y ejecute el script. Espero que solucione tu problema.