Lectura de datos de un archivo CSV en JMeter con Azure Load Testing
En este artículo, aprenderá a leer datos de un archivo de valores separados por comas (CSV) en JMeter con Azure Load Testing. Use datos de un archivo CSV externo para que el script de prueba de JMeter sea configurable. Por ejemplo, puede iterar por todos los clientes de un archivo CSV para pasar los detalles del cliente a la solicitud de API.
En JMeter, puede usar el elemento Config del conjunto de datos CSV en el script de prueba para leer datos de un archivo CSV.
Para leer datos de un archivo externo en Azure Load Testing, debe cargar el archivo externo junto con el script de prueba de JMeter en la prueba de carga. Si escala horizontalmente la prueba en varias instancias del motor de pruebas en paralelo, puede elegir dividir los datos de entrada uniformemente entre estas instancias.
Empiece por clonar o descargar el proyecto de ejemplos de GitHub.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Un recurso de prueba de carga de Azure. Para crear un recurso de prueba de carga, consulte Creación y ejecución de una prueba de carga.
- Un script de prueba de Apache JMeter (JMX).
- (Opcional) Interfaz gráfica de usuario de Apache JMeter para crear el script de prueba. Para instalar Apache JMeter, consulte Introducción a Apache JMeter.
Actualización del script de JMeter para leer datos CSV
En esta sección, configurará el script de Apache JMeter para hacer referencia al archivo CSV externo. Se usa un elemento Config del conjunto de datos CSV para leer datos de un archivo CSV.
Importante
Azure Load Testing carga el archivo JMX y todos los archivos relacionados en una sola carpeta. Al hacer referencia a un archivo externo en el script de JMeter, compruebe que no tiene referencias de ruta de acceso de archivo en el script de prueba.
Modifique el script de JMeter mediante la GUI de Apache JMeter:
Seleccione el elemento Config del conjunto de datos CSV en el script de prueba.
Actualice la información del nombre de archivo y quite cualquier referencia de ruta de acceso de archivo.
Opcionalmente, escriba los nombres de campo de archivo CSV en Nombres de variable al dividir el archivo CSV entre motores de prueba.
Azure Load Testing no conserva la fila de encabezado al dividir el archivo CSV. Proporcione los nombres de variable en el elemento de configuración del conjunto de datos CSV en lugar de usar una fila de encabezado.
Repita los pasos anteriores para cada elemento de configuración del conjunto de datos CSV en el script.
Guarde el script de JMeter y cargue el script en la prueba de carga.
Carga del archivo CSV en la prueba de carga
Al hacer referencia a archivos externos desde el script de prueba, asegúrese de cargar todos estos archivos junto con el script de prueba de JMeter. Cuando se inicia la prueba de carga, Azure Load Testing copia todos los archivos en una sola carpeta en cada una de las instancias de los motores de prueba.
Importante
Azure Load Testing no conserva la fila de encabezado al dividir el archivo CSV. Antes de agregar el archivo CSV a la prueba de carga, quite la fila de encabezado del archivo.
Para agregar un archivo CSV a la prueba de carga mediante Azure Portal:
En Azure Portal, vaya al recurso de prueba de carga de Azure.
En el panel izquierdo, seleccione Pruebas para ver una lista de pruebas.
Para seleccionar la prueba de la lista, active la casilla y, a continuación, seleccione Editar.
En la pestaña Plan de prueba , seleccione el archivo CSV del equipo y, a continuación, seleccione Cargar para cargar el archivo en Azure.
Si usa una prueba de carga basada en direcciones URL, puede escribir los nombres de variable como una lista separada por comas en la columna Variables .
Si el tamaño del archivo CSV es mayor que 50 MB, comprima el archivo. El tamaño del archivo ZIP debe ser inferior a 50 MB. Azure Load Testing descomprime automáticamente el archivo durante la ejecución de pruebas. Solo se permiten cinco artefactos zip con un máximo de 1000 archivos en cada zip y un tamaño total sin comprimir de 1 GB.
Seleccione Aplicar para modificar la prueba y usar la nueva configuración cuando vuelva a ejecutarla.
Sugerencia
Si usa una prueba de carga basada en direcciones URL, puede hacer referencia a los valores del archivo de datos de entrada CSV en las solicitudes HTTP mediante la $(variable)
sintaxis .
División de datos de entrada de CSV entre motores de prueba
De forma predeterminada, Azure Load Testing copia y procesa los archivos de entrada sin modificar en todas las instancias del motor de prueba. De forma predeterminada, cada motor de prueba procesa todo el archivo CSV. Como alternativa, Azure Load Testing permite dividir los datos de entrada csv uniformemente en todas las instancias del motor. Si tiene varios archivos CSV, cada archivo se divide uniformemente.
Por ejemplo, si tiene un archivo de entrada CSV de cliente grande y la prueba de carga se ejecuta en 10 motores de prueba paralelos, cada instancia procesa 1/10 de los clientes.
Importante
Azure Load Testing no conserva la fila de encabezado al dividir el archivo CSV.
- Configure el script de JMeter para usar nombres de variable al leer el archivo CSV.
- Quite la fila de encabezado del archivo CSV antes de agregarlo a la prueba de carga.
Para configurar la prueba de carga para dividir los archivos CSV de entrada:
Vaya a la pestaña Plan de prueba de la prueba de carga.
Seleccione Dividir CSV uniformemente entre motores de prueba.
Seleccione Aplicar para confirmar los cambios de configuración.
La próxima vez que ejecute la prueba, Azure Load Testing dividirá y procesará el archivo CSV uniformemente en los motores de prueba.
Solución de problemas
El estado de la prueba es erróneo y el registro de pruebas tiene File {my-filename} must exist and be readable
Cuando la prueba de carga se completa con el estado Error, puede descargar los registros de prueba.
Cuando recibe un mensaje File {my-filename} must exist and be readable
de error en el registro de pruebas, no se encontró el archivo CSV de entrada al ejecutar el script JMeter.
Azure Load Testing almacena todos los archivos de entrada junto con el script JMeter. Al hacer referencia al archivo CSV de entrada en el script JMeter, asegúrese de no incluir la ruta de acceso del archivo, sino que use solo el nombre de archivo.
El siguiente fragmento de código muestra un extracto de un archivo JMeter que usa un CSVDataSet
elemento para leer el archivo de entrada. Observe que no filename
incluye la ruta de acceso del archivo.
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
<stringProp name="filename">websites.csv</stringProp>
<stringProp name="fileEncoding">UTF-8</stringProp>
<stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
<boolProp name="ignoreFirstLine">true</boolProp>
<stringProp name="delimiter">,</stringProp>
<boolProp name="quotedData">false</boolProp>
<boolProp name="recycle">false</boolProp>
<boolProp name="stopThread">true</boolProp>
<stringProp name="shareMode">shareMode.all</stringProp>
<stringProp name="TestPlan.comments">Read all records from the CSV file - stop thread at end of file</stringProp>
</CSVDataSet>