Share via


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:

  1. 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.

  2. 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 ...