Sdílet prostřednictvím


Klientská knihovna Azure Load Testing pro Python – verze 1.0.0

Azure Load Testing poskytuje uživateli klientskou knihovnu v Pythonu, pomocí které může nativně pracovat se službou Azure Load Testing. Azure Load Testing je plně spravovaná služba zátěžového testování, která umožňuje generovat velké zatížení. Služba simuluje provoz vašich aplikací bez ohledu na to, kde jsou hostované. Vývojáři, testeři a technici kontroly kvality ho můžou použít k optimalizaci výkonu, škálovatelnosti nebo kapacity aplikací.

Dokumentace

K dispozici je různá dokumentace, která vám pomůže začít

Začínáme

Instalace balíčku

python -m pip install azure-developer-loadtesting

Požadavky

  • K použití tohoto balíčku se vyžaduje Python 3.7 nebo novější.
  • K použití tohoto balíčku potřebujete předplatné Azure .
  • Existující instance Azure Developer LoadTesting.

Vytvoření s využitím přihlašovacích údajů Azure Active Directory

Pokud chcete použít přihlašovací údaje tokenu Azure Active Directory (AAD), zadejte instanci požadovaného typu přihlašovacích údajů získaného z knihovny azure-identity .

Pokud se chcete ověřit pomocí AAD, musíte nejprve nainstalovat pip . azure-identity

Po nastavení můžete zvolit, který typ přihlašovacích údajů z azure.identity chcete použít.

Například se přihlaste pomocí příkazu Azure CLI az login a DefaultAzureCredential se ověří jako tento uživatel.

K ověření klienta použijte vrácené přihlašovací údaje tokenu.

Vytvoření klienta

Sada Azure Developer LoadTesting SDK má 2 dílčí klienty hlavního klienta (LoadTestingClient) pro interakci se službou , "administraci" a "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> odkazuje na koncový bod nebo adresu URL roviny dat prostředku.

Klíčové koncepty

Klientská knihovna Azure Load Test pro Python umožňuje interakci s každou z těchto komponent pomocí klientů. Existují dva klienti nejvyšší úrovně, kteří jsou hlavními vstupními body pro knihovnu.

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

Tito dva klienti mají také asynchronní protějšky, které jsou

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

Klient správy zátěžového testu

Slouží LoadTestAdministrationClient ke správě a konfiguraci zátěžových testů, komponent aplikací a metrik.

Test

Test určuje testovací skript a nastavení konfigurace pro spuštění zátěžového testu. V prostředku Azure Load Testing můžete vytvořit jeden nebo více testů.

Komponenta aplikace

Když spustíte zátěžový test pro aplikaci hostované v Azure, můžete monitorovat metriky prostředků pro různé komponenty aplikace Azure (metriky na straně serveru). Zatímco zátěžový test běží a po dokončení testu můžete monitorovat a analyzovat metriky prostředků na řídicím panelu Azure Load Testing.

Metriky

Během zátěžového testu shromažďuje Azure Load Testing metriky o provádění testu. Existují dva typy metrik:

  1. Metriky na straně klienta poskytují podrobnosti hlášené testovacím modulem. Mezi tyto metriky patří počet virtuálních uživatelů, doba odezvy požadavku, počet neúspěšných požadavků nebo počet požadavků za sekundu.

  2. Metriky na straně serveru jsou k dispozici pro aplikace hostované v Azure a poskytují informace o komponentách aplikací Azure. Metriky můžou být pro počet čtení databáze, typ odpovědí HTTP nebo spotřebu prostředků kontejneru.

Test Run Client

Slouží LoadTestRunClient ke spuštění a zastavení testovacích běhů odpovídajících zátěžovým testům. Testovací běh představuje jedno spuštění zátěžového testu. Shromažďuje protokoly spojené se spuštěním skriptu Apache JMeter, konfiguraci YAML zátěžového testu, seznam komponent aplikace, které se mají monitorovat, a výsledky testu.

koncový bod Data-Plane

Rovina dat prostředků Azure Load Testing je adresovatelná pomocí následujícího formátu adresy URL:

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

První identifikátor GUID 00000000-0000-0000-0000-000000000000 je jedinečný identifikátor, který se používá pro přístup k prostředku Azure Load Testing. Následuje aaa oblast Azure prostředku.

Koncový bod roviny dat se získá z rozhraní API řídicí roviny.

Příklad:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com

Ve výše uvedeném příkladu eus představuje oblast East USAzure .

Příklady

Vytvoření zátěžového testu

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

Nahrání souboru .jmx do testu

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

Spuštění testu

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

Další kroky

Další ukázky najdete tady.

Přispívání

Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com

Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.

Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování. V případě jakýchkoli dotazů nebo připomínek kontaktujte opencode@microsoft.com.

Řešení potíží

Další informace o tom připravujeme...