Ejemplo de correlación en LoadRunner con web_reg_save_param

⚡ Resumen inteligente

La función de correlación en LoadRunner captura un valor dinámico del servidor, como un ID de sesión, y lo utiliza en solicitudes posteriores para que un script VuGen grabado se reproduzca correctamente en lugar de fallar por datos obsoletos.

  • 🔘 Definición: La correlación vincula la respuesta de un servidor a cada solicitud posterior que dependa de ella.
  • ☑️ Síntoma: La reproducción falla cuando un script devuelve un ID de sesión grabada que el servidor ya no reconoce.
  • Automático: Las reglas y la detección automática de VuGen comparan dos repeticiones, pero solo cubren una pequeña parte de los casos.
  • 🧪 Manual: web_reg_save_param guarda el valor que se encuentra entre un límite izquierdo y uno derecho.
  • 🛠️ Colocación: Las funciones de registro deben estar por encima del paso cuya respuesta contiene el valor.
  • 📊 Saldar: Los scripts correlacionados se reproducen con datos actualizados y permanecen notablemente más pequeños.

Correlación en LoadRunner con web_reg_save_param

¿Qué es la correlación?

La correlación, como su nombre indica, es un mecanismo para definir una relación entre dos variables o entidades. Un diccionario la define como “una relación estadística entre dos o más variables, de tal manera que los cambios sistemáticos en una de ellas acompañan a los cambios sistemáticos en el valor de la otra”.

Nota de marca: Esta herramienta se envió como HP y luego Micro Focus LoadRunner, y es ahora OpenText Ingeniería de Desempeño Profesional. Todas las funciones de correlación a continuación permanecen sin cambios, y el proveedor deletrea el generador de scripts. VuGen.

¿Por qué necesitamos correlación?

Analicemos la correlación con el siguiente escenario.

Suponga que está grabando un guion usando LoadRunner.

La comunicación cliente-servidor durante la grabación se desarrolla de la siguiente manera, y el diagrama la resume:

  1. Durante la grabación, el cliente envía una solicitud al servidor para iniciar una sesión.
  2. Un servidor recibe la solicitud y asigna un nuevo ID de sesión ABC
  3. El cliente almacena la identificación de sesión ABC en el script.
  4. El cliente inicia la sesión con la ID ABC y envía una solicitud a un servidor para permitirle grabar.
  5. El Servidor reconoce el ID ABC y permite al cliente grabar el script

Intercambio de ID de sesión cliente-servidor durante la grabación de un script de LoadRunner.

Ahora, estudiemos la comunicación cliente-servidor durante la reproducción, que se muestra después de estos pasos:

  1. Durante la reproducción, un cliente envía una solicitud al servidor para iniciar una sesión.
  2. Un servidor recibe la solicitud y asigna un nuevo ID de sesión XYZ
  3. Un cliente inicia la sesión con el ID de sesión previamente registrado ABC y envía una solicitud al servidor para permitirle grabar.
  4. Un servidor no puede identificar el ID ABC porque esperaba el ID XYZ que ha asignado y la sesión falla.

Discrepancia en el ID de sesión durante la reproducción cuando falta la correlación.

Necesitamos una solución que pueda capturar y analizar el valor dinámico enviado en tiempo de ejecución y devolverlo al servidor. Así es como se verá la comunicación cliente-servidor con esta solución, como se muestra en el siguiente diagrama:

  1. Durante la reproducción, un cliente envía una solicitud al servidor para iniciar una sesión.
  2. Un servidor recibe la solicitud y asigna un nuevo ID de sesión ZZZ
  3. Un Cliente analiza esta nueva identificación de sesión ZZZ a partir de la solicitud.
  4. Un Cliente envía una solicitud para iniciar sesión con id ZZZ
  5. Un servidor reconoce el ID ZZZ y permite al cliente reproducir el script

Correlación que captura el nuevo ID de sesión y lo devuelve al servidor.

Esto no es más que multidominio.

El breve vídeo que aparece a continuación explica el mismo problema de grabación y reproducción.

Haga clic en aquí si el video no es accesible

En el caso de VuGen, la correlación es una relación vinculante entre una respuesta y cualquier solicitud precedente.

Existen diversas situaciones en las que una solicitud se basa en una respuesta previa del servidor, como un ID de sesión o la fecha y hora del servidor. Estos valores varían cada vez que se ejecuta una aplicación o se graba un script. Obviamente, si la ejecución del script depende de un valor devuelto por el servidor, es necesario encontrar un mecanismo para capturar la respuesta del servidor y asociarla a las solicitudes que este espera. En LoadRunner, esto se conoce como correlación.

En palabras simples, la solución usando Correlación es:

  1. Capturar el valor de salida de un paso
  2. Utilice el valor capturado anteriormente para que sirva como entrada para todos los pasos posteriores.

La correlación se clasifica en 2 categorías en VuGen/LoadRunner:

  • Correlación automática
  • correlación manual

Correlación automática

LoadRunner proporciona un mecanismo para realizar fácilmente la correlación de forma automática.

VuGen le pedirá que ejecute un script grabado al menos dos veces para que pueda comparar internamente los diferentes valores en la respuesta del servidor.

La correlación automática se puede clasificar en 3 categorías:

  • Correlación de detección automática
  • Correlación basada en reglas
  • Correlacionar todas las declaraciones
Nombre de la regla Cuándo usar
Correlación de detección automática Detectar y correlacionar datos dinámicos para servidores de aplicaciones compatibles con LoadRunner.
Basado en reglas Se utiliza cuando se trabaja con un servidor de aplicaciones no compatible cuyo contexto se conoce.
Correlacionar todo Ayuda a correlacionar todos los datos dinámicos a ciegas.

Aunque la correlación automática parece más simple, puede ser propensa a errores y no funciona en más del 5% de los casos. Siempre es recomendable utilizar la correlación manual.

Para configurar la correlación automática en el momento de la grabación, realice la siguiente configuración en Configuración de tiempo de grabación después de que se haya grabado un guión.

Haz clic en Grabar => Opciones de grabación (o pulsa Ctrl + F7), que se muestra en el menú inferior.

Menú de grabación de VuGen con la entrada Opciones de grabación seleccionada.

Se abrirá la siguiente ventana:

Ventana de opciones de grabación de VuGen que muestra los nodos de configuración de grabación.

Haga clic en Correlación =>Configuración; se abrirá la siguiente ventana.

Panel de configuración de correlación que muestra conjuntos de reglas de aplicación como ASPNET

Aquí, debe marcar como verificadas con todas las aplicaciones (ASPNET), etc., que se utilizan en su aplicación en cuestión. En el lado derecho, puede ver las reglas que detectarán posibles candidatos para la correlación, p. _VERESTADO. También puede agregar más aplicaciones o reglas personalizadas haciendo clic en el botón Nueva regla.

También puede hacer clic en REGLAS, verá lo siguiente:

Panel de reglas de correlación con la opción de escaneo de reglas disponible.

Para que la correlación automática funcione, asegúrese de que la opción "Análisis de reglas" esté marcada. Si hace clic en "Correlacionar automáticamente los valores encontrados", VuGen no le pedirá que elija una opción cuando encuentre un posible valor de correlación; simplemente los correlacionará.

Más adelante entenderemos la API que se utiliza para la correlación. Sin embargo, es recomendable utilizar la comparación HTML en lugar de la comparación de texto.

Una vez que haya seleccionado alguna regla, haga clic en el botón Aceptar para cerrar las ventanas.

Haga clic en el botón de la barra de herramientas que se muestra aquí. Botón de la barra de herramientas de VuGen utilizado para regenerar el script grabado. Seleccione la opción correspondiente en el menú y VuGen regenerará el script (sin necesidad de grabar) con las nuevas configuraciones. VuGen añadirá automáticamente el código necesario para gestionar la correlación. Analizaremos el ejemplo con más detalle en la sección de Correlación manual.

Tenga en cuenta que si realiza la correlación manualmente o utiliza la correlación automática, el fragmento de código contendrá exactamente la misma sintaxis y función.

Pasos para correlacionar automáticamente un guión:

  1. Grabar un guión
  2. Reproducir guión
  3. Identificar los valores a correlacionar.
  4. Seleccione los valores y haga clic en el botón de correlación automática
  5. Verifique el script ejecutándolo nuevamente. Una ejecución exitosa significa una correlación exitosa.

Tip:

  • La correlación ayuda a ejecutar su script con diferentes valores
  • La correlación también reduce el tamaño de su guión.

Correlación manual

La correlación manual consiste en escribir código directamente en su script para atender valores en constante cambio. Podemos dividirlo en los siguientes pasos:

  1. Determinar el valor a capturar.
  2. Encuentre los límites de texto derecho e izquierdo del valor a capturar (WEB)
  3. Encuentre qué aparición de los límites del texto se debe utilizar
  4. Agregue una función web_reg_save_param al script, encima del fragmento de código que solicita la página con el valor a capturar
  5. Agregue un nombre de parámetro, límite izquierdo, límite derecho y ocurrencia a la función
  6. Parametrizar el valor dinámico en el script cada vez que ocurra
  7. Verificar la ejecución correcta
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Code Nota: Ambos fragmentos aparecen exactamente como se publicaron. Fíjese en los ordinales: Orden=l y RelFrameId=l Utilice una L minúscula y VuGen espera el dígito 1.

La correlación manual se puede realizar mediante VUser Comparison. Los pasos del método de correlación de comparación de VUser se pueden dividir de la siguiente manera:

  1. Identificar los valores dinámicos que deben correlacionarse
  2. Encuentre la respuesta del servidor que contiene el valor dinámico.
  3. Capturar el valor dinámico en un parámetro
  4. Reemplace cada aparición del valor dinámico con el parámetro
  5. Verificar cambios

Comprensión de la función web_reg_save_param

VuGen proporciona múltiples funciones o API para correlacionar candidatos, entre las que se incluyen:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Nota de versión: Las versiones actuales de VuGen tratan web_reg_save_param_ex como sucesor de la función original, y web_reg_save_param_regexp como la elección cuando los límites mismos cambian. El ejemplo original sigue funcionando.

Si bien aquí se proporciona una breve introducción, para comprender en detalle las funciones y sus parámetros, abra VuGen, escriba la función (o utilice Steps Toolbox), mueva un cursor sobre la función y haga clic en F1; familiarícese con ella. Ayuda de VuGen y conviértelo en un hábito. Tendrás que lidiar con ello con frecuencia cuando trabajes en este sector.

Aquí vamos con los detalles de la función:

web_reg_save_param(Nombre del parámetro, Límite izquierdo, Límite derecho)

Lista de atributos

La tabla que aparece a continuación recoge todos los atributos que acepta la función, si son obligatorios y qué controlan.

Atributo ¿Necesario? ¿Qué hace?
Convertir Opcional HTML_TO_URL convierte datos codificados en HTML a un URLFormato de datos codificados en HTML. HTML_TO_TEXT convierte datos codificados en HTML a formato de texto plano.
Ignorar redirecciones Opcional, por defecto “Ignorar redirecciones=No” Cuando se establece en Sí y la respuesta del servidor es información de redirección (código de estado HTTP 300-303, 307), esa respuesta no se busca. La solicitud GET se dirige a la ubicación redirigida y la búsqueda se realiza sobre la respuesta desde allí.
LB Obligatorio El límite izquierdo del parámetro o de los datos dinámicos. Si no especifica un valor para el límite izquierdo, se utilizan todos los caracteres del inicio de los datos como límite. Los parámetros de límite distinguen entre mayúsculas y minúsculas. Para personalizar aún más el texto de búsqueda, utilice uno o más indicadores de texto.
EXTRAVIADO Opcional, valor predeterminado “error” Manejo de situaciones donde no se encuentra un límite y se genera una cadena vacía. "Not found=error" genera un error. "Not found=warning" ("Not found=empty" en versiones anteriores) establece el contador de parámetros en 0 y continúa, lo cual es ideal cuando se desea verificar si se encontró la cadena sin que el script falle. Con la opción "Continuar en caso de error" habilitada, el script continúa incluso en caso de error, pero el registro extendido lo registra.
Señor Opcional, valor predeterminado 1 Indica la posición ordinal o instancia de la coincidencia. Si especifica «Todas», guarda los valores de los parámetros en una matriz. Se admite el uso de Instancia en lugar de ORD para mantener la compatibilidad con versiones anteriores, pero está obsoleto.
RB Obligatorio El límite derecho del parámetro o de los datos dinámicos. Si no especifica un valor RB, se utilizan todos los caracteres hasta el final de los datos como límite. Los parámetros de límite distinguen entre mayúsculas y minúsculas. Para personalizar aún más el texto de búsqueda, utilice uno o más indicadores de texto.
RelFrameID Opcional El nivel de jerarquía de la página HTML en relación con la solicitud URLLos valores posibles son TODOS o un número. RelFrameID no es compatible con los scripts de nivel de interfaz gráfica de usuario.
GuardarLen Opcional, valor predeterminado -1 Longitud de una subcadena del valor encontrado, desde el desplazamiento especificado, que se guardará en el parámetro. Por defecto, se guarda al final de la cadena.
GuardarCompensación Opcional, valor predeterminado 0 El desplazamiento de una subcadena del valor encontrado, que se guardará en el parámetro. El valor de desplazamiento debe ser no negativo.
Buscar Opcional, por defecto TODOS El alcance de la búsqueda indica dónde se buscarán los datos delimitados. Los valores posibles son Encabezados (buscar solo en los encabezados), Cuerpo (buscar solo en el cuerpo, no en los encabezados), Sin recurso (buscar solo en el cuerpo HTML, excluyendo todos los encabezados y recursos) o TODOS (buscar en el cuerpo, los encabezados y los recursos).

Una vez que el script se reproduzca correctamente, agregue configuración de parametrización, transacciones y tiempo de ejecución, ejecútalo desde el Controly lea el resultado en Análisis como parte de un plan más amplio Test de rendimiento y Prueba de carga.

Preguntas Frecuentes

Repítelo dos veces con el registro extendido activado y compara las respuestas. Cualquier valor que el servidor genere en cada ejecución (identificadores de sesión, tokens, marcas de tiempo) es un posible resultado.

web_reg_save_param coincide entre límites izquierdo y derecho fijos. web_reg_save_param_regexp Coincide con una expresión regular, por lo que funciona incluso cuando cambian los límites.

Sí. El aprendizaje automático puede comparar dos respuestas de reproducción y clasificar los campos que cambian, mucho más rápido que un análisis manual. Considere la clasificación como una lista preliminar que un humano aún debe confirmar.

Copiloto de GitHub El programa redacta la llamada a la función y sus argumentos a partir de un comentario. No puede ver la respuesta del servidor, por lo que cada límite que sugiere debe comprobarse con el tráfico real.

Se trata de una función de registro: registra una búsqueda contra la siguiente respuesta que reciba VuGen. Al colocarse después de la solicitud, no queda nada que escanear y el parámetro permanece vacío.

Los límites no coinciden. Las causas habituales son un error de mayúsculas y minúsculas, un límite que aparece solo en otra página o la búsqueda en el cuerpo del texto cuando el valor se encuentra en los encabezados.

No. La parametrización introduce tus propios datos de entrada en un script desde un archivo de datos. La correlación captura un valor que el servidor genera en tiempo de ejecución y lo devuelve. La mayoría de los scripts necesitan ambos.

Sí, a menudo hay más. Los tokens de portador, los campos CSRF y los identificadores JSON cambian en cada sesión, por lo que el tráfico REST y de una sola página está lleno de posibles candidatos incluso sin un formulario HTML.

Resumir este post con: