Compartir a través de


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 valor separado por comas (CSV) en un script de prueba con Azure Load Testing. Use datos de un archivo CSV externo para configurar el script de prueba JMeter o Locust. 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. En Locust, puede abrir el archivo CSV en el script de prueba, leer los datos necesarios y pasarlo a las solicitudes.

Para leer datos de un archivo externo en Azure Load Testing, debe cargar el archivo externo junto con el script de prueba 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.

Prerrequisitos

  • 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) o un script Locust.
  • (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 prueba para leer datos CSV

En esta sección, configurará el script de prueba 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.

Para las pruebas basadas en JMeter, modifique el script de JMeter mediante la GUI de Apache JMeter:

  1. Seleccione el elemento Config del conjunto de datos CSV en el script de prueba.

  2. Actualice la información del nombre de archivo y quite cualquier referencia de ruta de acceso de archivo.

  3. 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.

    Captura de pantalla que muestra la interfaz de usuario de JMeter para configurar un elemento Config del conjunto de datos de C S V.

  4. Repita los pasos anteriores para cada elemento de configuración del conjunto de datos CSV en el script.

  5. Guarde el script de JMeter y cárguelo en la prueba de carga.

Para las pruebas basadas en Locust, actualice el script Locust abriendo un editor de su elección.

  1. En la sección en la que abre el archivo, actualice la información del nombre de archivo y quite cualquier referencia de ruta de acceso de archivo.

  2. Guarde el script de Locust y cárguelo 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. 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:

  1. En Azure Portal, vaya al recurso de prueba de carga de Azure.

  2. En el panel izquierdo, seleccione Pruebas para ver una lista de pruebas.

  3. Para seleccionar la prueba de la lista, active la casilla y, a continuación, seleccione Editar.

    Captura de pantalla que muestra la lista de pruebas de carga y el botón

  4. 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.

    Captura de pantalla de la pestaña Plan de prueba en el panel Editar prueba.

    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 serie 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.

  5. 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 sintaxis $(variable).

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 manera 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, todos ellos se dividen uniformemente.

Por ejemplo, si tiene un archivo de entrada CSV de grandes clientes 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.

  1. Configure el script de prueba para usar nombres de variable al leer el archivo CSV.
  2. 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:

  1. Vaya a la pestaña Plan de pruebas para la prueba de carga.

  2. Seleccione Dividir CSV uniformemente entre motores de prueba.

    Captura de pantalla que muestra la casilla para habilitar la división de archivos C S V de entrada al configurar una prueba en Azure Portal.

  3. 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 de error File {my-filename} must exist and be readable en el registro de pruebas, no se encontró el archivo CSV de entrada al ejecutar el script de prueba.

Azure Load Testing almacena todos los archivos de entrada junto con el script de prueba. Al hacer referencia al archivo CSV de entrada en el script de prueba, 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 elemento CSVDataSet 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>