Parametrização, Funções, Transações no LoadRunner

⚡ Resumo Inteligente

A parametrização, as transações e as configurações de tempo de execução são os três aprimoramentos que transformam uma simples gravação do VuGen em um script que se comporta como um usuário real e fornece relatórios de tempo nos quais você pode realmente confiar.

  • 🔘 Transações: Envolva a solicitação em `lr_start_transaction` e `lr_end_transaction` para definir o tempo de execução.
  • ☑️ Códigos de status: Encerre uma transação com LR_AUTO, LR_PASS ou LR_FAIL.
  • Encontro: Reúna os usuários virtuais em um ponto de encontro para que eles acessem o servidor simultaneamente.
  • 🧪 Parametrização: Substitua datas, IDs e logins fixos por valores específicos de cada iteração.
  • 🛠️ Configurações de tempo de execução: Lógica de execução, ritmo, registro de logs, tempo de espera, largura de banda, navegador, proxy.
  • 📊 Repetibilidade: Configurações inconsistentes são a causa usual de resultados irrepetíveis.

Parametrização, transações e funções no LoadRunner VuGen

Um roteiro gravado pode simular um usuário virtual; no entanto, uma simples gravação pode não ser suficiente para replicar o comportamento de um usuário real.

Quando um script é gravado, ele cobre um fluxo único e direto pelo aplicativo em questão. Um usuário real pode realizar várias iterações de um processo antes de sair. O atraso entre os cliques nos botões (tempo de resposta) varia de pessoa para pessoa, e alguns usuários acessam seu aplicativo por meio de uma conexão rápida, enquanto outros não. Portanto, para obter uma experiência realista do usuário final, precisamos aprimorar nossos scripts para que se comportem de maneira muito semelhante à de usuários reais.

Essa é a consideração mais importante ao conduzir “Teste de DesempenhoMas um script de usuário virtual (VUser) é mais complexo. Como você medirá o tempo gasto por um VUser enquanto o Sistema Sob Carga (SUL) está sendo testado? Como você saberá se o VUser passou ou falhou em um determinado ponto, e se um processo em segundo plano falhou ou se os recursos do servidor se esgotaram?

Precisamos aprimorar nosso roteiro para ajudar a responder a todas as perguntas acima.

Nota da marca: A VuGen foi lançada como HP, depois como Micro Focus, e agora faz parte da... OpenText Engenharia de Desempenho ProfissionalAs funções e configurações abaixo permanecem inalteradas.

Usando transações

As transações medem o tempo de resposta do servidor para qualquer operação. Em outras palavras, uma "transação" mede o tempo que o sistema leva para processar uma solicitação específica. Pode ser algo tão simples quanto um clique de botão ou uma chamada AJAX disparada quando uma caixa de texto perde o foco.

Aplicar transações é simples. Basta escrever uma linha de código antes da requisição ser feita e fechar a transação quando a requisição terminar. O LoadRunner requer apenas uma string como nome da transação.

Para abrir uma transação, use esta linha de código:

lr_start_transaction(“Transaction Name”);

Para fechar a transação, use esta linha de código:

lr_end_transaction(“Transaction Name”, <status>);

O informa ao LoadRunner se esta transação específica foi bem-sucedida ou malsucedida. Os possíveis parâmetros poderiam ser:

  • LR_AUTO
  • LR_PASS
  • LR_FAIL

Exemplo:

lr_end_transaction(“My_Login”, LR_AUTO);
lr_end_transaction(“001_Opening_Dashboard Name”, LR_PASS);
lr_end_transaction(“Business_Workflow_Transaction Name”, LR_FAIL);

Code notas: Os trechos de código são reproduzidos exatamente como publicados, incluindo as aspas tipográficas. Um script VuGen real precisa de aspas duplas ASCII retas, portanto, digite-as novamente se copiar este código.

Pontos a serem observados:

  • Não se esqueça, você está trabalhando com “C” e essa é uma linguagem que diferencia maiúsculas de minúsculas.
  • O caractere ponto (.) não é permitido em um nome de transação, embora você possa usar espaços e sublinhados.
  • Se você tiver ramificado bem seu código e adicionado pontos de verificação para confirmar a resposta do servidor, poderá usar tratamento de erros personalizado, como LR_PASS ou LR_FAIL. Caso contrário, você pode usar LR_AUTO e o LoadRunner lidará automaticamente com os erros do servidor (HTTP 500, 400 etc.).
  • Ao aplicar transações, certifique-se de que não haja um período de reflexão entre elas; caso contrário, sua transação sempre incluirá esse período.
  • Como o LoadRunner exige uma string constante como nome da transação, um problema comum ao aplicar transações é a incompatibilidade de strings. Se você fornecer um nome diferente ao abrir e fechar uma transação, receberá pelo menos dois erros. A transação que você abriu nunca foi fechada, então o LoadRunner gera um erro; e a transação que você está tentando fechar nunca foi aberta, o que gera um segundo erro.
  • Ambos os erros aparecem no log de reprodução, portanto, sempre que um deles for relatado, verifique primeiro o nome da transação nas declarações de abertura e fechamento.
  • Como o LoadRunner cuida automaticamente da sincronização de solicitações e respostas, você não precisará se preocupar com a resposta ao aplicar transações.

Pontos de Encontro, Comentários e Funções de Script

Três pequenas melhorias fazem com que um script se comporte e seja lido como código de produção: pontos de encontro, comentários e o navegador de funções integrado ao VuGen.

Pontos de Encontro

Um ponto de encontro é um "ponto de reunião". Trata-se de uma única instrução que instrui o LoadRunner a introduzir concorrência. Você insere pontos de encontro em scripts de usuários virtuais para simular uma alta carga de usuários no servidor.

Os pontos de encontro instruem um VUser a aguardar durante a execução até que vários VUsers cheguem a um determinado ponto, para que possam executar uma tarefa simultaneamente. Por exemplo, para simular um pico de carga em um servidor bancário, insira um ponto de encontro instruindo 100 VUsers a depositar dinheiro ao mesmo tempo.

Se os pontos de encontro não forem posicionados corretamente, os usuários virtuais acessarão partes diferentes do aplicativo, mesmo para o mesmo script. Isso ocorre porque cada usuário virtual recebe um tempo de resposta diferente, fazendo com que alguns fiquem para trás.

Sintaxe:

lr_rendezvous(“Logical Name”);

Nota de correção: a página publicada diz isso lr_rendesvousO nome correto da função é lr_rendezvous; o formato com erro ortográfico não será compilado.

Melhores Práticas:

  • Prefixe um ponto de encontro com “rdv_” para melhor legibilidade do código; por exemplo, “rdv_Login”
  • Remova quaisquer instruções de tempo de reflexão imediatamente adjacentes.
  • Aplique os pontos de encontro na visualização de roteiro, após a gravação.

A visualização de Script abaixo mostra uma declaração de encontro inserida em uma ação gravada:

Declaração de encontro inserida em uma ação VuGen gravada na visualização de Script.

Comentários

Adicione comentários para descrever uma atividade, um trecho de código ou uma linha de código. Os comentários ajudam a tornar o código compreensível para qualquer pessoa que o consulte no futuro. Eles fornecem informações sobre uma operação específica e separam duas seções para fins de distinção.

Você pode adicionar comentários

  • Durante a gravação (usando a ferramenta)
  • Após a gravação (escrevendo diretamente no código)

Melhor prática: marque quaisquer comentários no início de cada arquivo de script.

Inserindo funções através do menu

Embora você possa escrever linhas de código simples diretamente, talvez precise de uma dica para se lembrar de uma função. Você também pode usar a Caixa de Ferramentas de Etapas (conhecida como Inserir Função antes da versão 12) para encontrar e inserir qualquer função diretamente em seu script.

Você pode encontrar a Caixa de Ferramentas de Etapas em Exibir → Caixa de Ferramentas de Etapas, conforme mostrado abaixo.

Menu VuGen View com o comando Steps Toolbox destacado

Isso abrirá uma janela lateral. Veja a captura de tela:

Painel lateral da Caixa de Ferramentas de Etapas listando as funções VuGen disponíveis para inserção.

O que é parametrização?

Um parâmetro no VuGen é um contêiner que armazena um valor gravado, o qual é substituído para diferentes usuários.

Durante a execução do script (no VuGen ou no Responsável pelo Tratamento ), um valor de uma fonte externa (como um arquivo .txt, XML ou um banco de dados) substitui o valor anterior do parâmetro.

A parametrização é útil para enviar valores dinâmicos (ou únicos) ao servidor. Por exemplo, um processo de negócios pode precisar executar 10 iterações, selecionando um nome de usuário único a cada vez.

Isso também ajuda a simular o comportamento da vida real em relação ao sistema em questão. Veja os exemplos abaixo.

Exemplos de problemas:

  • Um processo de negócios funciona apenas para a data atual, que vem do servidor, portanto não pode ser passada como uma solicitação codificada.
  • Às vezes, o aplicativo cliente passa um ID exclusivo para o servidor (por exemplo, session_id) para que o processo continue, mesmo para um único usuário. Nesse caso, a parametrização ajuda.
  • Frequentemente, o aplicativo cliente mantém um cache dos dados enviados e recebidos pelo servidor. Como resultado, o servidor não recebe o comportamento real do usuário (onde o servidor executa um algoritmo diferente dependendo dos critérios de busca). O script VUser será executado com sucesso, mas as estatísticas de desempenho obtidas não serão significativas. O uso de dados diferentes por meio de parametrização ajuda a emular a atividade do lado do servidor, como procedimentos armazenados, e a exercitar o sistema.
  • Uma data que é definida diretamente no VUser durante a gravação pode não ser mais válida após essa data. A parametrização da data permite que a execução do VUser seja bem-sucedida, substituindo a data definida diretamente no código. Esses campos ou solicitações são os candidatos ideais para parametrização.

Você cria um clicando com o botão direito do mouse no valor gravado na visualização de Script e escolhendo Substituir por um Parâmetro. O VuGen então pergunta qual tipo fornece o valor:

Tipo de parâmetro Valor que proporciona
Envie o Valores lidos de uma coluna em um arquivo .dat.
mesa Um bloco de linhas e colunas simultaneamente.
Data / Hora Data e hora atuais em um formato escolhido.
Número aleatório Um número dentro de um intervalo que você definiu.
Número único Um número distinto por VUser, a partir de um valor inicial e tamanho de bloco.
Número da iteração Contagem atual de iterações.
ID do usuário virtual O identificador atribuído na reprodução.
Grupo / Carregar Generator Nome O grupo VUser ou máquina geradora.
XML Um fragmento de um conjunto de dados XML.
Função definida pelo usuário Um valor retornado pela sua própria função de biblioteca.

Outras duas opções definem como os dados são consumidos ao longo das iterações:

Opção Escolhas O que ele controla
Selecione a próxima linha Sequencial, Aleatório, Único Qual linha um VUser lê em seguida.
Atualizar valor em Cada iteração, cada ocorrência, uma vez Quando o valor é atualizado.

O passo a passo abaixo mostra a parametrização aplicada a um script gravado:

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

Configurações de tempo de execução e seu impacto na simulação de usuários virtuais.

As configurações de tempo de execução são tão importantes quanto o seu script VuGen. Com configurações variadas, você pode obter designs de teste completamente diferentes, e é por isso que configurações de tempo de execução inconsistentes são a causa mais comum de resultados não repetíveis. Vamos discutir cada atributo individualmente.

Executar lógica

Run Logic define o número de vezes que todas as ações serão executadas, exceto vuser_init e vuser_end.

Isso provavelmente deixa mais claro por que o LoadRunner sugere manterping Todo o código de login está dentro de vuser_init e a parte de logout em vuser_end, ambos exclusivamente.

Se você criou várias ações — por exemplo, Entrar, Abrir Tela, Calcular Aluguel, Enviar Fundos, Verificar Saldo e Sair — o cenário abaixo ocorrerá para cada VUser:

Todos os usuários virtuais farão login, executarão as etapas Abrir Tela, Calcular Aluguel, Enviar Fundos e Verificar Saldo, e então novamente Abrir Tela, Calcular Aluguel e assim por diante, repetindo o processo 10 vezes, finalizando com o logout (uma única vez).

Painel "Run Logic" das configurações de tempo de execução do VuGen, mostrando a contagem de iterações.

Essa é uma configuração poderosa que permite que o script se comporte mais como um usuário real. Lembre-se, um usuário real não faz login e logout todas as vezes; geralmente, ele repete os mesmos passos.

Quantas vezes você clica em “caixa de entrada” ao verificar seu e-mail antes de sair da sua conta?

Ritmo

Isso é importante. A maioria das pessoas não consegue entender a diferença entre ritmo e tempo de reflexão. A única diferença é que ritmo se refere ao intervalo entre iterações, enquanto tempo de reflexão é o intervalo entre quaisquer duas etapas.

A configuração recomendada depende do projeto do teste. No entanto, se você pretende aplicar uma carga elevada, considere optar por "Assim que a iteração anterior terminar", conforme mostrado abaixo.

Painel de controle de tempo de execução com as opções de atraso de iteração.

Folhas para

Um log, em termos gerais, é um registro de todos os eventos ocorridos durante a execução do LoadRunner. Você pode habilitar o log para saber o que está acontecendo entre sua aplicação e seu servidor.

O LoadRunner oferece um mecanismo de registro poderoso, robusto e escalável por si só. Ele permite manter apenas um "Registro Padrão", um registro estendido detalhado e configurável ou desativar o registro completamente.

Um log padrão é informativo e de fácil compreensão. Ele contém exatamente a quantidade de informações que você geralmente precisa para solucionar problemas em seus scripts VUser.

No caso do Log Estendido, todas as informações de log padrão são um subconjunto. Além disso, você pode ter substituição de parâmetros. Isso instrui o componente LoadRunner a incluir informações completas sobre todos os parâmetros (da parametrização), incluindo dados de requisição e resposta.

Se você incluir "Dados retornados pelo servidor", seu log ficará muito maior. Ele incluirá todo o HTML, tags, recursos e informações não relacionadas a recursos diretamente no log. Essa opção é útil apenas para solucionar problemas complexos. Normalmente, isso resulta em um arquivo de log muito grande e de difícil compreensão.

Como você já deve ter imaginado, se optar pela versão “Avançada” TracSeu arquivo de log ficará enorme. Você precisa experimentar. Você notará que o tempo gasto pelo VuGen também aumenta significativamente, embora isso não afete o tempo de resposta da transação relatado pelo VuGen. Esta é uma informação muito avançada e só é útil se você entender o aplicativo em questão, a comunicação cliente-servidor entre seu aplicativo e o hardware, e os detalhes do protocolo. Normalmente, essas informações exigem um esforço enorme para serem lidas e para a resolução de problemas.

Painel de registro das configurações de tempo de execução com opções de registro padrão e estendido.

Dicas:

  • Independentemente do tempo que o VuGen leve quando o registro de logs está ativado, isso não afeta o tempo de resposta da transação — a sobrecarga de registro de logs é excluída do tempo medido.
  • Desative o registro de logs se ele não for necessário.
  • Desative o registro de logs quando terminar de usar seus scripts. Incluir scripts com o registro de logs ativado fará com que o Controlador funcione mais lentamente e exiba mensagens incômodas.
  • Desativar o registro de logs aumentará o número máximo de usuários que você pode simular a partir do LoadRunner.
  • Considere usar a opção “Enviar mensagens somente quando ocorrer um erro” — isso silencia mensagens informativas desnecessárias e exibe apenas mensagens relacionadas a erros.

Pense em tempos

Think Time é simplesmente o atraso entre duas etapas.

O Tempo de Reflexão ajuda a replicar o comportamento do usuário, já que nenhum usuário real consegue usar um aplicativo como uma máquina. O VuGen gera o tempo de reflexão automaticamente. Você ainda tem controle total para remover, multiplicar ou alterar a duração do tempo de reflexão.

Para melhor compreensão: um usuário pode abrir uma tela (uma resposta seguida de uma solicitação) e digitar um nome de usuário e senha antes de pressionar Enter. A próxima interação entre o aplicativo e o servidor ocorre quando o usuário clica em "Entrar". O tempo que o usuário leva para digitar o nome de usuário e a senha é o Tempo de Pensamento (Think Time) no LoadRunner.

Painel Tempo de Reflexão das configurações de tempo de execução com as opções de tempo de reflexão de reprodução.

Se você deseja simular uma carga agressiva no aplicativo, considere desabilitar completamente o tempo de reflexão.

No entanto, para simular o comportamento da vida real, você pode escolher "Usar tempo de reflexão aleatório" e definir as porcentagens conforme desejado.

Considere usar o recurso "Limitar Tempo de Reflexão" para definir um período máximo aceitável. Geralmente, 30 segundos são suficientes.

Simulação de velocidade

A simulação de velocidade refere-se simplesmente à capacidade de largura de banda de cada máquina cliente.

Considerando que estamos simulando milhares de usuários virtuais (VUsers) através do LoadRunner, é notável a simplicidade que o LoadRunner proporciona à simulação de largura de banda e velocidade de rede.

Se seus clientes acessarem seu aplicativo por uma velocidade superior a 128 Kbps, você poderá controlar isso a partir daqui. Você poderá simular comportamentos reais, o que deverá ajudá-lo a obter as estatísticas de desempenho corretas.

O painel de simulação de velocidade oferece a largura de banda máxima ou uma velocidade de conexão fixa.

A melhor recomendação é definir a opção "Usar largura de banda máxima". Isso ajuda a ignorar quaisquer gargalos de desempenho relacionados à rede e a concentrar-se primeiro em possíveis problemas no aplicativo. Você sempre pode executar o teste várias vezes para observar diferentes comportamentos em circunstâncias distintas.

Emulação de navegador

A experiência do usuário não depende do navegador que o usuário final está usando, portanto, isso está em grande parte fora do escopo das métricas de desempenho. No entanto, você pode escolher qual navegador deseja emular, como mostra o painel abaixo.

Painel de emulação de navegador com opções de simulação de agente do usuário e cache.

Em que circunstâncias exatamente importa qual navegador você seleciona nesta configuração?

Você usará essa configuração se o seu aplicativo for um aplicativo web que retorna respostas diferentes para navegadores diferentes. Por exemplo, você pode ver imagens e conteúdo diferentes para o Internet Explorer e Firefox.

Outra configuração importante é "Simular cache do navegador". Se você quiser avaliar o tempo de resposta com o cache ativado, marque esta caixa. Se estiver buscando o pior cenário possível, obviamente não é algo a se considerar.

O download de recursos não HTML permitirá que o LoadRunner baixe qualquer CSS, JS e outros arquivos multimídia. Essa opção deve permanecer marcada. No entanto, se desejar eliminá-la do seu projeto de teste de desempenho, você pode desmarcá-la.

procuração

O ideal é eliminar completamente o proxy do seu sistema. Ambiente de teste — Um proxy no caminho torna os resultados dos testes não confiáveis. No entanto, você pode se deparar com situações em que isso é inevitável. Nesses casos, o LoadRunner oferece configurações de proxy.

Você estará trabalhando (ou deveria estar trabalhando) com a configuração "Sem proxy". Você pode obtê-la no seu navegador padrão. No entanto, não se esqueça de verificar qual navegador está definido como padrão e qual é a configuração de proxy desse navegador.

Painel de proxy das configurações de tempo de execução com as opções "sem proxy" e "proxy manual".

Se você estiver usando um proxy e ele exigir autenticação (ou um script), clique no botão Autenticar, que abrirá uma nova janela. Veja a captura de tela abaixo.

Janela de autenticação de proxy solicitando nome de usuário e senha.

Use esta tela para fornecer um nome de usuário e uma senha para se autenticar no servidor proxy. Clique em OK para fechar a tela.

Parabéns! Você concluiu a configuração do seu script VuGen. Não se esqueça de configurá-lo para todos os seus scripts VUser.

Em seguida vem correlação, executando o cenário no Responsável pelo Tratamento e a leitura resulta em Análise do LoadRunner. Veja o Arquitetura LoadRunner e Teste de carga guias.

Perguntas Frequentes

Selecione o valor na visualização de Script, clique com o botão direito e escolha Substituir por um Parâmetro. Dê um nome a ele, escolha um tipo e o VuGen substituirá todas as ocorrências correspondentes que você aprovar.

Data/Hora, Número Aleatório, Número Único, Número da Iteração, ID do Usuário Virtual, Nome do Grupo e Carga Generator Os nomes são gerados durante a reprodução. Apenas os parâmetros de Arquivo, Tabela e XML precisam de uma fonte de dados fornecida por você.

O aprendizado de máquina sugere possíveis correlações, sinaliza scripts que falham após uma alteração no aplicativo e gera dados de teste realistas. As versões recentes do VuGen incluem a criação de scripts assistida por IA, embora as instruções geradas ainda precisem de revisão.

Copiloto do GitHub O VuGen lida bem com a estrutura C — loops, manipulação de strings, encapsulamento de transações — já que seus scripts são em C. Sua performance é mais fraca em funções web específicas de protocolos, portanto, verifique cada chamada gerada em relação à referência da função.

Essa configuração instrui um usuário virtual a continuar executando as etapas restantes após uma falha, em vez de encerrar a iteração. É útil em uma execução exploratória inicial, mas oculta falhas reais se mantida ativada.

Adicione uma verificação de conteúdo antes da solicitação para que o sistema de reprodução procure o texto esperado na resposta. Um status HTTP bem-sucedido não prova nada por si só, pois uma página de erro pode retornar o código 200.

Não. O produto passou da HP para a Micro Focus e agora é... OpenText Engenharia de Desempenho ProfissionalO VuGen mantém seu nome, biblioteca de funções e painéis de configurações de tempo de execução.

A instrução `lr_rendezvous` apenas marca o ponto de encontro. A quantidade de usuários virtuais (VUsers) que devem chegar e o tempo de espera da execução são definidos nas opções de encontro do controlador, não no VuGen.

Resuma esta postagem com: