Configurar um teste de carga no YAML

Saiba como configurar seu teste de carga no Teste de Carga do Azure usando YAML. Você usa o arquivo YAML de configuração de teste para criar e executar testes de carga a partir de seu fluxo de trabalho de integração contínua e entrega contínua (CI/CD).

Sintaxe YAML de teste de carga

Uma configuração de teste de carga usa as seguintes chaves:

Chave Type Necessário Valor predefinido Description
version string Y Versão da especificação do teste de carga. O único valor suportado é v0.1.
testId string Y Identificador único do ensaio de carga. O valor deve estar entre 2 e 50 caracteres ([a-z0-9_-]). Para um teste existente, você pode obter o testId na página de detalhes do teste no portal do Azure.
testName string N Preterido. Identificador único do ensaio de carga. Essa configuração é substituída por testId. Você ainda pode executar testes existentes com o testName campo.
displayName string N Nome para exibição do teste. Esse valor é mostrado na lista de testes no portal do Azure. Se não for fornecido, testId é usado como o nome para exibição.
description string N Breve descrição do teste. O valor tem um comprimento máximo de 100 caracteres.
testType string Y Tipo de ensaio. Valores possíveis:
  • URL: Teste de carga baseado em URL
  • JMX: Teste de carga baseado em JMeter
  • Locust: Teste de carga baseado em gafanhotos
testPlan string Y Referência ao arquivo de plano de teste.
  • If testType: JMX: caminho relativo para o script de teste JMeter.
  • If testType: Locust: caminho relativo para o script de teste Locust.
  • If testType: URL: caminho relativo para o arquivo JSON de solicitações.
engineInstances integer Y Número de instâncias paralelas do mecanismo de teste para executar o plano de teste. Saiba mais sobre como configurar a carga de alta escala.
configurationFiles matriz da cadeia N Lista de arquivos externos, exigidos pelo script de teste. Por exemplo, arquivos de dados CSV, imagens ou qualquer outro arquivo de dados.
O Teste de Carga do Azure carrega todos os arquivos na mesma pasta que o script de teste. No script JMeter ou no script Locust, consulte apenas arquivos externos usando o nome do arquivo e remova todas as informações de caminho do arquivo.
failureCriteria objeto N Lista de critérios de reprovação no teste de carga. Consulte failureCriteria para obter mais detalhes.
autoStop string ou objeto N Pare automaticamente o teste de carga quando a porcentagem de erro exceder um valor.
Valores possíveis:
- disable: não pare um teste de carga automaticamente.
- Objeto: consulte Configuração de parada automática para obter mais detalhes.
properties objeto N
  • If testType: JMX: JMeter referências de arquivo de propriedade do usuário.
  • If testType: Locust: Referências do arquivo de configuração de gafanhotos.
Consulte as propriedades para obter mais detalhes.
zipArtifacts matriz da cadeia N Especifica a lista de arquivos de artefato zip. Para arquivos diferentes de scripts JMeter e propriedades de usuário para testes baseados em JMeter e scripts de gafanhotos e arquivos de configuração para testes baseados em gafanhotos, se o tamanho do arquivo exceder 50 MB, compacte-os em um arquivo ZIP. Certifique-se de que o arquivo ZIP permanece abaixo de 50 MB de tamanho. Apenas 5 artefatos ZIP são permitidos com um máximo de 1000 arquivos em cada um e tamanho descompactado de 1 GB. Só se aplica para testType: JMX e testType: Locust.
splitAllCSVs boolean N False Divida os arquivos CSV de entrada uniformemente em todas as instâncias do mecanismo de teste. Para obter mais informações, consulte Ler um arquivo CSV em testes de carga.
secrets objeto N Lista de segredos que o script Apache JMeter ou Locust faz referência. Veja segredos para mais detalhes.
env objeto N Lista de variáveis de ambiente que o script Apache JMeter ou Locust refere. Consulte as variáveis de ambiente para obter mais detalhes.
certificates objeto N Lista de certificados de cliente para autenticação com pontos de extremidade de aplicativo no script JMeter ou Locust. Consulte os certificados para obter mais detalhes.
keyVaultReferenceIdentity string N ID de recurso da identidade gerenciada atribuída pelo usuário para acessar os segredos do seu Cofre da Chave do Azure. Se você usar uma identidade gerenciada pelo sistema, essas informações não serão necessárias. Certifique-se de conceder a essa identidade atribuída pelo usuário acesso ao seu cofre de chaves do Azure. Saiba mais sobre identidades gerenciadas no Teste de Carga do Azure.
subnetId string N ID de recurso da sub-rede de rede virtual para testar pontos de extremidade hospedados privadamente. Esta sub-rede hospeda as VMs do mecanismo de teste injetadas. Para obter mais informações, consulte como carregar pontos de extremidade hospedados de teste em particular.
publicIPDisabled boolean N Desative a implantação de um endereço IP público, balanceador de carga e grupo de segurança de rede enquanto testa um ponto de extremidade privado. Para obter mais informações, consulte como carregar pontos de extremidade hospedados de teste em particular.
regionalLoadTestConfig objeto N Distribua a carga entre regiões para simular o tráfego de usuários de várias regiões. Para obter mais informações, consulte Configuração de teste de carga regional para obter mais detalhes.

Exemplo de configuração de teste de carga

O trecho YAML a seguir contém um exemplo de configuração de teste de carga.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
subnetId: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.Network/virtualNetworks/load-testing-vnet/subnets/load-testing
configurationFiles:
  - 'sampledata.csv'
zipArtifacts:
   - bigdata.zip
splitAllCSVs: True
failureCriteria:
  - avg(response_time_ms) > 300
  - percentage(error) > 50
  - GetCustomerDetails: avg(latency) >200
autoStop:
  errorPercentage: 80
  timeWindow: 60
secrets:
  - name: my-secret
    value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345
keyVaultReferenceIdentity: /subscriptions/abcdef01-2345-6789-0abc-def012345678/resourceGroups/sample-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/sample-identity

failureCriteria configuração

Os critérios de falha de teste permitem definir condições para determinar se uma execução de teste de carga foi bem-sucedida ou não. Se um ou mais critérios de reprovação forem atendidos, o teste obterá um resultado de teste reprovado. Saiba mais sobre como usar critérios de falha de teste de carga.

Você pode definir critérios de falha que se aplicam a todo o teste de carga ou que se aplicam a uma solicitação específica. Os critérios de reprovação têm a seguinte estrutura:

  • Critérios de ensaio ao nível do ensaio de carga: Aggregate_function (client_metric) condition threshold.
  • Critérios de teste aplicados a solicitações JMeter específicas: Request: Aggregate_function (client_metric) condition threshold.

Métricas de cliente suportadas

O Teste de Carga do Azure dá suporte às seguintes métricas de cliente:

Métrica Função agregar Threshold Condição Description
response_time_ms avg (média)
min (mínimo)
max (máximo)
pxx (percentil), xx pode ser 50, 75, 90, 95, 96, 97, 98, 99, 999 e 9999
Valor inteiro, representando o número de milissegundos (ms). > (maior que)
< (menos que)
Tempo de resposta ou tempo decorrido, em milissegundos. Saiba mais sobre o tempo decorrido na documentação do Apache JMeter.
latency avg (média)
min (mínimo)
max (máximo)
pxx (percentil), xx pode ser 50, 90, 95, 99
Valor inteiro, representando o número de milissegundos (ms). > (maior que)
< (menos que)
Latência, em milissegundos. Saiba mais sobre latência na documentação do Apache JMeter.
error percentage Valor numérico no intervalo 0-100, representando uma percentagem. > (maior que) Percentagem de pedidos falhados.
requests_per_sec avg (média) Valor numérico com até duas casas decimais. > (maior que)
< (menos que)
Número de pedidos por segundo.
requests count Valor inteiro. > (maior que)
< (menos que)
Número total de pedidos.

Exemplo de configuração de critérios de falha

O trecho de código a seguir mostra uma configuração de teste de carga, que tem três critérios de falha de teste de carga.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
failureCriteria:
  - avg(response_time_ms) > 300
  - percentage(error) > 50
  - GetCustomerDetails: avg(latency) >200

autoStop configuração

A funcionalidade de parada automática de teste de carga permite que você pare automaticamente um teste de carga quando a porcentagem de erro exceder um limite específico durante uma determinada janela de tempo. Saiba mais sobre a funcionalidade de parada automática de teste de carga.

Chave Type Default value Description
errorPercentage integer 90 Limiar para a percentagem de erro, durante o timeWindow. Se a porcentagem de erro exceder essa porcentagem durante uma determinada janela de tempo, a execução do teste será interrompida automaticamente.
timeWindow integer 60 Janela de tempo em segundos para calcular o errorPercentage.

Exemplo de configuração de parada automática

O trecho de código a seguir mostra uma configuração de teste de carga, que tem três critérios de falha de teste de carga.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
autoStop:
  errorPercentage: 80
  timeWindow: 60

properties configuração

Você pode especificar um arquivo de propriedades de usuário JMeter para seu teste de carga. O arquivo de propriedades do usuário é carregado junto com o plano de teste e outros arquivos. Saiba mais sobre como usar as propriedades do usuário JMeter no Teste de Carga do Azure.

Chave Type Default value Description
userPropertyFile string Arquivo para usar como um arquivo de propriedades de usuário do Apache JMeter ou um arquivo de configuração de gafanhoto. Para Locust, arquivos com extensões .conf, .ini e .toml são suportados como um arquivo de configuração. O arquivo é carregado no recurso Teste de Carga do Azure junto com o script de teste e outros arquivos de configuração. Se o arquivo estiver em uma subpasta em sua máquina local, use um caminho relativo ao local do script de teste.

Exemplo de configuração de arquivo de propriedade do usuário

O trecho de código a seguir mostra uma configuração de teste de carga, que especifica um arquivo de propriedades do usuário.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
properties:
  userPropertyFile: 'user.properties'

O trecho de código a seguir mostra uma configuração de teste de carga, que especifica um arquivo de configuração Locust.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.py
testType: Locust
engineInstances: 1
properties:
  userPropertyFile: 'locust.conf'

secrets configuração

Você pode armazenar valores secretos no Cofre de Chaves do Azure e fazer referência a eles em seu plano de teste. Saiba mais sobre como usar segredos com o Teste de Carga do Azure.

Chave Type Default value Description
name string Nome do segredo. Esse nome deve corresponder ao nome secreto que você usa nas solicitações do plano de teste.
value string URI (identificador secreto) para o segredo do Cofre da Chave do Azure.

Exemplo de configuração de segredos

O trecho de código a seguir mostra uma configuração de teste de carga, que faz referência a um segredo my-secret no Cofre de Chaves do Azure.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
secrets:
  - name: my-secret
    value: https://akv-contoso.vault.azure.net/secrets/MySecret/abc1234567890def12345

env configuração

Você pode especificar variáveis de ambiente e fazer referência a elas em seu plano de teste. Saiba mais sobre como usar variáveis de ambiente com o Teste de Carga do Azure.

Chave Type Default value Description
name string Nome da variável de ambiente. Esse nome deve corresponder ao nome da variável que você usa nas solicitações do plano de teste.
value string Valor da variável de ambiente.

Exemplo de configuração de variável de ambiente

O trecho de código a seguir mostra uma configuração de teste de carga, que especifica uma variável my-variable de ambiente e um valor my-value.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
env:
  - name: my-variable
    value: my-value

certificates configuração

Você pode passar certificados de cliente para seu teste de carga. O certificado é armazenado no Cofre da Chave do Azure. Saiba mais sobre como usar certificados de cliente com o Teste de Carga do Azure.

Chave Type Default value Description
name string Nome do certificado.
value string URI (identificador secreto) para o certificado no Cofre da Chave do Azure.

Exemplo de configuração de certificado

O trecho de código a seguir mostra uma configuração de teste de carga, que faz referência a um certificado de cliente no Cofre de Chaves do Azure.

version: v0.1
testId: SampleTest
displayName: Sample Test
description: Load test website home page
testPlan: SampleTest.jmx
testType: JMX
engineInstances: 1
certificates:
  - name: my-certificate
    value: https://akv-contoso.vault.azure.net/certificates/MyCertificate/abc1234567890def12345

Solicita arquivo JSON

Se você usar um teste baseado em URL, poderá especificar as solicitações HTTP em um arquivo JSON em vez de usar um script de teste JMeter. Certifique-se de definir o testType para URL no arquivo YAML de configuração de teste e fazer referência ao arquivo JSON de solicitações.

Pedidos HTTP

O arquivo JSON de solicitações usa as seguintes propriedades para definir solicitações na requests propriedade:

Propriedade Type Description
requestName string Nome exclusivo da solicitação. Você pode fazer referência ao nome da solicitação ao configurar critérios de falha de teste.
responseVariables matriz Lista de variáveis de resposta. Use variáveis de resposta para extrair um valor da solicitação e fazer referência a ele em uma solicitação subsequente. Saiba mais sobre variáveis de resposta.
responseVariables.extractorType string Mecanismo para extrair um valor da saída da resposta. Os valores suportados são XPathExtractor, JSONExtractore RegularExpression.
responseVariables.expression string Expressão para recuperar a saída da resposta. A expressão depende do valor do tipo de extrator.
responseVariables.variableName string Nome exclusivo da variável de resposta. Você pode fazer referência a essa variável em uma solicitação subsequente usando a {$variable-name} sintaxe.
queryParameters matriz Lista de parâmetros de cadeia de caracteres de consulta a serem passados para o ponto de extremidade.
queryParameters.key string Nome do parâmetro da cadeia de caracteres de consulta.
queryParameters.value string Valor do parâmetro da cadeia de caracteres de consulta.
requestType string Tipo de pedido. Os valores suportados são: URL ou CURL.
endpoint string URL do ponto de extremidade do aplicativo a ser testado.
headers matriz Lista de cabeçalhos HTTP a serem passados para o ponto de extremidade do aplicativo. Especifique um par chave-valor para cada cabeçalho.
body string Corpo de texto para a solicitação HTTP. Você pode usar o requestBodyFormat para especificar o formato do conteúdo do corpo.
requestBodyFormat string Formato do conteúdo do corpo. Os valores suportados são: Text, JSON, JavaScript, HTML, e XML.
method string Método HTTP para invocar o ponto de extremidade. Os valores suportados são: , , , , DELETEPATCH, HEAD, e OPTIONS. PUTPOSTGET
curlCommand string Comando cURL a ser executado. Requer que o requestType é CURL.

O trecho JSON a seguir contém um arquivo JSON de solicitações de exemplo:

{
    "version": "1.0",
    "scenarios": {
        "requestGroup1": {
            "requests": [
                {
                    "requestName": "add",
                    "responseVariables": [],
                    "queryParameters": [
                        {
                            "key": "param1",
                            "value": "value1"
                        }
                    ],
                    "requestType": "URL",
                    "endpoint": "https://www.contoso.com/orders",
                    "headers": {
                        "api-token": "my-token"
                    },
                    "body": "{\r\n  \"customer\": \"Contoso\",\r\n  \"items\": {\r\n\t  \"product_id\": 321,\r\n\t  \"count\": 50,\r\n\t  \"amount\": 245.95\r\n  }\r\n}",
                    "method": "POST",
                    "requestBodyFormat": "JSON"
                },
                {
                    "requestName": "get",
                    "responseVariables": [],
                    "requestType": "CURL",
                    "curlCommand": "curl --request GET 'https://www.contoso.com/orders'"
                },
            ],
            "csvDataSetConfigList": []
        }
    },
    "testSetup": [
        {
            "virtualUsersPerEngine": 1,
            "durationInSeconds": 600,
            "loadType": "Linear",
            "scenario": "requestGroup1",
            "rampUpTimeInSeconds": 30
        }
    ]
}

Configuração de carga

O arquivo JSON de solicitações usa as seguintes propriedades para definir a configuração de carga na testSetup propriedade:

Propriedade Type Tipo de carga Description
loadType string Tipo de padrão de carga. Os valores suportados são: linear, stepe spike.
scenario string Referência ao grupo de solicitações, especificado na scenarios propriedade.
virtualUsersPerEngine integer Todos Número de usuários virtuais por instância do mecanismo de teste.
durationInSeconds integer Todos Duração total do ensaio de carga em segundos.
rampUpTimeInSeconds integer Linear, Passo Duração em segundos para aumentar até o número alvo de usuários virtuais.
rampUpSteps integer Passo O número de etapas para atingir o número alvo de usuários virtuais.
spikeMultiplier integer Espigão O fator para multiplicar o número de usuários-alvo durante a duração do pico.
spikeHoldTimeInSeconds integer Espigão Duração total em segundos para manter a carga de pico.

Configuração de teste de carga regional

Você pode distribuir a carga entre regiões para simular melhor os padrões de tráfego da vida real. Você pode especificar as regiões das quais deseja gerar a carga e a quantidade de carga que deseja simular de cada região. Você pode fazer isso especificando o nome da região e o número de instâncias de mecanismo desejadas nessa região. Saiba mais sobre como gerar carga de várias regiões.

Chave Type Default value Description
region string Nome da região do Azure.
engineInstances integer Número de instâncias de mecanismo para essa região do Azure.

Exemplo de configuração de teste de carga regional

O trecho de código a seguir mostra uma configuração de teste de carga, que especifica duas regiões eastus do Azure e eastasia o número de instâncias de mecanismo para cada região.

displayName: Sample Test
testPlan: sampleScript.jmx
description: 'Load test website home page'
engineInstances: 4
testId: SampleTest
testType: Locust
splitAllCSVs: False
regionalLoadTestConfig:
- region: eastus
  engineInstances: 2
- region: eastasia
  engineInstances: 2
failureCriteria:
- p90(response_time_ms) > 10000
autoStop:
  errorPercentage: 90
  timeWindow: 60