Feather Background Waves Background
Ir para o conteúdo principal
Feather Background Waves Background
Feather Background Waves Background
  1. JMeter em Português/

Correlação de Valores Dinâmicos

·5 minutos
Novato - This article is part of a series.
Part 13: This Article

correlacion

Todos têm ouvido a frase “Se a vida nos der limões… você faz lima-de-leite.” Motivacionalmente significa que se a vida nos deparar com alguma oportunidade devemos aproveitá-la e que tudo o que parece nos aparecer pode ser pressionado para extrair seu suco. Lógicamente, estamos diante de uma relação onde b implica a, “a→b”. Podemos determinar duas variáveis nesta relação, ambas podem tomar 2 valores como mostrado abaixo:3

  • Primeira variável: ${frutas}: pode tomar os valores: [Limões, Laranjas]
  • Segunda variável: ${suco}: pode tomar os valores: [Limonada, Suco de laranja]

Se cobrimos todas as combinações possíveis de valores em ambos os variáveis, podemos obter o seguinte:

  • Se a vida lhe der ${fruta} … tenha ${suco}:
    • Se a vida lhe der “laranjas” … tenha “suco de laranja”: Sucesso
    • Se a vida lhe der “peras” … tenha “suco de laranja”: Sucesso
    • Se a vida lhe der “laranjas” … tenha “suco de laranja”: Falhou
    • Se a vida lhe der “peras” … tenha “suco de laranja”: Falhou

sucesso

Reforce o relacionamento Cliente-Servidor e substitua o termo “Vida” na relação por “Servidor”. Se o “Servidor” envia apenas limões é possível fazer algo que contém esses limões “Lemonade”, caso contrário, essa relação seria falha, por exemplo quando o servidor envia limões e como resposta envia “Suco de laranja”.

failed

Translating this to a technical and software architecture level, se o servidor retornar um ID de sessão com o valor “123abc”, apenas o cliente pode enviar o mesmo ID de sessão “123abc” senão a solicitação será rejeitada. Muitos desses valores têm comportamento dinâmico, são gerados automaticamente pelo servidor, se usarmos qualquer ferramenta para capturar tráfego (Requisições - Respostas) como JMeter, esses valores dinâmicos (ID de sessão, Token, Chave, ID, etc.) permanecem registrados, se não realizarmos correlação antes de executar a script, enviaremos essas variáveis com os valores que tomaram quando a captura foi feita, e consequentemente enfrentaremos erros na nossa script por causa da envio de valores dinâmicos incorretos.

A correlação é o processo de capturar e armazenar valores dinâmicos enviados do servidor e sua inclusão em requisições futuras dos clientes. Um valor é considerado dinâmico quando retorna diferentes dados para cada solicitação em cada iteração. Cada sessão de usuário recebe um conjunto único de valores. O servidor espera que esses valores sejam recebidos nas seguintes solicitações.

correlation

O nome correlação indica que os valores dinâmicos nas solicitações estão relacionados a valores correspondentes nas respostas anteriores. O objetivo principal da testagem de carga e de estresse é simular realista o impacto das interações virtuais dos usuários em um servidor. Uma objeto virtual do usuário gera tráfego HTTP, diferente de “usuários reais”, que não são designados para executar JavaScript ou simular completamente a comportamento da navegação; os objetos virtuais simplesmente reproduzem o tráfego como foi registrado. Portanto, é necessário realizar correlação manualmente ou através de uma mecanismo automático que permite autocorrelação.

Um dos elementos mais comumente utilizados para extrair valores dinâmicos em JMeter é o Extractor de Expressões Regulares, que é projetado para extrair conteúdo das respostas do servidor usando expressões regulares e faz parte da família dos processadores post-ocorrência. Há outros extractores como Extractor de Expressões JSON, Extractor XPath e Extractor CSS Selector. Todos esses serão explicados em outro post.

Valores dinâmicos comuns encontrados em várias aplicações web:

  • ID do Sessão: O servidor comunica-se com múltiplos clientes ao mesmo tempo. Devido à falta de estado no protocolo HTTP, o servidor não pode determinar qual cliente enviou uma requisição particular. Portanto, quando estabelecer comunicação com um cliente específico, o servidor gera um identificador único e este ID deve ser retornado em todas as requisições subsequentes.
  • Token e Chave: O processo de autenticação envia um token de segurança que é enviado entre a server e o cliente, contendo informações sobre usuários e aplicações.
  • Contexto do Aplicativo ou Estado do Aplicativo: O contexto do aplicativo pode incluir diversos dados sobre atividade do usuário. Para fins de escalabilidade, ele não deve ser armazenado na server mas incluído em todas as requisições enviadas para e vindas da server. Um exemplo de um parâmetro dinâmico que carrega o estado do aplicativo é a variável “__ViewState” no ASP.NET aplicações. Esses parâmetros podem variar dependendo das tecnologias ou linguagens de programação.
  • Outros Valores: Existem outros valores relacionados a IDs dos elementos que o servidor gera automaticamente. Por exemplo, se estamos testando uma aplicação web de e-commerce, encontramos elementos como ID do produto, ID da cesta, ID de compra etc.

Para concluir este post, é válido especificar a diferença entre parametrização e correlação. Em muitos casos, eles tendem a confundir-se. Vamos analisar um exemplo simples:

  • Registramos uma cena de um usuário logando em um aplicativo web. Para tornar essa cena mais realista, os dados dinâmicos que variam nas diferentes iterações de teste devem ser substituídos pelos valores registrados nos campos de login relacionados na aplicação web. A parametrização substitui o valor registrado com dados dinâmicos. Se quisermos simular 3 usuários virtuais, teríamos os seguintes valores:
  • delvis1,mypassword1
  • delvis2,mypassword2
  • delvis3,mypassword3

No entanto, diferente da correlação, este último não usa valores gerados pelo servidor; ao invés disso, utiliza conjuntos de dados pré-definidos, dados aleatórios ou outras informações originando do cliente, como quando utilizamos Configuração de Dados CSV em JMeter.

Simule comportamentos reais nas nossas testes de performance é uma meta primordial, seja simular usuários virtuais, tempo de pensamento, ou correlacionar e parâmetrosizar valores dinâmicos. Lembre-se que se o servidor retornar em um momento específico, “lemons” apenas aguardam por “lemonade”.

Veja você em uma próxima postagem.



Novato - This article is part of a series.
Part 13: This Article