Depurando errores durante la ejecución

depurando

Durante la ejecución de una prueba de carga por medio de línea de comando, es posible que existan algunos errores. Es factible utilizar el comando tail sobre el archivo de resultados JTL, para tener una idea sobre el código de error o algún dato sobre el mensaje de respuesta. Esta información puede ser ambigua o insuficiente. Por ello cuando se tienen algunas peticiones o transacciones con bajo nivel de error (por bajo nivel de error me refiero menor al 20%), existen ciertas formas de obtener más información al respecto, como activar receptores para guardar las respuestas en un archivo plano o xml, pero también existe una solución bastante eficiente que también he compartido en el sitio de Flood.io, esta solución consume pocos recursos y que puede enviar cualquier valor asociado de la respuesta a la bitácora de JMeter para que lo podamos analizarlo detenidamente.

Esta solución es utilizar un receptor JSR223, el cual deberá contener el siguiente código:

if (prev.isSuccessful() == false) {
  log.info( "The Sample Label is : " + prev.getSampleLabel())
  log.info( "The Start Time in milliseconds is : " + prev.getStartTime())
  log.info( "The Response Code is : " + prev.getResponseCode() )
  log.info( "The Response Message is : " + prev.getResponseMessage())
  log.info( "Headers are: " + prev.getResponseHeaders())
 }

Es extremadamente importante que el caching del script esté activo y que sea el compilador Groovy. También se deberá colocar a nivel del test plan, sobre todo si se tienen múltiples grupos de hilos o también colocarlo a nivel del grupo del hilo si solo tenemos uno.

¿Qué hace el código?

El código evalúa todas las respuestas de los muestreadores y aquellas dónde el muestreador sea marcado como fallido, se enviarán los datos del nombre de la etiqueta, la estampa de tiempo, el código de respuesta, la respuesta del mensaje y los encabezados, si quieres agregar algún otro valor, te recomiendo revisar aquí cuales podrían ser de utilidad para tu depuración. Cabe mencionar que esta muy dirigida a muestreadores de tipo HTTP, pero podrías modificarlo para capturar información relevante de cualquier otro protocolo.

jsr223

Conclusión

El proposito general de este codigo es poder visualizar en tiempo real por medio de un comando tail cualquier tipo de error en las códigos de respuesta que estaremos recibiendo de nuestras peticiones en el archivo de bitácora de JMeter (archivo jmeter.log por definición). Así mismo es ideal para guardar las evidencias acerca del origen de estos errores.

¡Suerte!

-Antonio