Bibliothèque de client Test de charge Azure pour Python - version 1.0.0
Test de charge Azure fournit une bibliothèque cliente en python à l’utilisateur grâce à laquelle il peut interagir en mode natif avec le service Test de charge Azure. Test de charge Azure est un service complètement managé qui permet de générer une charge à grande échelle. Il simule un trafic pour vos applications, quel que soit l’endroit où elles sont hébergées. Les développeurs, testeurs et ingénieurs d’assurance qualité peuvent l’utiliser pour optimiser les performances, la scalabilité ou la capacité d’une application.
Documentation
Diverses documentations sont disponibles pour vous aider à démarrer
Prise en main
Installation du package
python -m pip install azure-developer-loadtesting
Configuration requise
- Python 3.7 ou version ultérieure est requis pour utiliser ce package.
- Vous avez besoin d’un abonnement Azure pour utiliser ce package.
- Instance Azure Developer LoadTesting existante.
Créer avec des informations d’identification Azure Active Directory
Pour utiliser des informations d’identification de jeton Azure Active Directory (AAD), fournissez une instance du type d’informations d’identification souhaité obtenue à partir de la bibliothèque azure-identity .
Pour vous authentifier auprès d’AAD, vous devez d’abord installer pipazure-identity
Après l’installation, vous pouvez choisir le type d’informations d’identification d’azure.identity à utiliser.
Par exemple, connectez-vous via la commande Azure CLI az login
et DefaultAzureCredential s’authentifiera en tant qu’utilisateur.
Utilisez les informations d’identification de jeton retournées pour authentifier le client.
Création du client
Le Kit de développement logiciel (SDK) Azure Developer LoadTesting a 2 sous-clients du client principal (LoadTestingClient
) pour interagir avec le service, « administration » et « 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>
fait référence au point de terminaison/URL du plan de données de la ressource.
Concepts clés
La bibliothèque cliente test de charge Azure pour Python vous permet d’interagir avec chacun de ces composants via l’utilisation de clients. Il existe deux clients de niveau supérieur qui sont les principaux points d’entrée de la bibliothèque
LoadTestAdministrationClient
(azure.developer.loadtesting.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.LoadTestRunClient
)
Ces deux clients ont également des équivalents asynchrones, qui sont
LoadTestAdministrationClient
(azure.developer.loadtesting.aio.LoadTestAdministrationClient
)LoadTestRunClient
(azure.developer.loadtesting.aio.LoadTestRunClient
)
Client d’administration de test de charge
LoadTestAdministrationClient
est utilisé pour administrer et configurer les tests de charge, les composants d’application et les métriques.
Test
Un test spécifie le script de test et les paramètres de configuration pour l’exécution d’un test de charge. Vous pouvez créer un ou plusieurs tests dans une ressource de test de charge Azure.
Composant d’application
Lorsque vous exécutez un test de charge pour une application hébergée sur Azure, vous pouvez surveiller les métriques des ressources pour les différents composants de l’application Azure (métriques côté serveur). Pendant l’exécution du test de charge et après l’achèvement du test, vous pouvez surveiller et analyser les métriques de ressources dans le tableau de bord de test de charge Azure.
Mesures
Pendant un test de charge, le test de charge Azure collecte des métriques sur l’exécution des tests. Il existe deux types de métriques :
Les métriques côté client fournissent des détails signalés par le moteur de test. Ces métriques comprennent le nombre d’utilisateurs virtuels, le temps de réponse aux requêtes, le nombre de requêtes ayant échoué et le nombre de requêtes par seconde.
Les métriques côté serveur sont disponibles pour les applications hébergées par Azure et fournissent des informations sur vos composants d’application Azure. Les métriques peuvent concerner le nombre de lectures de base de données, le type de réponses HTTP ou la consommation de ressources de conteneur.
Client d’exécution de test
LoadTestRunClient
est utilisé pour démarrer et arrêter des exécutions de test correspondant à un test de charge. Une série de tests représente une exécution d’un test de charge. Elle collecte les journaux associés à l’exécution du script Apache JMeter, la configuration YAML du test de charge, la liste des composants d’application à analyser et les résultats du test.
point de terminaison Data-Plane
Le plan de données des ressources Test de charge Azure est adressable au format d’URL suivant :
00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.com
Le premier GUID 00000000-0000-0000-0000-000000000000
est l’identificateur unique utilisé pour accéder à la ressource Test de charge Azure. Suivi de aaa
la région Azure de la ressource.
Le point de terminaison du plan de données est obtenu à partir des API de plan de contrôle.
Exemple :1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com
Dans l’exemple ci-dessus, eus
représente la région East US
Azure .
Exemples
Création d’un test de charge
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()))
Chargement du fichier .jmx dans 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()))
Exécution d’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()))
Étapes suivantes
Vous trouverez d’autres exemples ici.
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez opencode@microsoft.com pour toute question ou tout commentaire supplémentaire.
Dépannage
Plus d’informations à ce sujet sera bientôt disponible...
Azure SDK for Python