Buscar..


Introducción

En las pruebas de rendimiento de JMeter, las correlaciones se refieren a la capacidad de obtener datos dinámicos de la respuesta del servidor y publicarlos en las solicitudes posteriores. Esta característica es crítica para muchos aspectos de las pruebas, como las aplicaciones protegidas basadas en token.

Correlación utilizando el extractor de expresiones regulares en Apache JMeter

Si necesita extraer información de una respuesta de texto, la forma más sencilla es usar expresiones regulares. El patrón coincidente es muy similar al utilizado en Perl. Supongamos que queremos probar el flujo de trabajo de compra de un billete de avión. El primer paso es enviar la operación de compra. El siguiente paso es asegurarnos de que podamos verificar todos los detalles mediante el ID de compra, que debe devolverse para la primera solicitud. Imaginemos que la primera solicitud devuelve una página html con este tipo de ID que necesitamos extraer:

<div class="container">
  <div class="container hero-unit">
    <h1>Thank you for you purchse today!</h1>
       <table class="table">
           <tr>
             <td>Id</td>
             <td>Your purchase id is 1484697832391</td>
           </tr>
           <tr>
             <td>Status</td>
             <td>Pending</td>
           </tr>
           <tr>
             <td>Amount</td>
             <td>120 USD</td>
            </tr>
         </table>
    </div>
</div>

Este tipo de situación es el mejor candidato para usar el extractor de expresiones regulares JMeter. Expresión regular es una cadena de texto especial para describir un patrón de búsqueda. Hay muchos recursos en línea que ayudan a escribir y probar expresiones regulares. Uno de ellos es https://regex101.com/ .

introduzca la descripción de la imagen aquí

Para usar este componente, abra el menú JMeter y: Agregar -> Postprocesadores -> Extractor de expresiones regulares

introduzca la descripción de la imagen aquí

El extractor de expresiones regulares contiene estos campos:

  • Nombre de referencia: el nombre de la variable que se puede usar después de la extracción
  • Expresión regular: una secuencia de símbolos y caracteres que expresan una cadena (patrón) que se buscará dentro del texto.
  • Plantilla - contiene referencias a los grupos. Como una expresión regular puede tener más de un grupo, permite especificar qué valor de grupo extraer, especificando el número de grupo como $ 1 $ o $ 2 $ o $ 1 $$ 2 $ (extraiga ambos grupos)
  • Nº de coincidencia: especifica qué coincidencia se utilizará (el valor 0 coincide con los valores aleatorios / cualquier número positivo N significa que se debe utilizar la coincidencia Nth / el valor negativo se debe usar con el controlador ForEach)
  • Predeterminado: el valor predeterminado que se almacenará en la variable en caso de que no se encuentren coincidencias, se almacena en la variable.

La casilla de verificación "Aplicar a" trata los ejemplos que realizan solicitudes de recursos incrustados. Este parámetro define si la Expresión regular se aplicará a los resultados de la muestra principal o a todas las solicitudes, incluidos los recursos incrustados. Hay varias opciones para este parámetro:

  • Muestra principal y submuestras.
  • Solo muestra principal
  • Solo submuestras
  • Variable de JMeter: la aserción se aplica al contenido de la variable nombrada, que se puede completar con otra solicitud

La casilla de verificación "Campo a marcar" permite elegir a qué campo se debe aplicar la expresión regular. Casi todos los parámetros son auto descriptivos:

  • Cuerpo: el cuerpo de la respuesta, por ejemplo, el contenido de una página web (excluyendo los encabezados)
  • Cuerpo (sin escape): el cuerpo de la respuesta, con todos los códigos de escape HTML reemplazados. Tenga en cuenta que los escapes HTML se procesan sin tener en cuenta el contexto, por lo que se pueden realizar algunas sustituciones incorrectas (* esta opción tiene un gran impacto en el rendimiento)
  • Cuerpo - Cuerpo como documento: el texto extraído de varios tipos de documentos a través de Apache Tika (* también puede afectar el rendimiento)
  • Cuerpo - Encabezados de solicitud - puede no estar presente para muestras no HTTP
  • Cuerpo - Cabeceras de respuesta: puede no estar presente para muestras no HTTP
  • Cuerpo - URL
  • Código de respuesta - ej. 200
  • Cuerpo - Mensaje de respuesta - por ejemplo, OK

Una vez que se extrae la expresión, se puede usar en solicitudes posteriores utilizando la variable $ {purchaseId}.

introduzca la descripción de la imagen aquí

Esta tabla contiene todas las contracciones que son compatibles con las expresiones regulares de JMeter:

introduzca la descripción de la imagen aquí introduzca la descripción de la imagen aquí

Correlación utilizando el XPath Extractor en JMeter

XPath se puede utilizar para navegar a través de elementos y atributos en un documento XML. Podría ser útil cuando los datos de la respuesta no se pueden extraer con el Extractor de expresiones regulares. Por ejemplo, en el caso de un escenario en el que necesita extraer datos de etiquetas similares con los mismos atributos, pero de valores diferentes. El XPath Extractor es similar al CSS / JQuery Extractor, pero XPath Extractor debe usarse para contenido XML, mientras que CSS / JQuery Extractor debe usarse para contenido HTML. Supongamos que en la respuesta tenemos una tabla con diferentes valores donde necesitamos extraer el valor de la segunda fila de la tabla.

<div id="weeklyPrices">
    <tr>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$60.00</td>
        <td>$70.00</td>
        <td>$70.00</td>
    </tr>
</div>

De cara al futuro, la XPath correcta para ese caso será: // div [@ id = 'weeklyPrices'] / tr / td 1

Para usar este componente, abra el menú JMeter y: Agregar -> Postprocesadores -> Extractor XPath

introduzca la descripción de la imagen aquí

XPath Extractor contiene varios elementos de configuración comunes que se mencionan en la 'Correlación que usa el Expresor Regular Extractor'. Esto incluye Nombre, Aplicar a, Nombre de referencia, Número de coincidencia (desde JMeter 3.2) y Valor predeterminado.

Hay muchos recursos web con hojas de trucos y editores en línea para crear y probar su xpath creado (como este ). Pero según los ejemplos a continuación, podemos encontrar la manera de crear los localizadores xpath más comunes.

introduzca la descripción de la imagen aquí

Si desea analizar HTML en XHTML, tenemos que marcar la opción "Usar Tidy". Después de decidir sobre el estado "Usar ordenado", también hay opciones adicionales:

Si se marca 'Usar Tidy':

  • Silencio - Establece la bandera Tidy Quiet
  • Informar de errores: si se produce un error de Tidy, configure la aserción en consecuencia
  • Mostrar advertencias: establece la opción Advertencias de mostrar ordenadas

Si 'Usar Tidy' no está marcado:

  • Usar espacios de nombres: si se marca, el analizador XML usará la resolución del espacio de nombres
  • Validar XML: verifique el documento con su esquema especificado
  • Ignorar espacios en blanco - ignorar elementos en blanco
  • Recuperar DTD externas: si se seleccionan, se recuperan las DTD externas

'Devolver todo el fragmento de XPath en lugar de contenido de texto' es auto-descriptivo y debe usarse si desea devolver no solo el valor xpath, sino también el valor dentro de su localizador xpath. Podría ser útil para las necesidades de depuración.

También vale la pena mencionar que hay una lista de complementos de navegador muy convenientes para probar los localizadores XPath. Para Firefox puedes usar el complemento ' Firebug ', mientras que para Chrome el ' XPath Helper ' es la herramienta más conveniente.

introduzca la descripción de la imagen aquí

Correlación usando el Extractor CSS / JQuery en JMeter

El extractor de CSS / JQuery permite extraer valores de una respuesta del servidor mediante el uso de una sintaxis de selector de CSS / JQuery, que de otro modo podría haber sido difícil de escribir con Expresión Regular. Como postprocesador, este elemento debe ejecutarse para extraer los nodos, el texto o los valores de atributo solicitados de un muestreador de solicitudes, y para almacenar el resultado en la variable dada. Este componente es muy similar al XPath Extractor. La elección entre CSS, JQuery o XPath por lo general depende de las preferencias del usuario, pero vale la pena mencionar que XPath o JQuery pueden desplazarse hacia abajo y también hacia el DOM, mientras que CSS no puede subir el DOM. Supongamos que queremos extraer todos los temas de la documentación de desbordamiento de pila relacionados con Java. Se puede utilizar el Firebug plugin para probar sus selectores CSS / JQuery en Firefox, o el CSS probador del selector en Chrome.

introduzca la descripción de la imagen aquí

Para usar este componente, abra el menú JMeter y: Agregar -> Postprocesadores -> CSS / JQuery Extractor

introduzca la descripción de la imagen aquí

Casi todos los campos de este extractor son similares a los campos del extractor de expresiones regulares, por lo que puede obtener su descripción de ese ejemplo. Sin embargo, una diferencia es el campo "Implementación de CSS / JQuery Extractor". Desde JMeter 2.9 puede usar el extractor CSS / JQuery basado en dos implementaciones diferentes: la implementación jsoup (descripción detallada de su sintaxis aquí ) o el JODD Lagarto (la sintaxis detallada se puede encontrar aquí ). Ambas implementaciones son casi iguales y tienen pequeñas diferencias de sintaxis. La elección entre ellos se basa en la preferencia del usuario.

introduzca la descripción de la imagen aquí

De acuerdo con la configuración mencionada anteriormente, podemos extraer todos los temas de la página solicitada y verificar los resultados extraídos utilizando el "Debug Sampler" y el oyente "Ver el árbol de resultados".

Correlación utilizando el extractor JSON

JSON es un formato de datos de uso común que se utiliza en aplicaciones basadas en web. El JMeter JSON Extractor proporciona una forma de utilizar expresiones de ruta JSON para extraer valores de respuestas basadas en JSON en JMeter. Este postprocesador debe colocarse como un elemento secundario de la Muestra HTTP o para cualquier otra muestra que tenga respuestas.

Para usar este componente, abra el menú JMeter y: Agregar -> Postprocesadores -> Extractor JSON.

introduzca la descripción de la imagen aquí

El Extractor JSON es muy similar al Extractor de expresiones regulares. Casi todos los campos principales se mencionan en ese ejemplo. Solo hay un parámetro específico de JSON Extractor: 'Compute concatenation var'. En caso de que se encuentren muchos resultados, este extractor los concatenará utilizando el separador ',' y almacenándolos en una var llamada _ALL.

Asumamos esta respuesta del servidor con JSON:

{ 
    "store": {
        "book": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
        "color": "red",
        "price": 19.95
    }
  }
}

La tabla a continuación proporciona un gran ejemplo de diferentes maneras de extraer datos de un JSON específico:

introduzca la descripción de la imagen aquí

A través de este enlace puede encontrar una descripción más detallada del formato de ruta JSON, con ejemplos relacionados.

Correlación automatizada mediante el uso de 'SmartJMX' de BlazeMeter

Cuando escribe manualmente sus secuencias de comandos de rendimiento, necesita lidiar con la correlación usted mismo. Pero hay otra opción para crear sus scripts: grabación de automatización de scripts. Por un lado, el enfoque manual ayuda a escribir scripts estructurados y puede agregar todos los extractores necesarios al mismo tiempo. Por otro lado, este enfoque consume mucho tiempo.

La grabación de scripts de automatización es muy fácil y le permite hacer el mismo trabajo, solo que mucho más rápido. Pero si utiliza métodos de grabación comunes, los scripts estarán muy desestructurados y, por lo general, requerirán agregar parametrización adicional. La función "Smart JMX" en la grabadora Blazemeter combina las ventajas de ambas formas. Se puede encontrar en este enlace: [ https://a.blazemeter.com/app/recorder/index.html◆◆1]

Después de registrarse vaya a la sección "Grabadora".

introduzca la descripción de la imagen aquí

Para iniciar la grabación de secuencias de comandos, primero debe configurar el proxy de su navegador (que se trata aquí ), pero esta vez debe obtener un host proxy y un puerto proporcionado por la grabadora BlazeMeter.

introduzca la descripción de la imagen aquí

Cuando el navegador está configurado, puede continuar con la grabación del script presionando el botón rojo en la parte inferior. Ahora puede ir a la aplicación bajo prueba y realizar flujos de trabajo de usuario para la grabación.

introduzca la descripción de la imagen aquí

Después de grabar el script, puede exportar los resultados a un archivo JMX “SMART”. Un archivo jmx exportado contiene una lista de opciones que le permiten configurar su script y parametrizar, sin esfuerzos adicionales. Una de estas mejoras es que el JMX “INTELIGENTE” encuentra automáticamente candidatos de correlación, lo sustituye con el extractor apropiado y proporciona una manera fácil para una mayor parametrización.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow