Udostępnij za pośrednictwem


Biblioteka klienta testowania obciążenia platformy Azure dla języka Python — wersja 1.0.0

Testowanie obciążenia platformy Azure udostępnia bibliotekę klienta w języku Python użytkownikowi, za pomocą której mogą natywnie korzystać z usługi Azure Load Testing. Testowanie obciążenia platformy Azure to w pełni zarządzana usługa testowania obciążenia, która umożliwia generowanie obciążenia na dużą skalę. Usługa symuluje ruch dla aplikacji, niezależnie od tego, gdzie są hostowane. Deweloperzy, testerzy i inżynierowie zapewniania jakości (QA) mogą jej używać do optymalizowania wydajności, skalowalności lub pojemności aplikacji.

Dokumentacja

Dostępna jest różne dokumenty ułatwiające rozpoczęcie pracy

Wprowadzenie

Instalowanie pakietu

python -m pip install azure-developer-loadtesting

Wymagania wstępne

  • Do korzystania z tego pakietu wymagany jest język Python w wersji 3.7 lub nowszej.
  • Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure .
  • Istniejące wystąpienie loadTesting dla deweloperów platformy Azure.

Tworzenie przy użyciu poświadczeń usługi Azure Active Directory

Aby użyć poświadczeń tokenu usługi Azure Active Directory (AAD), podaj wystąpienie żądanego typu poświadczeń uzyskanego z biblioteki azure-identity .

Aby uwierzytelnić się za pomocą usługi AAD, należy najpierw zainstalować narzędzie pipazure-identity

Po skonfigurowaniu można wybrać typ poświadczeń z witryny azure.identity do użycia.

Na przykład zaloguj się za pomocą polecenia interfejsu wiersza polecenia az login platformy Azure, a parametr DefaultAzureCredential będzie uwierzytelniany jako ten użytkownik.

Użyj zwróconego poświadczenia tokenu, aby uwierzytelnić klienta.

Tworzenie klienta

Zestaw AZURE Developer LoadTesting SDK ma 2 podklienci głównego klienta (LoadTestingClient) do interakcji z usługą, "administracja" i "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> odwołuje się do punktu końcowego/adresu URL płaszczyzny danych zasobu.

Kluczowe pojęcia

Biblioteka klienta usługi Azure Load Test dla języka Python umożliwia interakcję z każdym z tych składników przy użyciu klientów. Istnieją dwa klienci najwyższego poziomu, którzy są głównymi punktami wejścia dla biblioteki

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

Ci dwaj klienci mają również asynchroniczne odpowiedniki, które są

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

Klient administracji testów obciążeniowych

Służy LoadTestAdministrationClient do administrowania i konfigurowania testów obciążeniowych, składników aplikacji i metryk.

Testowanie

Test określa skrypt testowy i ustawienia konfiguracji do uruchamiania testu obciążeniowego. Co najmniej jeden test można utworzyć w zasobie testowania obciążenia platformy Azure.

Składnik aplikacji

Po uruchomieniu testu obciążeniowego dla aplikacji hostowanej na platformie Azure można monitorować metryki zasobów dla różnych składników aplikacji platformy Azure (metryki po stronie serwera). Podczas uruchamiania testu obciążeniowego i po zakończeniu testu można monitorować i analizować metryki zasobów na pulpicie nawigacyjnym testowania obciążenia platformy Azure.

Metryki

Podczas testu obciążeniowego usługa Azure Load Testing zbiera metryki dotyczące wykonywania testu. Istnieją dwa typy metryk:

  1. Metryki po stronie klienta zawierają szczegółowe informacje zgłaszane przez aparat testowy. Te metryki obejmują liczbę użytkowników wirtualnych, czas odpowiedzi żądania, liczbę żądań zakończonych niepowodzeniem lub liczbę żądań na sekundę.

  2. Metryki po stronie serwera są dostępne dla aplikacji hostowanych na platformie Azure i zawierają informacje o składnikach aplikacji platformy Azure. Metryki mogą być przeznaczone dla liczby odczytów bazy danych, typu odpowiedzi HTTP lub użycia zasobów kontenera.

Test Run Client

Służy do uruchamiania LoadTestRunClient i zatrzymywania przebiegów testów odpowiadających testowi obciążeniowemu. Przebieg testu reprezentuje jedno wykonanie testu obciążeniowego. Zbiera dzienniki skojarzone z uruchomieniem skryptu Apache JMeter, konfiguracją testu obciążeniowego YAML, listą składników aplikacji do monitorowania oraz wynikami testu.

punkt końcowy Data-Plane

Płaszczyzna danych zasobów testowania obciążenia platformy Azure jest adresowalna przy użyciu następującego formatu adresu URL:

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

Pierwszy identyfikator GUID 00000000-0000-0000-0000-000000000000 jest unikatowym identyfikatorem używanym do uzyskiwania dostępu do zasobu testowania obciążenia platformy Azure. Następuje aaa po tym, który jest regionem świadczenia usługi Azure zasobu.

Punkt końcowy płaszczyzny danych jest uzyskiwany z interfejsów API płaszczyzny sterowania.

Przykład:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com

W powyższym przykładzie eus reprezentuje region East USświadczenia usługi Azure .

Przykłady

Tworzenie testu obciążeniowego

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

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

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

Następne kroki

Więcej przykładów można znaleźć tutaj.

Współtworzenie

W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę https://cla.microsoft.com.

Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Wystarczy zrobić to raz dla wszystkich repozytoriów, w przypadku których jest używana nasza umowa CLA.

W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz artykuł Code of Conduct FAQ (Często zadawane pytania dotyczące kodeksu postępowania). Jeśli będziesz mieć jeszcze jakieś pytania lub komentarze, wyślij wiadomość e-mail na adres opencode@microsoft.com.

Rozwiązywanie problemów

Więcej o tym wkrótce...