View a markdown version of this page

Crie um cenário de teste - Teste de carga distribuída na AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Crie um cenário de teste

A criação de um cenário de teste envolve quatro etapas principais: definir configurações gerais, definir o cenário, moldar padrões de tráfego e revisar sua configuração.

Etapa 1: configurações gerais

Configure os parâmetros básicos para seu teste de carga, incluindo nome do teste, descrição e opções gerais de configuração.

Identificação do teste

  • Nome do teste (obrigatório) - Um nome descritivo para seu cenário de teste

  • Descrição do teste (obrigatório) - Detalhes adicionais sobre a finalidade e a configuração do teste

  • Tags (opcional) - Adicione até 5 tags para categorizar e organizar seus cenários de teste

Opções de agendamento

Configure quando o teste deve ser executado:

  • Executar agora - Execute o teste imediatamente após a criação.

  • Executar uma vez - Agende o teste para ser executado em uma data e hora específicas.

  • Executar em um cronograma - Use o agendamento baseado em cron para executar testes automaticamente em intervalos regulares. Você pode selecionar padrões comuns (a cada hora, diariamente, semanalmente) ou definir uma expressão cron personalizada. Para obter detalhes sobre o formato cron aceito, os padrões suportados e as restrições, consulte a referência da expressão Cron no guia do desenvolvedor.

Fluxo de trabalho de agendamento

Quando você agenda um teste, ocorre o seguinte fluxo de trabalho:

  • Os parâmetros do cronograma são enviados para a API da solução por meio do Amazon API Gateway.

  • A API passa os parâmetros para uma função do Lambda que cria um cronograma do Amazon EventBridge Scheduler configurado para ser executado na data especificada.

  • Para testes únicos (Executar uma vez), a EventBridge programação do Scheduler invoca a função api-services Lambda na data e hora especificadas, que executa o teste.

  • Para testes recorrentes (Executar em um cronograma), o cronograma do EventBridge Scheduler invoca a função api-services Lambda imediatamente e na cadência definida pela expressão cron ou rate até a data de expiração.

Dados dinâmicos

Marque a caixa de seleção Incluir dados em tempo real para visualizar métricas em tempo real enquanto seu teste está sendo executado. Quando ativado, você pode monitorar:

  • Tempo médio de resposta.

  • Contagens de usuários virtuais.

  • Solicitações bem-sucedidas contam.

  • Contagens de solicitações falhadas.

O recurso de dados ao vivo fornece gráficos em tempo real com dados agregados em intervalos de um segundo. Para obter mais informações, consulte Monitoramento com dados em tempo real.

Etapa 2: Configuração do cenário

Defina o cenário de teste específico e selecione sua estrutura de teste preferida.

Seleção do tipo de teste

Escolha o tipo de teste de carga que você deseja realizar:

  • Endpoint HTTP simples - Teste um único endpoint de API ou página da web com uma configuração simples.

  • JMeter - Carregue scripts de teste do JMeter (arquivos.jmx ou arquivos.zip).

  • k6 - Carregue scripts de teste k6 (arquivos.js ou arquivos.zip).

  • Locust - Faça upload de scripts de teste do Locust (arquivos.py ou arquivos.zip).

nota

Todos os quatro tipos de teste dependem de componentes de terceiros. A solução executa testes por meio da estrutura de automação de testes Taurus, que executa JMeter, k6 ou Locust dependendo do tipo de teste; testes simples de endpoint HTTP são convertidos em um plano de teste JMeter e executados pelo Apache JMeter incluído. Antes de criar um teste, revise as estruturas de Third-party teste para considerações de segurança, informações de licença e opções de correção.

Modo de forma de tráfego

Escolha qual lado controla a carga que o teste gera. O modo selecionado altera os campos que o console mostra na Etapa 3: Forma do tráfego.

  • Padrão - A solução controla a carga. Você define os usuários virtuais, o período de aceleração e a duração da espera. O padrão é o padrão e é o único modo que oferece suporte a testes de endpoint HTTP simples.

  • Nativo - Seu script controla o carregamento. A solução executa seu script na própria linha de comando da estrutura de teste e define somente a contagem de tarefas por região e uma duração de segurança.

O Native exige um script carregado, portanto, você não pode selecioná-lo ao escolher o tipo de teste Simple HTTP Endpoint. Para obter as definições completas e orientações sobre qual modo escolher, consulte Modos de formato de tráfego.

Configuração de endpoint HTTP

Quando “Simple HTTP Endpoint” é selecionado, a solução gera um plano de teste do JMeter a partir da sua configuração e o executa com o binário Apache JMeter incluído. Defina estas configurações:

Endpoint HTTP (obrigatório)

Insira o URL completo do endpoint que você deseja testar. Por exemplo, .https://api.example.com/users Garanta que o endpoint esteja acessível a partir da infraestrutura da AWS.

Método HTTP (obrigatório)

Selecione o método HTTP para suas solicitações. O padrão é GET. Outras opções incluem POST PUTDELETE,PATCH,HEAD, OPTIONS e.

Cabeçalho da solicitação (opcional)

Adicione cabeçalhos HTTP personalizados às suas solicitações. Os exemplos comuns incluem:

  • Content-Type: application/json

  • Authorization: Bearer <token>

  • User-Agent: LoadTest/1.0

    Escolha Adicionar cabeçalho para incluir vários cabeçalhos.

Carga útil corporal (opcional)

Adicione o conteúdo do corpo da solicitação para solicitações POST ou PUT. Suporta formatos JSON, XML ou texto sem formatação. Por exemplo: {"userId": 123, "action": "test"}.

Scripts de estrutura de teste

Ao usar o JMeter, k6 ou Locust, carregue seu arquivo de script de teste ou um arquivo.zip contendo seu script de teste e arquivos de suporte.

Para o JMeter, você pode incluir plug-ins personalizados em uma /plugins pasta dentro do seu arquivo.zip.

Para o Locust, um script de teste dentro de um arquivo.zip deve ser nomeado. locustfile.py Para instalar pacotes Python de terceiros no contêiner em tempo de execução, inclua um requirements.txt arquivo no arquivo e, opcionalmente, um packages subdiretório de arquivos wheel para instalá-los sem acesso à Internet. Para obter mais informações, consulte Testes do Locust.

Importante

No modo Padrão, a solução controla a carga e substitui o que seu script declara. Seu script de teste (JMeter, k6 ou Locust) pode definir simultaneidade (usuários virtuais), taxas de transação (TPS), tempos de aceleração e outros parâmetros de carregamento. Em vez disso, a solução aplica os valores que você especifica na tela Traffic Shape. Essa configuração controla a contagem de tarefas, a simultaneidade (usuários virtuais por tarefa), a duração do aumento e a duração da espera para a execução do teste.

No modo nativo, seu script controla a carga e a solução não passa nenhum parâmetro de carga para a estrutura. Para saber a diferença entre os dois modos, consulte Modos de formato de tráfego.

Duração da segurança (modo nativo)

Quando você seleciona o modo nativo, o console mostra um campo Duração de segurança ao lado do upload do script. O padrão é 4 horas e o máximo é 24 horas.

No modo nativo, a duração da segurança encerra um teste que é executado por mais tempo do que você pretendia, porque seu script decide quando a execução termina. É um guarda, não um cronograma. Se o teste ainda estiver em execução quando a duração terminar, a solução interromperá a estrutura de teste. Ele mantém os resultados da parte executada e registra a execução como concluída em vez de falhada. Defina-o acima da execução mais longa que você espera que o script precise.

Etapa 3: Forma do tráfego

Configure como o tráfego será distribuído durante o teste, incluindo suporte multirregional.

Modos de formato de tráfego

A solução oferece dois modos de formato de tráfego, Padrão e Nativo. Eles diferem em qual lado controla a carga: a solução ou o script que você carrega. Você seleciona o modo na Etapa 2: Configuração do cenário e ele determina quais dos campos abaixo se aplicam.

nota

O modo nativo é um recurso de pré-visualização na versão 4.3.0. O modo padrão é o padrão e é o comportamento que a solução sempre usou.

Padrão

O modo padrão coloca a solução no controle da carga. Você define o número de tarefas do Fargate por região, os usuários virtuais simultâneos por tarefa, um período de aceleração e uma duração de espera. A solução executa seu teste por meio da estrutura de automação Taurus, que traduz esses valores nos próprios controles de carga da estrutura subjacente. O Taurus tem precedência sobre qualquer carga declarada pelo script, portanto, um bloco de opções k6, um Locust LoadTestShape ou um grupo de threads do JMeter são reescritos ou ignorados. Os usuários virtuais de uma região são a contagem de tarefas multiplicada pela simultaneidade de cada tarefa, e a forma é a mesma, seja qual for a estrutura escolhida. É assim que todos os testes eram executados antes da versão 4.3.0, então os cenários criados anteriormente continuam se comportando exatamente como antes e não precisam de alterações.

Escolha Padrão quando a forma de carregamento estiver fora do script, definida pelo console, pela CLI ou por um agente. O Standard é o único modo que permite definir uma contagem exata de usuários virtuais e alterar a forma de aceleração e retenção sem tocar no script. Somente o Standard oferece suporte ao tipo Simple HTTP Endpoint, em que a solução gera o plano de teste para você. Usos típicos: uma verificação de capacidade de 500 a 5.000 usuários virtuais, uma regressão noturna com 1.000 usuários por dez minutos ou qualquer comparação que precise de uma rampa idêntica. Seu limite é a expressividade. Qualquer coisa que o Taurus não possa representar não está disponível aqui, incluindo vários cenários ponderados, limites por estágio e executores de taxa de chegada.

Nativo

O modo nativo coloca seu script no controle do carregamento. A solução executa o arquivo que você carregou na própria linha de comando da estrutura:jmeter -n -t,k6 run, oulocust --headless. Ele não passa por sinalizadores de carregamento, então seu script é a única autoridade sobre o tráfego que ele gera e a solução nunca o reescreve. Restam dois controles: quantas tarefas do Fargate iniciar por região e uma duração de segurança necessária de até 24 horas. A duração da segurança protege contra um script que nunca existe, não contra um cronograma. Se um teste ainda estiver em execução quando a duração terminar, a solução interrompe a estrutura, coleta os resultados da parte executada e registra a execução como concluída em vez de falhada. Cada tarefa é executada como um processo de estrutura independente, sem coordenação entre as tarefas, portanto, uma região gera uma cópia completa da carga declarada do seu script para cada tarefa. Por exemplo, um script k6 que contém 200 usuários virtuais, executado em cinco tarefas, coloca 1.000 usuários virtuais no alvo. A contagem de tarefas é, portanto, o único controle de carga que o Native oferece, e ela se move em múltiplos inteiros de tudo o que o script declara. Alterar a rampa, o tempo de espera ou a contagem de usuários virtuais em si significa editar o script.

Escolha Nativo quando quiser executar um script exatamente como ele foi escrito. Um script que já é executado localmente ou em CI é executado inalterado na solução, o que é o principal motivo para procurar o Native. O Native preserva tudo o que a estrutura pode expressar: cenários, estágios e limites do K6; LoadTestShape classes Locust e conjuntos de tarefas ponderadas; temporizadores do JMeter e grupos de threads. Escolha-o quando o formato da carga fizer parte do significado do teste, e reproduzi-lo fielmente importa mais do que dirigi-lo de fora. Usos típicos: reutilizar um script k6 de um pipeline sem reescrevê-lo, um perfil de pico e depois recuperação ou cenários ponderados que um único número de simultaneidade não pode expressar. Duas restrições decorrem da execução da estrutura conforme criada. O Native requer um script carregado, portanto, o Simple HTTP Endpoint não está disponível. Os scripts do Locust não devem ser definidosprocesses, pois a solução conta as solicitações somente quando o Locust é executado como um único processo.

Escolher um modo

Se você precisar Escolher

Uma contagem exata de usuários virtuais, definida de fora do script

Standard

Para alterar o tempo de aceleração ou espera sem editar o script

Standard

Um único URL sem nenhum script

Standard

O mesmo formato de carga, independentemente da estrutura

Standard

Para reutilizar um CI ou um script local inalterado

Nativo

Os estágios, limites ou forma do próprio roteiro foram respeitados

Nativo

cenários k6, limites ou executores de taxa de chegada

Nativo

Um Locust LoadTestShape ou conjunto de tarefas ponderadas

Nativo

Os temporizadores e grupos de threads do JMeter funcionam exatamente como foram criados

Nativo

Para escalar a carga somente em múltiplos inteiros da carga do próprio script

Nativo

Multi-Region configuração de tráfego

Selecione uma ou mais regiões da AWS para distribuir geograficamente seu teste de carga. Para cada região selecionada, configure:

Contagem de tarefas

O número de contêineres (tarefas) que serão lançados no cluster Fargate para o cenário de teste. Tarefas adicionais não serão criadas quando a conta atingir o limite “O recurso Fargate foi atingido”. A contagem de tarefas se aplica aos dois modos de formato de tráfego. No modo nativo, é o único controle de carga que o console oferece, pois cada tarefa executa uma cópia completa do seu script.

Simultaneidade

O número de usuários virtuais simultâneos gerados por tarefa. O limite recomendado é baseado nas configurações padrão de 2 vCPUs por tarefa. A simultaneidade é limitada pelos recursos de CPU e memória. Esse campo se aplica somente ao modo Padrão. No modo nativo, o console exibe um valor somente para leitura de “Definido por script” para cada região, porque seu script define sua própria contagem de usuários virtuais.

Determine o número de usuários

O número de usuários que um contêiner pode suportar para um teste pode ser determinado aumentando gradualmente o número de usuários e monitorando o desempenho na Amazon CloudWatch. Depois de observar que o desempenho da CPU e da memória está se aproximando de seus limites, você atingiu o número máximo de usuários que um contêiner pode suportar para esse teste em sua configuração padrão (2 vCPUs e 4 GB de memória).

Essa calibragem define o valor de simultaneidade, portanto, ela se aplica ao modo Padrão. Os limites de contêiner que ele estabelece também se aplicam ao modo nativo. Lá, você aumenta ou diminui a carga declarada pelo script, em vez de definir o campo Simultaneidade.

Processo de calibração

Você pode começar a determinar os limites de usuários simultâneos para seu teste usando o exemplo a seguir:

  1. Crie um teste com no máximo 200 usuários.

  2. Enquanto o teste é executado, monitore a CPU e a memória usando o CloudWatch console:

    1. No painel de navegação, em Container Insights, selecione Monitoramento de desempenho.

    2. Na página Monitoramento de desempenho, no menu suspenso à esquerda, selecione Clusters ECS.

    3. No menu suspenso à direita, selecione seu cluster Amazon Elastic Container Service (Amazon ECS).

  3. Durante o monitoramento, observe a CPU e a memória. Se a CPU não ultrapassar 75% ou a memória não ultrapassar 85% (ignore os picos únicos), você poderá executar outro teste com um número maior de usuários.

Repita as etapas 1 a 3 se o teste não tiver excedido os limites de recursos. Opcionalmente, você pode aumentar os recursos do contêiner para permitir um número maior de usuários simultâneos. No entanto, isso resulta em um custo maior. Para obter detalhes, consulte o Guia do desenvolvedor.

nota

Para obter resultados precisos, execute somente um teste por vez ao determinar os limites de usuários simultâneos. Todos os testes usam o mesmo cluster, e os insights de CloudWatch contêiner agregam os dados de desempenho com base no cluster. Isso faz com que os dois testes sejam relatados ao CloudWatch Container Insights simultaneamente, o que resulta em métricas imprecisas de utilização de recursos para um único teste.

Para obter mais informações sobre como calibrar usuários por mecanismo, consulte Calibrando um teste Taurus na documentação. BlazeMeter

nota

A solução exibe as informações de capacidade disponíveis para cada região, ajudando você a planejar sua configuração de teste dentro dos limites disponíveis.

Tabela de tarefas disponíveis

A Tabela de Tarefas Disponíveis exibe a disponibilidade de recursos para cada região selecionada:

  • Região — O nome da região da AWS.

  • vCPUs por tarefa - O número de CPUs virtuais alocadas para cada tarefa (padrão: 2).

  • Limite de tarefas DLT - O número máximo de tarefas que podem ser criadas com base na cota de vCPU sob demanda Fargate da sua conta. As novas contas geralmente têm uma cota menor; verifique seu limite atual no console de cotas de serviço e solicite um aumento, se necessário.

  • Tarefas DLT disponíveis - O número atual de tarefas disponíveis na região, calculado como seu limite de tarefas DLT menos as vCPUs já em uso ao executar tarefas do Fargate.

Para aumentar o número de tarefas disponíveis ou vCPUs por tarefa, consulte o Guia do desenvolvedor.

Duração do teste

Defina por quanto tempo seu teste de carga será executado. O console mostra essa seção somente no modo Padrão. No modo nativo, seu script determina por quanto tempo o teste é executado, limitado pela duração de segurança definida na Etapa 2: Configuração do cenário.

Aumente a velocidade

O tempo para atingir a concorrência desejada. A carga aumenta gradualmente de 0 para o nível de simultaneidade configurado durante esse período.

Aguarde

A duração para manter a carga alvo. O teste continua em total simultaneidade durante esse período.

Etapa 4: revisar e criar

Analise todas as suas configurações antes de criar o cenário de teste. Verificar:

  • Configurações gerais (nome, descrição, cronograma).

  • Configuração do cenário (tipo de teste, endpoint ou script).

  • Forma do tráfego (modo, tarefas, usuários, duração, regiões).

Depois de analisar, escolha Criar para salvar seu cenário de teste.

Gerenciando cenários de teste

Depois de criar um cenário de teste, você pode:

  • Editar - Modifique a configuração do teste. Entre os casos de uso comuns estão:

    • Refinando a forma do tráfego para atingir a taxa de transação desejada.

  • Copiar - Duplique um cenário de teste existente para criar variações. Entre os casos de uso comuns estão:

    • Atualizar endpoints ou adicionar headers/body parâmetros.

    • Adicionar ou modificar scripts de teste.

  • Excluir - remova os cenários de teste que você não precisa mais.