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:
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.
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 US
Azure .
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...
Azure SDK for Python
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro