Debugging durante a execução
Tabela de conteúdos
intermediário - This article is part of a series.
Quando se executar um teste de carga pela linha de comando, pode ocorrer alguns erros. É possível usar o tail no arquivo de resultados JTL para obter uma ideia do código de erro ou algumas informações sobre a mensagem de resposta. Essas informações podem ser ambíguas ou insuficientes. Portanto, quando você tem solicitações ou transações com um erro baixo (por erro baixo, entendo por isso menos de 20%), há formas de obter mais informações, como habilitar escutadores para salvar as respostas em um flat ou XML arquivo. Há também uma solução relativamente eficiente que eu também compartilhei no Flood.io site.
Este solução utiliza poucos recursos e pode enviar qualquer valor associado ao resposta para o registro do JMeter para que possamos analisá-lo de forma detalhada. Este é um método de usar um Listener JSR223, que deve conter o seguinte código:
if (!prev.isSuccessful()) {
log.info("A Etiqueta de amostra é : " + prev.getSampleLabel());
log.info("O Tempo de início em milissegundos é : " + prev.getStartTime());
log.info("O Código de resposta é : " + prev.getResponseCode());
log.info("A Mensagem de resposta é : " + prev.getResponseMessage());
log.info("Os cabeçalhos são: " + prev.getResponseHeaders());
}
É extremamente importante que a cache do script esteja ativada e que seja o compilador Groovy também. Deve ser colocada no nível de plano de teste, especialmente se existirem múltiplas grupos de testes ou se apenas uma única turma existe.
Esta é uma amostra de conteúdo mais recente que inclui a resposta ao enviar para o livro do JMeter.
if (prev.isSuccessful() == false) {
log.info("###########################################################")
log.info("A etiqueta do Sampler é : " + prev.getSampleLabel())
log.info("O payload do Sampler é : " + prev.getSamplerData())
log.info("O tempo de início em milissegundos é : " + prev.getStartTime())
log.info("Os dados de resposta são : " + prev.getResponseDataAsString())
log.info("O código de resposta é : " + prev.getResponseCode())
log.info("A mensagem de resposta é : " + prev.getResponseMessage())
log.info("As cabeçalhos são: " + prev.getResponseHeaders())
log.info("###########################################################")
}
O que o código faz? #
O código avaliaria todas as respostas dos samplers e, se o sampler estiver marcado como falhado, os seguintes dados serão enviados:
- Nome do tag
- Timestamp
- Código de resposta
- Resposta mensagem
- Headers
Se você quiser adicionar qualquer outro valor, recomendo verificar aqui, que poderia ser útil para seu depuramento. É importante mencionar que este é principalmente destinado a samplers HTTP, mas você pode modificar-o para capturar informações relevantes de qualquer outro protocolo.
Conclusão #
O propósito geral deste código é permitir visualizar em tempo real, usando uma instrução como tail, qualquer tipo de erro nas respostas dos nossos pedidos. Essa informação será salva no log do JMeter (jmeter.log). Também é ideal para armazenar evidências e documentos sobre a possível origem desses erros.