Share via


Azure Load Testing-Clientbibliothek für Python– Version 1.0.0

Azure Load Testing stellt dem Benutzer eine Clientbibliothek in Python bereit, mit der er nativ mit dem Azure Load Testing-Dienst interagieren kann. Azure Load Testing ist ein vollständig verwalteter Auslastungstestdienst, mit dem Sie eine hohe Auslastung generieren können. Der Dienst simuliert Datenverkehr für Ihre Anwendungen, unabhängig davon, wo sie gehostet werden. Fachkräfte in der Entwicklung und Qualitätssicherung sowie Tester*innen können damit die Leistung, Skalierbarkeit oder Kapazität einer Anwendung optimieren.

Dokumentation

Es stehen verschiedene Dokumentationen zur Verfügung, die Ihnen den Einstieg erleichtern

Erste Schritte

Installieren des Pakets

python -m pip install azure-developer-loadtesting

Voraussetzungen

  • Für die Verwendung dieses Pakets ist Python 3.7 oder höher erforderlich.
  • Sie benötigen ein Azure-Abonnement , um dieses Paket verwenden zu können.
  • Eine vorhandene Azure Developer LoadTesting-Instanz.

Erstellen mit Azure Active Directory-Anmeldeinformationen

Um Anmeldeinformationen für Azure Active Directory-Token (AAD) zu verwenden, geben Sie eine Instanz des gewünschten Anmeldeinformationstyps an, der aus der azure-identity-Bibliothek abgerufen wird.

Um sich bei AAD zu authentifizieren, müssen Sie zuerst pip installieren. azure-identity

Nach dem Setup können Sie auswählen, welche Art von Anmeldeinformationen aus azure.identity verwendet werden soll.

Beispielsweise melden Sie sich über den Azure CLI-Befehl az login an, und DefaultAzureCredential authentifiziert sich als dieser Benutzer.

Verwenden Sie die zurückgegebenen Tokenanmeldeinformationen, um den Client zu authentifizieren.

Erstellen des Clients

Das Azure Developer LoadTesting SDK verfügt über zwei Unterclients des Hauptclients (LoadTestingClient), um mit dem Dienst zu interagieren, "Administration" und "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> bezieht sich auf den Endpunkt/die URL der Ressource auf Datenebene.

Wichtige Begriffe

Mit der Azure Load Test-Clientbibliothek für Python können Sie mithilfe von Clients mit jeder dieser Komponenten interagieren. Es gibt zwei Clients auf oberster Ebene, die die wichtigsten Einstiegspunkte für die Bibliothek sind.

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

Diese beiden Clients verfügen auch über asynchrone Entsprechungen, die

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

Auslastungstestverwaltungsclient

Dient LoadTestAdministrationClient zum Verwalten und Konfigurieren der Auslastungstests, App-Komponenten und Metriken.

Test

Ein Test gibt das Testskript und die Konfigurationseinstellungen zum Ausführen eines Auslastungstests an. Sie können in einer Azure Load Testing-Ressource einen oder mehrere Tests erstellen.

App-Komponente

Wenn Sie einen Auslastungstest für eine in Azure gehostete Anwendung ausführen, können Sie Ressourcenmetriken für die verschiedenen Azure-Anwendungskomponenten (serverseitige Metriken) überwachen. Sie können während des Auslastungstests und nach seinem Abschluss die Ressourcenmetriken auf dem Azure Load Testing-Dashboard überwachen und analysieren.

Metriken

Während eines Auslastungstests sammelt Azure Load Testing Metriken zur Testausführung. Es gibt zwei Typen von Metriken:

  1. Clientseitige Metriken enthalten Details, die von der Test-Engine gemeldet werden. Zu diesen Metriken gehören die Anzahl der virtuellen Benutzer*innen, die Antwortzeit auf Anforderungen, die Anzahl fehlerhafter Anforderungen oder die Anzahl der Anforderungen pro Sekunde.

  2. Serverseitige Metriken sind für in Azure gehostete Anwendungen verfügbar und enthalten Informationen zu Ihren Azure-Anwendungskomponenten. Metriken können für die Anzahl der Datenbanklesevorgänge, den Typ der HTTP-Antworten oder den Verbrauch von Containerressourcen gelten.

Testausführungsclient

Dient LoadTestRunClient zum Starten und Beenden von Testläufen, die einem Auslastungstest entsprechen. Ein Testlauf stellt eine Ausführung eines Auslastungstests dar. Er erfasst die Protokolle, die der Ausführung des Apache JMeter-Skripts zugeordnet sind, die YAML-Konfiguration des Auslastungstests, die Liste der zu überwachenden App-Komponenten und die Ergebnisse des Tests.

Data-Plane-Endpunkt

Die Datenebene von Azure Load Testing-Ressourcen kann mithilfe des folgenden URL-Formats adressiert werden:

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

Die erste GUID 00000000-0000-0000-0000-000000000000 ist der eindeutige Bezeichner, der für den Zugriff auf die Azure Load Testing-Ressource verwendet wird. Darauf folgt aaa , welche Azure-Region der Ressource ist.

Der Datenebenenendpunkt wird über Steuerungsebenen-APIs abgerufen.

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

Im obigen eus Beispiel stellt die Azure-Region East USdar.

Beispiele

Erstellen eines Auslastungstests

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()))

Hochladen einer JMX-Datei in einen 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()))

Ausführen eines Tests

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()))

Nächste Schritte

Weitere Beispiele finden Sie hier.

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex, oder wenden Sie sich mit weiteren Fragen oder Kommentaren an opencode@microsoft.com.

Problembehandlung

Mehr dazu kommt in Kürze...