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:
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ę.
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...
Azure SDK for Python