Correlação no LoadRunner com o exemplo web_reg_save_param

⚡ Resumo Inteligente

A correlação no LoadRunner captura um valor dinâmico do servidor, como um ID de sessão, e o realimenta em solicitações posteriores, para que um script VuGen gravado seja reproduzido com sucesso em vez de falhar devido a dados desatualizados.

  • 🔘 Definição: A correlação vincula uma resposta do servidor a todas as solicitações subsequentes que dependem dela.
  • ☑️ Sintoma: A reprodução falha quando um script retorna um ID de sessão gravado que o servidor não reconhece mais.
  • Automático: As regras e a detecção automática do VuGen comparam duas repetições, mas abrangem apenas uma pequena parte dos casos.
  • 🧪 Manual: A função web_reg_save_param salva o valor situado entre os limites esquerdo e direito.
  • 🛠️ Colocação: As funções de registro devem estar acima da etapa cuja resposta contém o valor.
  • 📊 Pague: Scripts correlacionados são reproduzidos com dados atualizados e permanecem visivelmente menores.

Correlação no LoadRunner com web_reg_save_param

O que é Correlação?

Correlação, como o próprio nome sugere, é um mecanismo para definir uma relação entre duas variáveis ​​ou entidades. Um dicionário a define como “relação estatística entre duas ou mais variáveis, de modo que mudanças sistemáticas em uma delas acompanham mudanças sistemáticas no valor de uma das variáveis”.

Nota da marca: esta ferramenta foi lançada como HP e depois Micro Focus LoadRunnere agora é OpenText Engenharia de Desempenho ProfissionalTodas as funções de correlação abaixo permanecem inalteradas, e o fornecedor fornece o gerador de scripts. VuGen.

Por que precisamos de correlação?

Vamos entender a correlação com o seguinte cenário.

Imagine que você está gravando um roteiro usando LoadRunner.

A comunicação cliente-servidor durante a gravação ocorre da seguinte forma, e o diagrama a resume:

  1. Durante a gravação, o cliente envia uma solicitação ao servidor para iniciar uma sessão.
  2. Um servidor recebe a solicitação e aloca um novo ID de sessão ABC
  3. O cliente armazena o ID da sessão ABC no script.
  4. O cliente inicia a sessão com o ID ABC e envia uma solicitação a um servidor para permitir a gravação.
  5. O Servidor reconhece o ID ABC e permite que o cliente grave o script

Troca de IDs de sessão cliente-servidor durante a gravação de um script LoadRunner.

Agora, vamos estudar a comunicação cliente-servidor durante a reprodução, mostrada após estas etapas:

  1. Durante o Replay, um cliente envia uma solicitação ao servidor para iniciar uma sessão
  2. Um servidor recebe a solicitação e aloca um novo ID de sessão XYZ
  3. Um cliente inicia a sessão com o ID de sessão previamente gravado, ABC, e envia uma solicitação ao servidor para permitir a gravação.
  4. Um servidor não consegue identificar o ID ABC porque esperava o ID XYZ alocado e a sessão falha.

Incompatibilidade de ID de sessão durante a reprodução quando a correlação está ausente.

Precisamos de uma solução que consiga capturar e analisar o valor dinâmico enviado em tempo de execução e retornar esse valor para o servidor. Veja como a comunicação cliente-servidor funcionará com essa solução, conforme ilustrado no diagrama abaixo:

  1. Durante o Replay, um cliente envia uma solicitação ao servidor para iniciar uma sessão
  2. Um servidor recebe a solicitação e aloca um novo ID de sessão ZZZ
  3. Um cliente analisa este novo ID de sessão ZZZ da solicitação.
  4. Um cliente envia uma solicitação para iniciar sessão com id ZZZ
  5. Um servidor reconhece o ID ZZZ e permite que o cliente reproduza o script

A correlação captura o novo ID da sessão e o retorna para o servidor.

Isso não é nada além correlação.

O breve vídeo abaixo demonstra o mesmo problema de gravação e reprodução.

Clique aqui. se o vídeo não estiver acessível

No caso do VuGen, correlação é uma relação vinculativa entre uma resposta e qualquer solicitação precedente.

Existem diversas situações em que uma requisição se baseia em uma resposta previamente recebida do servidor, como um ID de sessão ou a data e hora do servidor. Esses valores são diferentes a cada execução de um aplicativo ou gravação de um script. Obviamente, se a execução do script depende de um valor retornado pelo servidor, é necessário encontrar um mecanismo para "capturar" a resposta do servidor e associá-la às requisições que o servidor espera. Isso é normalmente chamado de Correlação no LoadRunner.

Em palavras simples, a solução usando Correlação é:

  1. Capture o valor de saída de uma etapa
  2. Use o valor capturado acima para servir como entrada para todas as etapas subsequentes

A correlação é classificada em 2 categorias no VuGen/LoadRunner:

  • Correlação automática
  • Correlação manual

Correlação Automática

LoadRunner fornece um mecanismo para executar facilmente a correlação de forma automática.

O VuGen exigirá que você execute um script gravado pelo menos duas vezes para que ele possa comparar internamente os diferentes valores na resposta do servidor.

A correlação automática pode ser classificada em 3 categorias:

  • Correlação de detecção automática
  • Correlação Baseada em Regras
  • Correlacionando todas as declarações
Nome da Regra Quando usar
Correlação de detecção automática Detectar e correlacionar dados dinâmicos para servidores de aplicativos compatíveis com LoadRunner.
Baseado em regras Usado ao trabalhar com um servidor de aplicativos não suportado cujo contexto é conhecido.
Correlacionar tudo Ajuda a correlacionar todos os dados dinâmicos de forma cega.

Embora a Correlação Automática pareça mais simples, ela pode ser propensa a erros e funciona em no máximo 5% dos casos. É sempre aconselhável usar correlação manual.

Para configurar a correlação automática no momento da gravação, execute a configuração abaixo em Configuração de tempo de gravação após a gravação de um script.

Clique em Gravar => Opções de gravação (ou pressione Ctrl + F7), conforme mostrado no menu abaixo.

Menu VuGen Record com a entrada Opções de Gravação selecionada

A janela abaixo será aberta:

A janela Opções de Gravação do VuGen lista os nós de configuração de gravação.

Clique em Correlação =>Configuração – a janela abaixo será aberta.

O painel de Configuração de Correlação lista conjuntos de regras de aplicativos, como o ASP.NET.

Aqui, você precisa marcar como verificado em todos os aplicativos (ASPNET) etc., que são usados ​​em seu aplicativo em questão. No lado direito, você pode ver as regras que detectarão possíveis candidatos para correlação, por exemplo, _VIEWSTATE. Você também pode adicionar mais aplicativos ou regras personalizadas clicando no botão Nova Regra.

Você também pode clicar em REGRAS, você verá como abaixo:

Painel de Regras de Correlação com a opção de Varredura de Regras disponível

Para que a Correlação Automática funcione, você precisa garantir que a opção "Verificação de Regras" esteja marcada. Se você clicar em "Correlacionar automaticamente os valores encontrados", o VuGen não exibirá a opção de escolha assim que um candidato à correlação for encontrado; em vez disso, ele simplesmente os correlacionará.

Entenderemos a API usada para correlação posteriormente. No entanto, é aconselhável usar a comparação HTML em vez da comparação de texto.

Depois de selecionar qualquer regra, clique no botão OK para fechar as janelas.

Clique no botão da barra de ferramentas mostrado aqui. Botão da barra de ferramentas do VuGen usado para regenerar o script gravado. A partir do menu, o VuGen irá regenerar o script (sem a necessidade de gravação) com as novas configurações. O VuGen adicionará automaticamente o trecho de código necessário para lidar com a correlação. Analisaremos o exemplo com mais detalhes em Correlação Manual.

Observe que se você executar a correlação manualmente ou usar a correlação automática, o trecho de código conterá exatamente a mesma sintaxe e função.

Etapas para correlacionar automaticamente um script:

  1. Grave um roteiro
  2. Roteiro de repetição
  3. Identifique os valores a serem correlacionados
  4. Selecione os valores e clique no botão de correlação automática
  5. Verifique o script executando novamente. Uma execução bem-sucedida significa correlação bem-sucedida.

Dica:

  • A correlação ajuda a executar seu script com valores diferentes
  • A correlação também reduz o tamanho do seu script

Correlação Manual

A correlação manual consiste em escrever código diretamente em seu script para atender a valores em constante mudança. Podemos dividi-lo nas etapas abaixo:

  1. Determine o valor a capturar
  2. Encontre os limites de texto direito e esquerdo do valor a ser capturado (WEB)
  3. Descubra qual ocorrência dos limites do texto deve ser usada
  4. Adicione uma função web_reg_save_param ao script, acima do trecho de código que solicita a página com o valor a ser capturado
  5. Adicione um nome de parâmetro, limite esquerdo, limite direito e ocorrência à função
  6. Parametrize o valor dinâmico no script sempre que ele ocorrer
  7. Verifique a execução correta
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 notas: Ambos os trechos aparecem exatamente como foram publicados. Observe os números ordinais: Ord=l e RelFrameId=l Use um L minúsculo, e o VuGen espera o dígito 1.

A correlação manual pode ser feita por VUser Comparison. As etapas no método de correlação de comparação VUser podem ser divididas conforme abaixo:

  1. Identifique valores dinâmicos que precisam ser correlacionados
  2. Encontre a resposta do servidor que contém o valor dinâmico.
  3. Capture o valor dinâmico em um parâmetro
  4. Substitua todas as ocorrências do valor Dinâmico pelo parâmetro
  5. Verifique as alterações

Entendendo a função web_reg_save_param

O VuGen fornece diversas funções ou APIs para correlacionar candidatos, incluindo:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Nota de versão: As versões atuais do VuGen tratam web_reg_save_param_ex como sucessora da função original, e web_reg_save_param_regexp como a escolha quando os próprios limites mudam. O exemplo original ainda funciona.

Embora esta seja uma breve introdução, para uma compreensão detalhada das funções e seus parâmetros, abra o VuGen, escreva uma função (ou use a Caixa de Ferramentas de Etapas), mova o cursor sobre a função e pressione F1 – familiarize-se com o assunto. Ajuda do VuGen E faça disso um hábito. Você terá que lidar com isso muitas vezes ao trabalhar no setor.

Aqui vamos nós com os detalhes da função:

web_reg_save_param(Nome do parâmetro, limite esquerdo, limite direito)

Lista de atributos

A tabela abaixo reúne todos os atributos que a função aceita, se são obrigatórios e o que controlam.

Atributo Requeridos? O que ele faz
Converter Opcional HTML_PARA_URL Converte dados codificados em HTML para um URLO formato de dados codificados em HTML, HTML_TO_TEXT, converte dados codificados em HTML para formato de texto simples.
Ignorar redirecionamentos Opcional, padrão “Ignorar redirecionamentos=Não” Quando definido como "Sim" e a resposta do servidor for uma informação de redirecionamento (código de status HTTP 300-303, 307), essa resposta não é pesquisada. A solicitação GET é enviada para o local redirecionado e a pesquisa é executada na resposta a partir desse local.
LB Exigido O limite esquerdo do parâmetro ou dos dados dinâmicos. Se você não especificar um valor para LB, serão usados ​​todos os caracteres do início dos dados como limite. Os parâmetros de limite diferenciam maiúsculas de minúsculas. Para personalizar ainda mais o texto da pesquisa, use um ou mais indicadores de texto.
NÃO ENCONTRADO Opcional, padrão “erro” Tratamento de erros quando um limite não é encontrado e uma string vazia é gerada. “Não encontrado=erro” gera um erro. “Não encontrado=aviso” (“Não encontrado=vazio” em versões anteriores) define a contagem de parâmetros como 0 e continua, o que é ideal quando você deseja verificar se a string foi encontrada sem interromper o script. Com a opção Continuar em caso de erro ativada, o script continua mesmo em caso de erro, mas o log estendido registra a ocorrência.
ORD Opcional, padrão 1 Indica a posição ordinal ou instância da correspondência. Se você especificar "All", os valores dos parâmetros serão salvos em uma matriz. O uso de `Instance` em vez de `ORD` é suportado para compatibilidade com versões anteriores, mas está obsoleto.
RB Exigido O limite direito do parâmetro ou dos dados dinâmicos. Se você não especificar um valor para RB, serão usados ​​todos os caracteres até o final dos dados como limite. Os parâmetros de limite diferenciam maiúsculas de minúsculas. Para personalizar ainda mais o texto da pesquisa, use um ou mais indicadores de texto.
RelFrameID Opcional O nível hierárquico da página HTML em relação ao solicitado URLOs valores possíveis são TODOS ou um número. RelFrameID não é suportado em scripts de nível de GUI.
SalvarLen Opcional, valor padrão -1 O comprimento de uma subcadeia de caracteres do valor encontrado, a partir do deslocamento especificado, a ser salva no parâmetro. O padrão salva até o final da cadeia de caracteres.
Salvar deslocamento Opcional, padrão 0 O deslocamento de uma subcadeia de caracteres do valor encontrado, a ser salvo no parâmetro. O valor do deslocamento deve ser não negativo.
Pesquisar Opcional, padrão TODOS O escopo da pesquisa — onde procurar os dados delimitados. Os valores possíveis são: Cabeçalhos (pesquisar somente os cabeçalhos), Corpo (pesquisar somente os dados do corpo, não os cabeçalhos), Nenhum recurso (pesquisar somente o corpo HTML, excluindo todos os cabeçalhos e recursos) ou TUDO (pesquisar corpo, cabeçalhos e recursos).

Assim que o script for reproduzido corretamente, adicione Parametrização, transações e configurações de tempo de execução, execute-o a partir do Responsável pelo Tratamento e leia o resultado em Análise como parte de algo mais amplo Teste de Desempenho e Teste de carga.

Perguntas Frequentes

Repita o processo duas vezes com o login estendido e compare as respostas. Qualquer valor que o servidor emita a cada execução — IDs de sessão, tokens, carimbos de data/hora — é um candidato.

web_reg_save_param corresponde a limites fixos à esquerda e à direita. web_reg_save_param_regexp corresponde a uma expressão regular, portanto, funciona mesmo quando os próprios limites mudam.

Sim. O aprendizado de máquina consegue comparar duas respostas de reprodução e classificar os campos que mudam, muito mais rápido do que uma análise manual. Considere a classificação como uma lista restrita que ainda precisa ser confirmada por um humano.

Copiloto do GitHub Ela elabora a chamada da função e seus argumentos a partir de um comentário. Como não consegue ver a resposta do servidor, cada limite sugerido deve ser verificado em relação ao tráfego real.

Trata-se de uma função de registro: ela registra uma busca na próxima resposta que o VuGen receber. Como é inserida após a requisição, não há mais nada para escanear e o parâmetro permanece vazio.

Os limites não coincidiram. As causas mais comuns são: diferença entre maiúsculas e minúsculas, um limite que aparece apenas em outra página ou a busca no corpo da página quando o valor está nos cabeçalhos.

Não. A parametrização alimenta um script com seus próprios dados de entrada a partir de um arquivo de dados. A correlação captura um valor gerado pelo servidor em tempo de execução e o retorna. A maioria dos scripts precisa de ambos.

Sim, geralmente em maior quantidade. Tokens de portador, campos CSRF e identificadores JSON mudam a cada sessão, portanto, o tráfego REST e de página única está repleto de candidatos, mesmo sem um formulário HTML.

Resuma esta postagem com: