Configurar manualmente el flujo de trabajo de CI/CD para ejecutar pruebas de carga
Artículo
Puede automatizar una prueba de carga en Azure Load Testing mediante la creación de una canalización de CI/CD. En este artículo, aprenderá a configurar manualmente GitHub Actions, Azure Pipelines u otras herramientas de CI para invocar una prueba existente en Azure Load Testing. Automatice una prueba de carga para validar continuamente el rendimiento y la estabilidad de la aplicación bajo carga.
Para agregar una prueba de carga existente a una canalización de CI/CD:
Configure la autenticación de servicio para permitir que la herramienta de CI se conecte al recurso de Azure Load Testing.
Agregue archivos de entrada de prueba de carga al repositorio, como el script de prueba de JMeter y la configuración de YAML de prueba de carga.
Actualice la definición de canalización de CI/CD para invocar Azure Load Testing.
Una organización y proyecto de Azure DevOps. Si no tiene una organización de Azure DevOps, puede crear una gratis. Si necesita ayuda para comenzar a usar Azure Pipelines, consulte Creación de la primera canalización.
Una cuenta de GitHub. Si no tiene una cuenta de GitHub, puede crearla gratis.
Un repositorio de GitHub para almacenar los archivos de entrada de prueba de carga y crear un flujo de trabajo de Acciones de GitHub. Para crear uno, vea Creación de un repositorio.
Permiso para crear o modificar una canalización de CI.
Repositorio de código fuente para almacenar los archivos de entrada de prueba de carga.
Configuración de la autenticación del servicio
Para ejecutar una prueba de carga en el flujo de trabajo de CI/CD, es necesario conceder permiso al flujo de trabajo de CI/CD para acceder al recurso de prueba de carga. Cree una entidad de servicio para el flujo de trabajo de CI/CD y asigne el rol RBAC de Colaborador de pruebas de carga de Azure.
Creación de una conexión de servicio en Azure Pipelines
En Azure Pipelines, creará una conexión de servicio en el proyecto de Azure DevOps para acceder a los recursos de la suscripción de Azure. Al crear la conexión de servicio, Azure DevOps crea un objeto de entidad de servicio de Microsoft Entra.
Inicie sesión en su organización de Azure DevOps (https://dev.azure.com/<your-organization>) y vaya a su proyecto.
Reemplace el marcador de posición de texto <your-organization> por el identificador del proyecto.
Seleccione Configuración del proyecto>Conexiones de servicios>+ Nueva conexión de servicio.
En el panel Nueva conexión de servicio, seleccione Azure Resource Manager y, a continuación, seleccione Siguiente.
Seleccione el método de autenticación Entidad de servicio (automática) y Siguiente.
Escriba la información de conexión de servicio y, después, seleccione Guardar para crear la conexión de servicio.
Campo
Value
Nivel de ámbito
Suscripción.
Suscripción
Seleccione la suscripción de Azure que hospeda el recurso de prueba de carga.
Grupos de recursos
Seleccione el grupo de recursos que contiene el recurso de prueba de carga.
Nombre de conexión de servicio
Escriba un nombre único para la conexión de servicio.
Concesión de permiso de acceso a todas las canalizaciones
Seleccionada.
En la lista de conexiones de servicio, seleccione la que creó anteriormente y, a continuación, seleccione Administrar entidad de servicio.
Azure Portal se abre en una pestaña independiente del explorador y muestra los detalles de la entidad de servicio.
En Azure Portal, copie el valor Nombre para mostrar.
Use este valor en el paso siguiente para conceder permisos para ejecutar pruebas de carga en la entidad de servicio.
Concesión de acceso a Azure Load Testing
Azure Load Testing usa RBAC de Azure para conceder permisos para realizar actividades específicas en el recurso de prueba de carga. Para ejecutar una prueba de carga desde la canalización de CI/CD, concede el rol Colaborador de pruebas de carga a la entidad de servicio.
En Azure Portal, vaya al recurso de Azure Load Testing.
Seleccione Control de acceso (IAM)>Agregar>Agregar asignación de roles.
En la pestaña Rol, seleccione Colaborador de pruebas de carga en la lista de roles de funciones de trabajo.
En la pestaña Miembros, seleccione Seleccionar miembros y, a continuación, use el nombre para mostrar que copió anteriormente para buscar en la entidad de servicio.
Seleccione la entidad de servicio y, a continuación, seleccione Seleccionar.
En la pestaña Revisar + asignar, seleccione Revisar + asignar para agregar la asignación de roles.
Ahora es posible usar la conexión de servicio en la definición de flujo de trabajo de Azure Pipelines para acceder al recurso de prueba de carga de Azure.
Para acceder al recurso de Azure Load Testing desde el flujo de trabajo de GitHub Actions, primero debe crear una entidad de servicio de Microsoft Entra. Esta entidad de servicio representa el flujo de trabajo de Acciones de GitHub en Microsoft Entra ID.
Después, concederá permisos a la entidad de servicio para crear y ejecutar una prueba de carga con el recurso de Azure Load Testing.
Creación de una entidad de servicio
Cree una entidad de servicio en la suscripción de Azure y asigne el rol Colaborador de prueba de carga para que el flujo de trabajo de Acciones de GitHub tenga acceso al recurso de prueba de carga de Azure para ejecutar pruebas de carga.
Creación de una entidad de servicio y asignación del rol Load Test Contributor:
# Get the resource ID for the load testing resource - replace the text place holders.
loadtest=$(az resource show -g <resource-group-name> -n <load-testing-resource-name> --resource-type "Microsoft.LoadTestService/loadtests" --query "id" -o tsv)
echo $loadtest
# Create a service principal and assign the Load Test Contributor role - the scope is limited to the load testing resource.
az ad sp create-for-rbac --name "my-load-test-cicd" --role "Load Test Contributor" \
--scopes $loadtest \
--json-auth
La salida es un objeto JSON que representa la entidad de servicio. Se usa esta información para autenticarse con Azure en el flujo de trabajo Acciones de GitHub.
Creating 'Load Test Contributor' role assignment under scope
{
"clientId": "00000000-0000-0000-0000-000000000000",
"clientSecret": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Nota
Puede recibir una advertencia de desuso de --sdk-auth al ejecutar este comando. Como alternativa, puede usar la autenticación basada en OpenID Connect (OIDC) para autenticar GitHub con Azure. Aprenda a usar la acción de inicio de sesión de Azure con OpenID Connect.
Copie el objeto JSON de salida en el Portapapeles.
En el paso siguiente, almacenará la información de la entidad de servicio como un secreto de Acciones de GitHub.
Almacenamiento de credenciales de Azure en el secreto de Acciones de GitHub
Cree un secreto de Acciones de GitHub para almacenar de forma segura la información de la entidad de servicio. Este secreto se usa en la definición de flujo de trabajo para conectarse y autenticarse con Azure y acceder al recurso de prueba de carga de Azure.
Seleccione Configuración>Secretos y variables>Acciones.
Seleccione Nuevo secreto de repositorio, escriba la información secreta y, entonces, seleccione Agregar secreto para crear un secreto.
Campo
Valor
Nombre
AZURE_CREDENTIALS
Secreto
Pegue la salida JSON del comando de creación de la entidad de servicio que copió anteriormente.
Ahora es posible acceder a la suscripción de Azure y al recurso de prueba de carga desde el flujo de trabajo Acciones de GitHub mediante las credenciales almacenadas.
Si usa otra herramienta de CI/CD, use la CLI de Azure para interactuar con los recursos de Azure. Realice los pasos siguientes para autorizar el acceso de la herramienta de CI al recurso de prueba de carga:
Cree una entidad de servicio de Microsoft Entra para conectarse a su suscripción de Azure y acceder al recurso de prueba de carga de Azure.
Conceda a la entidad de servicio permisos para crear y ejecutar una prueba de carga mediante la asignación del rol Colaborador de pruebas de carga.
Almacene las credenciales de Azure de forma segura en la herramienta de CI.
Realice los pasos siguientes para configurar la autorización del servicio para la herramienta de CI:
Cree una entidad de servicio y asigne el rol Colaborador de pruebas de carga:
Reemplace los marcadores de posición de texto <resource-group-name> y <load-testing-resource-name>.
# Get the resource ID for the load testing resource - replace the text place holders.
loadtest=$(az resource show -g <resource-group-name> -n <load-testing-resource-name> --resource-type "Microsoft.LoadTestService/loadtests" --query "id" -o tsv)
echo $loadtest
# Create a service principal and assign the Load Test Contributor role - the scope is limited to the load testing resource.
az ad sp create-for-rbac --name "my-load-test-cicd" --role "Load Test Contributor" \
--scopes $loadtest \
--json-auth
La salida es un objeto JSON que representa la entidad de servicio.
Creating 'Load Test Contributor' role assignment under scope
{
"clientId": "00000000-0000-0000-0000-000000000000",
"clientSecret": "00000000-0000-0000-0000-000000000000",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Copie los valores de clientId, clientSecrety tenantId y almacénelos de forma segura como secretos en la herramienta de CI.
Estos valores se usan para iniciar sesión en la suscripción de Azure con el comando az login de la CLI de Azure.
Adición de archivos de prueba de carga en el repositorio
Para ejecutar una prueba de carga con Azure Load Testing en un flujo de trabajo de CI/CD, debe agregar todos los archivos de entrada de prueba de carga en el repositorio de control de código fuente.
Si no tiene una prueba de carga existente, agregue los siguientes archivos al repositorio de código fuente:
Archivo de plan de prueba. En el caso de las pruebas basadas en JMeter, agregue un script de prueba de JMeter (archivo JMX). En el caso de las pruebas basadas en direcciones URL, agregue un archivo JSON de solicitudes.
Cualquier archivo de datos de entrada que use el plan de prueba. Por ejemplo, archivos de datos CSV.
Si tiene una prueba de carga existente, puede descargar los valores de configuración y todos los archivos de entrada directamente desde Azure Portal. Realice los pasos siguientes para descargar los archivos de entrada de una prueba de carga existente en Azure Portal:
En Azure Portal, vaya al recurso de Azure Load Testing.
En el panel izquierdo, seleccione Pruebas de carga para ver la lista de pruebas y seleccione la que desee.
Seleccione los puntos suspensivos (...) que hay junto a la serie de pruebas con la que trabaje y, después, seleccione Descargar archivo de entrada.
El explorador descarga una carpeta comprimida que contiene los archivos de entrada de pruebas de carga.
Use cualquier herramienta zip para extraer los archivos de entrada.
La carpeta contiene los archivos siguientes:
config.yaml: el archivo de configuración YAML de prueba de carga. Haga referencia a este archivo en la definición de flujo de trabajo de CI/CD.
.jmx: el script de prueba de JMeter
Cualquier archivo de entrada adicional, como archivos .csv o archivos de propiedades de usuario necesarios para ejecutar la prueba de carga.
Confirme todos los archivos de entrada extraídos en el repositorio de control de código fuente.
Use el repositorio de código fuente en el que se configura la canalización de CI/CD.
Actualización de la definición de flujo de trabajo de CI/CD
Azure Load Testing admite tanto Acciones de GitHub como Azure Pipelines para ejecutar pruebas de carga.
Instalar la extensión de Azure Load Testing para Azure DevOps
Para crear y ejecutar una prueba de carga, la definición de flujo de trabajo de Azure Pipelines usa la extensión de tarea de Azure Load Testing del marketplace de Azure DevOps.
Seleccione la organización de Azure DevOps y, después, seleccione Install (Instalar) para instalar la extensión.
Si no tiene privilegios de administrador para la organización de Azure DevOps seleccionada, seleccione Request (Solicitar) para solicitar a un administrador que instale la extensión.
Actualización del flujo de trabajo de Azure Pipelines
Actualice el flujo de trabajo de Azure Pipelines para ejecutar una prueba de carga para el recurso de prueba de carga de Azure.
Inicie sesión en su organización de Azure DevOps (https://dev.azure.com/<your-organization>) y vaya a su proyecto.
Seleccione Canalizaciones en el panel de navegación izquierdo, seleccione la canalización y, a continuación, seleccione Editar para editar la definición del flujo de trabajo.
Como alternativa, seleccione Crear canalización para crear una canalización nueva en Azure Pipelines.
Use la tarea AzureLoadTest para ejecutar la prueba de carga.
Especifique el archivo de configuración de prueba de carga que exportó anteriormente en la propiedad loadTestConfigFile.
Reemplace los marcadores de posición de texto <load-testing-resource> y <load-testing-resource-group> por el nombre del recurso de prueba de carga de Azure y el grupo de recursos.
Use la acción azure/load-testing para ejecutar la prueba de carga.
Especifique el archivo de configuración de prueba de carga que exportó anteriormente en la propiedad loadTestConfigFile.
Reemplace los marcadores de posición de texto <load-testing-resource> y <load-testing-resource-group> por el nombre del recurso de prueba de carga de Azure y el grupo de recursos.
Opcionalmente, puede pasar parámetros o secretos a la prueba de carga mediante la propiedad env o secrets.
Use la acción actions/upload-artifact para publicar los resultados de la prueba como artefactos en la ejecución del flujo de trabajo de Acciones de GitHub.
Actualice el flujo de trabajo de CI para ejecutar una prueba de carga para el recurso de Azure Load Testing mediante la CLI de Azure. Use los detalles de la herramienta de CI para agregar los siguientes comandos al flujo de trabajo de CI:
Inicie sesión en la suscripción de Azure mediante la entidad de servicio.
Use los valores clientId, clientSecrety tenantId que almacenó anteriormente.
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
az account set -s $AZURE_SUBSCRIPTION_ID
Cree una prueba de carga mediante el archivo YAML de configuración de pruebas de carga.
Reemplace los marcadores de posición de texto <load-testing-resource>, <load-testing-resource-group> y <load-test-config-yaml> por el nombre del recurso de prueba de carga, el nombre del grupo de recursos y el nombre de archivo del archivo YAML de configuración de pruebas de carga que agregó anteriormente al repositorio.
az load test create --load-test-resource <load-testing-resource> --resource-group <load-testing-resource-group> --test-id sample-test-id --load-test-config-file <load-test-config-yaml>
Ejecute la prueba de carga.
testRunId="run_"`date +"%Y%m%d%_H%M%S"`
displayName="Run"`date +"%Y/%m/%d_%H:%M:%S"`
az load test-run create --load-test-resource <load-testing-resource> --test-id sample-test-id --test-run-id $testRunId --display-name $displayName --description "Test run from CLI"
Recupere y muestre las métricas del lado cliente para la ejecución de pruebas de carga.
az load test-run metrics list --load-test-resource <load-testing-resource> --test-run-id $testRunId --metric-namespace LoadTestRunMetrics
Visualización de resultados de pruebas de carga
Al ejecutar una prueba de carga desde la canalización de CI/CD, podrá ver los resultados del resumen directamente en el registro de salida de CI/CD. Si publicó los resultados de la prueba como un artefacto de canalización, también podrá descargar un archivo .csv para generar informes adicionales.
Limpieza de recursos
Si no planea usar ninguno de los recursos que ha creado, elimínelos para no incurrir en cargos.
Si creó una nueva definición de flujo de trabajo, elimine el archivo YAML de flujo de trabajo en la carpeta .github/workflows.
Si modificó una definición de flujo de trabajo existente, deshaga las modificaciones para ejecutar la prueba de carga y guarde el flujo de trabajo.
Quite la entidad de servicio:
az ad sp delete --id $(az ad sp show --display-name "my-load-test-cicd" -o tsv)
Deshacer los cambios en el flujo de trabajo de CI.
Quite la entidad de servicio:
az ad sp delete --id $(az ad sp show --display-name "my-load-test-cicd" -o tsv)
Pasos siguientes
Pase al siguiente artículo para aprender a identificar las regresiones de rendimiento mediante la definición de criterios de error de prueba y la comparación de series de pruebas.
Aprenda a optimizar el rendimiento de las aplicaciones mediante la simulación de cargas reales con el servicio Azure Load Testing. Obtenga información sobre cómo automatizar las pruebas de carga con Acciones de GitHub para garantizar un rendimiento y escalabilidad coherentes de las aplicaciones.
Administre la ingesta y preparación de datos, el entrenamiento y la implementación de modelos, y la supervisión de soluciones de aprendizaje automático con Python, Azure Machine Learning y MLflow.