Azure Load Testing-klientbibliotek för Python – version 1.0.0
Azure Load Testing tillhandahåller klientbibliotek i Python till användaren som de kan interagera med internt med Azure Load Testing-tjänsten. Azure Load Testing är en fullständigt hanterad tjänst för belastningstestning som gör att du kan generera hög skalbar belastning. Tjänsten simulerar trafik för dina program, oavsett var de finns. Utvecklare, testare och kvalitetssäkringstekniker (QA) kan använda den för att optimera programmets prestanda, skalbarhet eller kapacitet.
Dokumentation
Det finns olika dokumentation som hjälper dig att komma igång
Komma igång
Installera paketet
python -m pip install azure-developer-loadtesting
Förutsättningar
- Python 3.7 eller senare krävs för att använda det här paketet.
- Du behöver en Azure-prenumeration för att använda det här paketet.
- En befintlig Instans av Azure Developer LoadTesting.
Skapa med en Azure Active Directory-autentiseringsuppgift
Om du vill använda en AAD-tokenautentisering (Azure Active Directory) anger du en instans av önskad typ av autentiseringsuppgifter som hämtats från azure-identity-biblioteket .
Om du vill autentisera med AAD måste du först installera pipazure-identity
Efter installationen kan du välja vilken typ av autentiseringsuppgifter från azure.identity som ska användas.
Som ett exempel loggar du in via Azure CLI-kommandot az login
och DefaultAzureCredential autentiseras som den användaren.
Använd den returnerade tokenautentiseringsuppgiften för att autentisera klienten.
Skapa klienten
Azure Developer LoadTesting SDK har 2 underklienter till huvudklienten (LoadTestingClient
) för att interagera med tjänsten, "administration" och "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>
refererar till resursens dataplansslutpunkt/URL.
Viktiga begrepp
Med Azure Load Test-klientbiblioteket för Python kan du interagera med var och en av dessa komponenter med hjälp av klienter. Det finns två klienter på den översta nivån som är de viktigaste startpunkterna för biblioteket
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
Dessa två klienter har också asynkrona motsvarigheter, som är
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
Belastningstestadministrationsklient
LoadTestAdministrationClient
Används för att administrera och konfigurera belastningstester, appkomponenter och mått.
Testa
Ett test anger testskriptet och konfigurationsinställningarna för att köra ett belastningstest. Du kan skapa ett eller flera tester i en Azure Load Testing-resurs.
Appkomponent
När du kör ett belastningstest för ett Azure-värdbaserat program kan du övervaka resursmått för de olika Azure-programkomponenterna (mått på serversidan). När belastningstestet körs och när testet har slutförts kan du övervaka och analysera resursmåtten på instrumentpanelen för Azure Load Testing.
Mått
Under ett belastningstest samlar Azure Load Testing in mått om testkörningen. Det finns två typer av mått:
Mått på klientsidan ger dig information som rapporterats av testmotorn. Dessa mått omfattar antalet virtuella användare, svarstiden för begäran, antalet misslyckade begäranden eller antalet begäranden per sekund.
Mått på serversidan är tillgängliga för Azure-värdbaserade program och ger information om dina Azure-programkomponenter. Mått kan vara för antalet databasläsningar, typen av HTTP-svar eller förbrukningen av containerresurser.
Testkörningsklient
LoadTestRunClient
Används för att starta och stoppa testkörningar som motsvarar ett belastningstest. En testkörning representerar en körning av ett belastningstest. Den samlar in loggarna som är associerade med körningen av Apache JMeter-skriptet, YAML-konfigurationen för belastningstestet, listan över appkomponenter som ska övervakas och resultatet av testet.
Data-Plane slutpunkt
Dataplanet för Azure Load Testing-resurser kan adresseras med följande URL-format:
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
Det första GUID 00000000-0000-0000-0000-000000000000
:t är den unika identifierare som används för åtkomst till Azure Load Testing-resursen. Detta följs av aaa
som är Azure-regionen för resursen.
Dataplanets slutpunkt hämtas från API:er för kontrollplan.
Exempel:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
I exemplet ovan eus
representerar du Azure-regionen East US
.
Exempel
Skapa ett belastningstest
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()))
Ladda upp .jmx-filen till ett 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()))
Köra ett 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()))
Nästa steg
Fler exempel finns här.
Bidra
Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.
När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång för alla repor som använder vårt licensavtal för bidrag.
Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Du hittar mer information i Vanliga frågor om uppförandekod eller kontakta opencode@microsoft.com för ytterligare frågor eller kommentarer.
Felsökning
Mer om det kommer snart ...
Azure SDK for Python
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för