Share via


Biblioteca de cliente do Azure Load Testing para Python – versão 1.0.0

Os Testes de Carga do Azure fornecem a biblioteca de cliente em python ao utilizador através da qual podem interagir nativamente com o serviço de Testes de Carga do Azure. O Azure Load Testing é um serviço de teste de carga totalmente gerido que lhe permite gerar carga de alta escala. O serviço simula o tráfego para as suas aplicações, independentemente do local onde estão alojadas. Os programadores, os testadores e os engenheiros de garantia de qualidade (QA) podem utilizá-lo para otimizar o desempenho, escalabilidade ou capacidade da aplicação.

Documentação

Estão disponíveis várias documentação para o ajudar a começar

Introdução

Instalar o pacote

python -m pip install azure-developer-loadtesting

Pré-requisitos

  • O Python 3.7 ou posterior é necessário para utilizar este pacote.
  • Precisa de uma subscrição do Azure para utilizar este pacote.
  • Uma instância do Azure Developer LoadTesting existente.

Criar com uma Credencial do Azure Active Directory

Para utilizar uma credencial de token do Azure Active Directory (AAD), forneça uma instância do tipo de credencial pretendido obtido a partir da biblioteca de identidades do azure .

Para autenticar com o AAD, primeiro tem de instalar o pipazure-identity

Após a configuração, pode escolher o tipo de credencial a partir de azure.identity a utilizar.

Por exemplo, inicie sessão através do comando da CLI az login do Azure e DefaultAzureCredential será autenticado como esse utilizador.

Utilize a credencial do token devolvido para autenticar o cliente.

Criar o cliente

O Azure Developer LoadTesting SDK tem dois sub-clientes do cliente principal (LoadTestingClient) para interagir com o serviço, "administração" 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> refere-se ao ponto final/URL do plano de dados do recurso.

Conceitos-chave

A biblioteca de cliente do Azure Load Test para python permite-lhe interagir com cada um destes componentes através da utilização de clientes. Existem dois clientes de nível superior que são os principais pontos de entrada da biblioteca

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

Estes dois clientes também têm homólogos assíncronos, que são

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

Cliente de Administração do Teste de Carga

O LoadTestAdministrationClient é utilizado para administrar e configurar os testes de carga, componentes da aplicação e métricas.

Teste

Um teste especifica o script de teste e as definições de configuração para executar um teste de carga. Pode criar um ou mais testes num recurso de Teste de Carga do Azure.

Componente da Aplicação

Quando executa um teste de carga para uma aplicação alojada no Azure, pode monitorizar as métricas de recursos para os diferentes componentes da aplicação do Azure (métricas do lado do servidor). Enquanto o teste de carga é executado e após a conclusão do teste, pode monitorizar e analisar as métricas de recursos no dashboard testes de carga do Azure.

Métricas

Durante um teste de carga, o Teste de Carga do Azure recolhe métricas sobre a execução do teste. Existem dois tipos de métricas:

  1. As métricas do lado do cliente dão-lhe detalhes comunicados pelo motor de teste. Estas métricas incluem o número de utilizadores virtuais, o tempo de resposta do pedido, o número de pedidos falhados ou o número de pedidos por segundo.

  2. As métricas do lado do servidor estão disponíveis para aplicações alojadas no Azure e fornecem informações sobre os componentes da aplicação do Azure. As métricas podem ser para o número de leituras de bases de dados, o tipo de respostas HTTP ou o consumo de recursos de contentor.

Test Run Client

O LoadTestRunClient é utilizado para iniciar e parar execuções de teste correspondentes a um teste de carga. Uma execução de teste representa uma execução de um teste de carga. Recolhe os registos associados à execução do script do Apache JMeter, à configuração do YAML de teste de carga, à lista de componentes da aplicação a monitorizar e aos resultados do teste.

Ponto Final do Data-Plane

O plano de dados dos recursos do Azure Load Testing é endereçável com o seguinte formato de URL:

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

O primeiro GUID 00000000-0000-0000-0000-000000000000 é o identificador exclusivo utilizado para aceder ao recurso de Teste de Carga do Azure. Segue-se aaa a região do Azure do recurso.

O ponto final do plano de dados é obtido a partir das APIs do Plano de Controlo.

Exemplo:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.com

No exemplo acima, eus representa a região East USdo Azure .

Exemplos

Criar um teste de carga

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

Carregar o ficheiro .jmx para um Teste

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

Executar um Teste

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

Passos seguintes

Pode encontrar mais exemplos aqui.

Contribuir

Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.

Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.

Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, veja a Code of Conduct FAQ (FAQ do Código de Conduta) ou envie um e-mail para opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.

Resolução de problemas

Mais sobre isso está para breve...