Libreria client di Test di carico di Azure per Python - versione 1.0.0
Test di carico di Azure fornisce la libreria client in Python all'utente in cui possono interagire in modo nativo con il servizio Test di carico di Azure. Test di carico di Azure è un servizio di test del carico completamente gestito che consente di generare carico su larga scala. Il servizio simula il traffico per le applicazioni, indipendentemente dalla posizione in cui sono ospitate. Gli sviluppatori, i tester e i tecnici di qualità (QA) possono usarli per ottimizzare le prestazioni dell'applicazione, la scalabilità o la capacità.
Documentazione
La documentazione è disponibile per iniziare
Introduzione
Installazione del pacchetto
python -m pip install azure-developer-loadtesting
Prerequisiti
- Python 3.7 o versione successiva è necessario per usare questo pacchetto.
- È necessaria una sottoscrizione di Azure per usare questo pacchetto.
- Istanza di LoadTesting per sviluppatori di Azure esistente.
Creare con una credenziale di Azure Active Directory
Per usare una credenziale token di Azure Active Directory (AAD), specificare un'istanza del tipo di credenziali desiderato ottenuto dalla libreria azure-identity .
Per eseguire l'autenticazione con AAD, è prima necessario installare pipazure-identity
Dopo la configurazione, è possibile scegliere il tipo di credenziali da azure.identity da usare.
Ad esempio, accedere tramite il comando dell'interfaccia az login
della riga di comando di Azure e DefaultAzureCredential eseguirà l'autenticazione come utente.
Usare le credenziali del token restituite per autenticare il client.
Creare il client
Azure Developer LoadTesting SDK dispone di 2 sub-client del client principale (LoadTestingClient
) per interagire con il servizio, "amministrazione" e "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>
fa riferimento all'endpoint/all'URL del piano dati della risorsa.
Concetti chiave
La libreria client di Test di carico di Azure per Python consente di interagire con ognuno di questi componenti tramite l'uso dei client. Esistono due client di primo livello che rappresentano i punti di ingresso principali per la libreria
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
Questi due client dispongono anche di controparti asincrone, che sono
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
Client di amministrazione dei test di carico
Viene LoadTestAdministrationClient
usato per amministrare e configurare i test di carico, i componenti dell'app e le metriche.
Test
Un test specifica lo script di test e le impostazioni di configurazione per l'esecuzione di un test di carico. È possibile creare uno o più test in una risorsa test di carico di Azure.
Componente app
Quando si esegue un test di carico per un'applicazione ospitata in Azure, è possibile monitorare le metriche delle risorse per i diversi componenti dell'applicazione di Azure (metriche lato server). Durante l'esecuzione del test di carico e dopo il completamento del test, è possibile monitorare e analizzare le metriche delle risorse nel dashboard test di carico di Azure.
Metriche
Durante un test di carico, Test di carico di Azure raccoglie le metriche relative all'esecuzione del test. Esistono due tipi di metriche:
Le metriche lato client forniscono i dettagli segnalati dal motore di test. Queste metriche includono il numero di utenti virtuali, il tempo di risposta della richiesta, il numero di richieste non riuscite o il numero di richieste al secondo.
Le metriche lato server sono disponibili per le applicazioni ospitate in Azure e forniscono informazioni sui componenti dell'applicazione di Azure. Le metriche possono essere per il numero di letture del database, il tipo di risposte HTTP o l'utilizzo delle risorse del contenitore.
Test Run Client
Viene LoadTestRunClient
usato per avviare e arrestare le esecuzioni di test corrispondenti a un test di carico. Un'esecuzione di test rappresenta un'esecuzione di un test di carico. Raccoglie i log associati all'esecuzione dello script Apache JMeter, la configurazione YAML del test di carico, l'elenco dei componenti dell'app da monitorare e i risultati del test.
endpoint Data-Plane
Il piano dati delle risorse di Test di carico di Azure è indirizzabile usando il formato URL seguente:
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
Il primo GUID è l'identificatore univoco 00000000-0000-0000-0000-000000000000
usato per accedere alla risorsa Test di carico di Azure. Questo è seguito da aaa
quale è l'area di Azure della risorsa.
L'endpoint del piano dati viene ottenuto dalle API del piano di controllo.
Esempio:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
Nell'esempio precedente rappresenta eus
l'area East US
di Azure .
Esempio
Creazione di un test di carico
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()))
Caricamento di file con estensione jmx in un 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()))
Esecuzione di un 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()))
Passaggi successivi
Altri esempi sono disponibili qui.
Contributo
In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, vedere https://cla.microsoft.com.
Quando si invia una richiesta pull, un bot CLA determina automaticamente se è necessario specificare un contratto CLA e completare la richiesta pull in modo appropriato (ad esempio con un'etichetta e un commento). Seguire le istruzioni specificate dal bot. È sufficiente eseguire questa operazione una sola volta per tutti i repository che usano il contratto CLA Microsoft.
Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.
Risoluzione dei problemi
Altre informazioni sono presto disponibili...
Azure SDK for Python