Bibliothèque de client Test de charge Azure pour Python - version 1.0.0

Test de charge Azure fournit une bibliothèque cliente en python à l’utilisateur grâce à laquelle il peut interagir en mode natif avec le service Test de charge Azure. Test de charge Azure est un service complètement managé qui permet de générer une charge à grande échelle. Il simule un trafic pour vos applications, quel que soit l’endroit où elles sont hébergées. Les développeurs, testeurs et ingénieurs d’assurance qualité peuvent l’utiliser pour optimiser les performances, la scalabilité ou la capacité d’une application.

Documentation

Diverses documentations sont disponibles pour vous aider à démarrer

Prise en main

Installation du package

python -m pip install azure-developer-loadtesting

Configuration requise

  • Python 3.7 ou version ultérieure est requis pour utiliser ce package.
  • Vous avez besoin d’un abonnement Azure pour utiliser ce package.
  • Instance Azure Developer LoadTesting existante.

Créer avec des informations d’identification Azure Active Directory

Pour utiliser des informations d’identification de jeton Azure Active Directory (AAD), fournissez une instance du type d’informations d’identification souhaité obtenue à partir de la bibliothèque azure-identity .

Pour vous authentifier auprès d’AAD, vous devez d’abord installer pipazure-identity

Après l’installation, vous pouvez choisir le type d’informations d’identification d’azure.identity à utiliser.

Par exemple, connectez-vous via la commande Azure CLI az login et DefaultAzureCredential s’authentifiera en tant qu’utilisateur.

Utilisez les informations d’identification de jeton retournées pour authentifier le client.

Création du client

Le Kit de développement logiciel (SDK) Azure Developer LoadTesting a 2 sous-clients du client principal (LoadTestingClient) pour interagir avec le service, « administration » et « test_run ».

from azure.developer.loadtesting import LoadTestAdministrationClient

# for managing authentication and authorization
# can be installed from pypi, follow: https://pypi.org/project/azure-identity/
# using DefaultAzureCredentials, read more at: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-python
from azure.identity import DefaultAzureCredential

client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())

<endpoint> fait référence au point de terminaison/URL du plan de données de la ressource.

Concepts clés

La bibliothèque cliente test de charge Azure pour Python vous permet d’interagir avec chacun de ces composants via l’utilisation de clients. Il existe deux clients de niveau supérieur qui sont les principaux points d’entrée de la bibliothèque

  • LoadTestAdministrationClient (azure.developer.loadtesting.LoadTestAdministrationClient)
  • LoadTestRunClient (azure.developer.loadtesting.LoadTestRunClient)

Ces deux clients ont également des équivalents asynchrones, qui sont

  • LoadTestAdministrationClient (azure.developer.loadtesting.aio.LoadTestAdministrationClient)
  • LoadTestRunClient (azure.developer.loadtesting.aio.LoadTestRunClient)

Client d’administration de test de charge

LoadTestAdministrationClient est utilisé pour administrer et configurer les tests de charge, les composants d’application et les métriques.

Test

Un test spécifie le script de test et les paramètres de configuration pour l’exécution d’un test de charge. Vous pouvez créer un ou plusieurs tests dans une ressource de test de charge Azure.

Composant d’application

Lorsque vous exécutez un test de charge pour une application hébergée sur Azure, vous pouvez surveiller les métriques des ressources pour les différents composants de l’application Azure (métriques côté serveur). Pendant l’exécution du test de charge et après l’achèvement du test, vous pouvez surveiller et analyser les métriques de ressources dans le tableau de bord de test de charge Azure.

Mesures

Pendant un test de charge, le test de charge Azure collecte des métriques sur l’exécution des tests. Il existe deux types de métriques :

  1. Les métriques côté client fournissent des détails signalés par le moteur de test. Ces métriques comprennent le nombre d’utilisateurs virtuels, le temps de réponse aux requêtes, le nombre de requêtes ayant échoué et le nombre de requêtes par seconde.

  2. Les métriques côté serveur sont disponibles pour les applications hébergées par Azure et fournissent des informations sur vos composants d’application Azure. Les métriques peuvent concerner le nombre de lectures de base de données, le type de réponses HTTP ou la consommation de ressources de conteneur.

Client d’exécution de test

LoadTestRunClient est utilisé pour démarrer et arrêter des exécutions de test correspondant à un test de charge. Une série de tests représente une exécution d’un test de charge. Elle collecte les journaux associés à l’exécution du script Apache JMeter, la configuration YAML du test de charge, la liste des composants d’application à analyser et les résultats du test.

point de terminaison Data-Plane

Le plan de données des ressources Test de charge Azure est adressable au format d’URL suivant :

00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com

Le premier GUID 00000000-0000-0000-0000-000000000000 est l’identificateur unique utilisé pour accéder à la ressource Test de charge Azure. Suivi de aaa la région Azure de la ressource.

Le point de terminaison du plan de données est obtenu à partir des API de plan de contrôle.

Exemple :1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com

Dans l’exemple ci-dessus, eus représente la région East USAzure .

Exemples

Création d’un test de charge

from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError
import os

TEST_ID = "some-test-id"  
DISPLAY_NAME = "my-load-test"  

# set SUBSCRIPTION_ID as an environment variable
SUBSCRIPTION_ID = os.environ["SUBSCRIPTION_ID"]  

client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())

try:
    result = client.create_or_update_test(
        TEST_ID,
        {
            "description": "",
            "displayName": "My New Load Test",
            "loadTestConfig": {
                "engineInstances": 1,
                "splitAllCSVs": False,
            },
            "passFailCriteria": {
                "passFailMetrics": {
                    "condition1": {
                        "clientmetric": "response_time_ms",
                        "aggregate": "avg",
                        "condition": ">",
                        "value": 300
                    },
                    "condition2": {
                        "clientmetric": "error",
                        "aggregate": "percentage",
                        "condition": ">",
                        "value": 50
                    },
                    "condition3": {
                        "clientmetric": "latency",
                        "aggregate": "avg",
                        "condition": ">",
                        "value": 200,
                        "requestName": "GetCustomerDetails"
                    }
                }
            },
            "secrets": {
                "secret1": {
                    "value": "https://sdk-testing-keyvault.vault.azure.net/secrets/sdk-secret",
                    "type": "AKV_SECRET_URI"
                }
            },
            "environmentVariables": {
                "my-variable": "value"
            }
        }
    )
    print(result)
except HttpResponseError as e:
     print('Service responded with error: {}'.format(e.response.json()))

Chargement du fichier .jmx dans un test

from azure.developer.loadtesting import LoadTestAdministrationClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError

TEST_ID = "some-test-id"  
FILE_NAME = "some-file-name.jmx"  

client = LoadTestAdministrationClient(endpoint='<endpoint>', credential=DefaultAzureCredential())

try:

    # uploading .jmx file to a test
    resultPoller = client.begin_upload_test_file(TEST_ID, FILE_NAME, open("sample.jmx", "rb"))

    # getting result of LRO poller with timeout of 600 secs
    validationResponse = resultPoller.result(600)
    print(validationResponse)
    
except HttpResponseError as e:
    print("Failed with error: {}".format(e.response.json()))

Exécution d’un test

from azure.developer.loadtesting import LoadTestRunClient
from azure.identity import DefaultAzureCredential
from azure.core.exceptions import HttpResponseError

TEST_ID = "some-test-id"  
TEST_RUN_ID = "some-testrun-id" 
DISPLAY_NAME = "my-load-test-run"  

client = LoadTestRunClient(endpoint='<endpoint>', credential=DefaultAzureCredential())

try:
    testRunPoller = client.begin_test_run(
    TEST_RUN_ID,
        {
            "testId": TEST_ID,
            "displayName": "My New Load Test Run",
        }
    )

    #waiting for test run status to be completed with timeout = 3600 seconds
    result = testRunPoller.result(3600)
    
    print(result)
except HttpResponseError as e:
    print("Failed with error: {}".format(e.response.json()))

Étapes suivantes

Vous trouverez d’autres exemples ici.

Contribution

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.

Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez opencode@microsoft.com pour toute question ou tout commentaire supplémentaire.

Dépannage

Plus d’informations à ce sujet sera bientôt disponible...