Archivo de resultados JTL en formato CSV o XML
Table of Contents
Principiante - This article is part of a series.
La mejor opción para ejecutar una prueba de carga en JMeter es a través del modo no gráfico, aunque es mejor conocido como CLI (command line interface) o línea de comandos. Existen dos ficheros principales, la bitácora de JMeter y el archivo de resultados JTL, sin embargo se deben especificar con la opción -l para el JTL y -j para la bitácora. El día de hoy nos concentramos en el archivo JTL o archivo de resultados. Por definición este archivo se encuentra en formato CSV (comma separated values) o valores separados por coma, la importancia de este fichero reside en que contiene todos los detalles y resultados de cada una de las peticiones, transacciones o etiquetas que hayamos definido en el script de JMeter.
Unix/Linux/Mac
jmeter.sh -n -t script.jmx -l resultados.jtl -j bitacora.log
Windows
jmeter.bat -n -t script.jmx -l resultados.jtl -j bitacora.log
Aquí tenemos un ejemplo de como se ve un archivo JTL en formato CSV:
Este formato tiene las siguientes ventajas:
- Es ligero. (ocupa poco espacio en disco)
- Es texto plano fácil de leer. (prácticamente con cualquier editor de texto)
- Es sencillo de importar y graficar la datos.
- Es simple la detección de errores.
Este formato es el más popular por ser el definido, pero tiene la gran limitante de que no podemos guardar las peticiones y la respuesta de las peticiones como parte del resultado. Normalmente esta información no debiera ser guardada en caso de ser exitosa, porque ocupa espacio y recursos, pero pudiera ser necesaria para realizar algún tipo de análisis post-mortem o depuración. Si requieres guardar este tipo de información te sugeriría leer esta publicación Depurando errores durante la ejecución pero en lugar de guardarlo como parte del archivo de resultados, se envía a la bitácora. Para almacenar los detalles de las peticiones primero tenemos que cambiar el formato del archivo de resultados a XML, esto se puede lograr por medio del reemplazo de la propiedad en la línea de comando o en la modificación permanente en el archivo jmeter.properties.
-Jjmeter.save.saveservice.output_format=xml
después deberemos hacer lo mismo para habilitar el almacenamiento de los detalles, con la siguiente propiedad
-Jjmeter.save.saveservice.response_data=true
Aquí tenemos un ejemplo de hacer el reemplazo por línea de comando:
Unix/Linux/Mac
jmeter.sh -n -t script.jmx -l resultados.jtl -j bitacora.log -Jjmeter.save.saveservice.output_format=xml -Jjmeter.save.saveservice.response_data=true
Windows
jmeter.bat -n -t script.jmx -l resultados.jtl -j bitacora.log -Jjmeter.save.saveservice.output_format=xml -Jjmeter.save.saveservice.response_data=true
Lo cual nos daría como resultado un archivo como este:
<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<sample t="165" it="0" lt="11" ct="1" ts="1675066304203" s="true" lb="HTTP Sampler" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" by="36" sby="0" ng="1" na="1">
<responseData class="java.lang.String">9634dd0f-d8b7-41d1-9c52-685f9765d4fb</responseData>
</sample>
<sample t="485" it="0" lt="21" ct="3" ts="1675066304807" s="true" lb="HTTP Sampler" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" by="36" sby="0" ng="1" na="1">
<responseData class="java.lang.String">5215d3bc-38ca-479b-82af-0a042ebaafe8</responseData>
</sample>
<sample t="194" it="0" lt="48" ct="3" ts="1675066305315" s="true" lb="HTTP Sampler" rc="200" rm="OK" tn="Thread Group 1-2" dt="text" by="36" sby="0" ng="2" na="2">
<responseData class="java.lang.String">b9bca1f2-5ee5-41d1-8d8f-5cf11243f8d6</responseData>
</sample>
Conclusión #
Cabe mencionar que esto te serviriá únicamente durante la ejecución, si quieres que este comportamiento permanentemente, necesitaras modificar el archivo de propiedades jmeter.properties. Adicionalmente te recomiendo que visites esta URL y modifiques las propiedades a tus necesidades en el archivo de propiedades como lo había mencionado antes. Alternativamente, si vas a realizar una prueba de carga y solo deseas guardar la información de las etiquetas que fallen, puedes hacerlo con la opción:
jmeter.save.saveservice.response_data.on_error=true