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:
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.
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 US
dar.
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...
Azure SDK for Python
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für