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

Avaliações em Respostas de JMeter

intermediário - This article is part of a series.

aserciones

Por que você deve se importar?>

Por que você deve se importar? #

Nós daqueles que trabalham com JMeter e teste de desempenho sabemos a importância de adicionar validações às principais solicitações HTTP. Validações, afirmações, algo que automaticamente te informa se o retorno é OK ou se há um erro. Se você não está convencido por essa ideia, pense em uma situação onde você tem super-velocidade nas suas testes de carga e gerenciais dizendo que a página não está funcionando, mas sim voando. Agora imagine que, porque havia algo errado com o teste, as respostas do servidor realmente enviavam para você um site fora do ar, pedindo para voltar mais tarde. E eu vou te contar mais, todos nós que temos experimentado testes de concorrência em aplicações já tivemos a notificação da server de erro em uma página com um código de resposta 200. Sim! 200, que significa “OK”, significa “não problema”. Curioso, não é? Isso quer dizer que nós não podemos depender apenas do código de resposta, precisamos fazer algum minimal extra validação a cada passo para dar-nos a paz de espírito que estamos simulando o teste que pretendemos simular.

Nesse sentido, os validações não são apenas uma maneira de confirmar que o servidor está respondendo como esperado, mas também servem para verificar se a script que estamos desenvolvendo está agindo da forma como deve, simulando comportamento do usuário conforme planejado.

Por exemplo, se o impacto do nosso script no sistema envolve a criação de um registro na base de dados, devemos garantir que após executar o script, não seja criado um registro, e que o script declare que completou sem problemas.

Estes são exemplos de escolhas inadequadas na nossa solicitação de validação ou verificação.

Nisso, o que precisamos é de evitar falsos negativos e falsos positivos.

Evitando positivos falsos e negativos>

Evitando positivos falsos e negativos #

Vamos primeiro ver o que essas concepções significam:

  • Positivo Falso: O teste diz que há um erro, mas não há, então desperdiçamos tempo procurando a causa do erro até descobrirmos que o erro estava no teste, na ambiente, nos dados etc.
  • Negativo Falso: Há bugs, e estamos tão calmos! Confiantes de que essas características estão sendo testadas e portanto bug-free (Atenção para isso!)

Isso é dizer que se houver um erro, o script deve mostrar falha; se o sistema estiver funcionando corretamente, o script deve dizer não há erros e nós devemos confiar nisso.

Como selecionamos boas afirmações?

Definindo boas afirmações para nossos Pedidos HTTP>

Definindo boas afirmações para nossos Pedidos HTTP #

A realidade é que não encontramos uma guia clara sobre como definir as afirmações para cada Pedido HTTP, e isso é algo que sempre precisamos explicar aos novos testadores de desempenho que recrutamos ou treinamos, criamos nossa própria guia.

Esta é a razão pela qual gostaria de compartilhar com você os métodos e critérios que tiveram o maior sucesso ao selecionar o que validar durante uma sessão de teste de carga com JMeter (como mencionamos neste checklist para melhorar scripts de JMeter).

1.- Valide um login>

1.- Valide um login #

Talvez, após autenticar em uma sistema, vemos algum texto como “Bem-vindo Usuário” ou nosso nome aparece em algum lugar na tela, indicando que o login foi bem-sucedido. Portanto, nesses casos, é uma excelente forma de validar.

Lembre-se de que na JMeter podemos especificar uma variável em validações. Portanto, em casos onde o nome de usuário é parametrizado (lido a partir de um arquivo CSV ou definido como uma variável do usuário), eu posso validar o texto ${UserName} e a JMeter substituirá a variável com seu valor ao tempo.

2.- Valide a contêiner de conteúdo>

2.- Valide a contêiner de conteúdo #

Quando solicitamos uma página HTML, podemos escolher o texto ou os títulos que deverão aparecer nessa resposta. Por exemplo, se acessarmos a página do JMeter ( http://jmeter.apache.org/), veremos:

imagen1

Então sabemos que se este site carrega corretamente, o título “O que posso fazer com isso?” deve aparecer em resposta à solicitação feita ao site. Então é uma boa afirmação adicionar como validação de que estamos recebendo a página esperada. A desvantagem desta forma de validação é validar conteúdo para saber se, caso haja um erro, essa texto não aparece na resposta. Para isso, podemos nos virar os desenvolvedores para este tipo de informação.

3.- Consider the script’s next steps>

3.- Consider the script’s next steps #

Se sabemos que a próxima ação a ser realizada é clicar em botão X, acessar link Z ou selecionar opção A do combo box B, uma estratégia muito boa é validar se o pedido de resposta inclui o elemento que queremos atuar na próxima etapa. Por exemplo, se após carregar a página JMeter quisermos selecionar a “Opções de Download” e verificarmos essa palavra para garantir continuidade do fluxo. Para isso usamos captura da resposta do servidor e verificamos como esta opção é apresentada no HTML, na imagem vemos isso:

Download</div><ul><li><a href="./download_jmeter.cgi">Download Releases</a>

E então criamos a validação em JMeter com >Download Releases<:

imagen2

4.- Valide os valores para serem extraídos>

4.- Valide os valores para serem extraídos #

A vezes, extrai-se uma variável de um pedido HTTP usando expressões regulares (Adicionar->Processadores Post->Expressão Regular) com o intuito de usá-la em uma requisição subsequente. Isso é conhecido como mapeamento de variáveis.

imagen3

Podemos então validar que essa variável aparece na resposta do servidor. Para isso, podemos usar validações que utilizam expressões regulares. Por exemplo:

imagen4

Assim, se o expressão regular não corresponder à resposta recebida, obteremos um erro de validação.

5.- Seja cuidadoso com caracteres especiais>

5.- Seja cuidadoso com caracteres especiais #

Você deve ser cuidadoso ao escrever a assertiva no JMeter porque o texto não sempre é recebido na mesma forma como aparece na tela. Por exemplo, se eu quisesse validar o título Apache JMeter™, eu não posso escrevê-lo literalmente porque a resposta do servidor aparece como Apache JMeter&trade; e não como ele aparece na tela. Se nós não usarmos o texto como ele aparece no HTML, a validação (inclusive as expressões regulares) não encontrará.

6.- O número adequado de validações>

6.- O número adequado de validações #

JMeter permite adicionar quantas validações o usuário quiser, então cada uma das validações mencionadas acima pode ser acompanhada por outras validações, como os títulos HTML (<title>...</title>), para aumentar a robustez da validação.

Quando adicionamos mais afirmações, devemos ser cuidadosos para que o script não se torne muito sobrecarregado. Isso é por isso que não é recomendável adicionar mais do que duas afirmações por requisição. Portanto, devemos garantir que as escolhidas são decisivas quando definirmos a correção da resposta.

Como você vai validar suas respostas?>

Como você vai validar suas respostas? #

Nosso objetivo é que esta lista seja útil ao adicionar as afirmações. De forma resumida, gostaria de você manter isso em mente:

  • Adicione entre um e dois afirmações para cada importante solicitação HTTP no fluxo que você está testando.
  • Escolha qual você quer validar: títulos, texto, valores ou elementos que você interagirá nas próximas etapas do fluxo. O importante é que se o script falhar, é porque a máquina falha (e vice-versa), evitando falsos positivos e negativos. Se você tiver outras ideias, estou à disposição para compartilhá-las para que possamos melhorar continuamente como fazemos nossas testes de carga.
Este post foi>

Este post foi #

preparado alguns anos atrás em inglês com colegas da Abstracta, mas ainda é relevante. É sobre entender como validar uma solicitação HTTP no JMeter. O post original em inglês pode ser acessado aqui. Eu digo que ele ainda é relevante porque o protocolo HTTP está relativamente estável, assim como o JMeter, então as práticas melhores nesse aspecto não mudaram muito.

Federico Toledo
COO na www.abstracta.us
twitter.com/fltoledo
Bio: https://www.linkedin.com/in/federicotoledo/
Site: https://www.federico-toledo.com/



intermediário - This article is part of a series.