test peticion http-headers jmeter

http headers - peticion - JMeter Alterar los encabezados HTTP durante la prueba



peticion web service soap jmeter (3)

Estoy intentando probar un servicio HTTP con JMeter. El servicio HTTP requiere autenticación a través de un mecanismo de token de portador simple. Estoy tratando de proceder de la siguiente manera:

  1. Solicitud de autenticación POST
  2. Almacenar el token como una variable
  3. Establecer el encabezado HTTP de autorización para la variable almacenada
  4. Solicitar recurso (s) protegido (s)
  5. Evaluar el rendimiento

Hasta ahora he podido publicar la solicitud, obtener el token, extraerlo con expresiones regulares, guardarlo en una variable y afirmar que la variable está correctamente establecida.

El problema es conseguir la variable en el encabezado HTTP. En el "Administrador de encabezados" el valor se establece de esta manera:

Desafortunadamente, cuando se emiten las siguientes solicitudes, su encabezado de autorización tiene el valor "Portador". La búsqueda en Internet me llevó a creer que los encabezados están configurados antes de que comience el hilo , lo que explicaría el "Portador"

Mi muestreo / agrupación / anidación es el siguiente:

Todas las pruebas pasan para obtener un recurso restringido, que falla con un 400, ya que el encabezado de autorización tiene un formato incorrecto.

Siento que me estoy perdiendo algo realmente obvio, y / o estoy abordando este problema de manera incorrecta.


Consulte la publicación de este foro: http://www.jmeter-archive.org/Variables-in-HTTP-headers-td4579331.html

Necesita mover su nombre de usuario bajo un controlador. En mi caso, utilicé un controlador Only Once. Luego, después del controlador, puede agregar el Administrador de encabezado HTTP con el encabezado de Autorización como "Portador $ {BEARER}" y leerá su variable. Esto es mejor que la otra respuesta porque entonces no necesita duplicar el preprocesador BeanShell en cada solicitud. Mi árbol se veía así:



Edición en agosto de 2017:

  • Aunque esta respuesta es correcta y aceptada por el autor, es demasiado compleja y la respuesta correcta debe ser la que se encuentra a continuación, que es mucho más simple y fácil de mantener https://.com/a/43283700/460802 .

Puede construir dinámicamente su encabezado de autorización utilizando el preprocesador Beanshell de la siguiente manera:

  1. Agregue el Administrador de encabezado HTTP vacío como un elemento secundario de su solicitud que requiere autorización
  2. Agregue el preprocesador Beanshell como hijo de la misma solicitud con el siguiente código:

    import org.apache.jmeter.protocol.http.control.Header; sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("BEARER")));

Esto construirá un encabezado completamente dinámico utilizando la variable BEARER .

  • sampler es una abreviatura de la clase HTTPSamplerProxy que da acceso a la instancia principal de Sampler
  • vars es la instancia de la clase JMeterVariables que permite el acceso de lectura / escritura a todas las variables de JMeter disponibles dentro de los límites del contexto actual (generalmente Grupo de subprocesos actual)

Consulte Cómo usar BeanShell: la guía de componentes incorporada favorita de JMeter para obtener más detalles sobre los scripts de Beanshell y el tipo de libro de cocina de Beanshell.