Definir linhas de base para testes de carga

Concluído

Agora que você definiu os testes de carga e os valores limite, use-os para criar linhas de base.

Uma linha de base é um conjunto de critérios de métricas usado para avaliar se um teste falhou ou foi bem-sucedido. Por exemplo, seus critérios podem ser:

  • Média de solicitações por segundo.
  • Taxa de erros.
  • Tempo máximo de resposta.

A fim de configurar linhas de base para testes de carga, o seguinte é necessário:

  1. Defina as linhas de base e os critérios de teste para fluxos de usuário individuais e a solução geral.

  2. Ajuste os limites de execuções regulares para verificar se o aplicativo continua a fornecer o desempenho esperado e não produz nenhum erro.

  3. Use uma linha de base distinta para testes de caos que toleram os picos esperados nas taxas de erro e um desempenho temporariamente reduzido.

Esta atividade é contínua e precisa ser feita regularmente. Por exemplo, é necessário revisar as linhas de base depois de introduzir recursos ou alterar SKUs de serviço.

Usar o Teste de Carga do Azure para avaliar os limites

Durante a fase de desenvolvimento, é comum que o desempenho dos componentes e os requisitos de recursos não sejam claramente conhecidos. Os testes de carga podem ajudar você a identificar o desempenho esperado da solução geral e os componentes dela, incluindo o comportamento de expansão. Eles também podem ajudar na identificação dos limites esperados para a criação da linha de base.

Faça as seguintes perguntas e realize regularmente novas avaliações:

  • Quanto tempo leva para concluir uma operação, um fluxo de usuário ou uma chamada de API individual?
  • Quantas solicitações, operações e usuários simultâneos um componente pode atender por segundo?
  • Quantos recursos são consumidos?
  • Como 10, 50 e 100 usuários simultâneos afetam a infraestrutura subjacente e o serviço de back-end?
  • Quando os componentes devem realizar a redução ou a expansão de capacidade?

As respostas levam a testes e limites. As solicitações por segundo, o tempo de resposta e a porcentagem de erro são exemplos aplicáveis para valores de limite.

Depois de anotar os detalhes, use os valores para analisar e avaliar o desempenho da solução geral e os respectivos componentes de maneira consistente. Use também a linha de base para identificar o efeito das alterações e dos desvios do desempenho esperado.

Ao executar os testes, é possível ter requisitos diferentes para casos de uso especiais, como um componente defeituoso ou um pico de carga. Para esses casos, taxas de erro mais altas ou solicitações menores por segundo podem ser esperadas e aceitáveis. É possível ter uma linha de base distinta que contenha os limites ajustados para acomodar essas situações. Por exemplo:

  • Cenários de alta carga em que uma operação de expansão é esperada e necessária. Pode haver degradação temporária do desempenho até que a operação seja concluída.
  • Experimentos de caos, como parte de um pipeline de validação contínua. Uma taxa de erro mais alta pode ser esperada até que as medidas de resiliência comecem a recuperação automática do aplicativo ou o failover para outra região.

Use o Teste de Carga do Azure para avaliar o desempenho do sistema em relação aos limites definidos. O serviço conta com um recurso de critérios de teste integrado. Isso significa que é possível especificar os critérios pelos quais um teste de carga precisa passar.

Você pode usar critérios de teste para implementar linhas de base diferentes, conforme mostrado na captura de tela de exemplo a seguir.

Captura de tela do portal do Azure de uma tabela que mostra critérios de teste de exemplo.

É possível especificar esses critérios de teste em JSON e usar a API para adicioná-los ao teste de carga. Veja um exemplo:

[
  {
    "passFailMetrics": {
      "<guid-1>": {
        "clientmetric": "requests_per_sec",
        "aggregate": "avg",
        "condition": "<",
        "value": 1200.0,
        "actualValue": 0.0,
        "result": null,
        "action": "continue"
      },
      "<guid-2>": {
        "clientmetric": "response_time_ms",
        "aggregate": "avg",
        "condition": ">",
        "value": 75.0,
        "actualValue": 0.0,
        "action": "continue"
      },
      "<guid-3>": {
        "clientmetric": "error",
        "aggregate": "percentage",
        "condition": ">",
        "value": 0.0,
        "actualValue": 0.0,
        "action": "continue"
      }
    }
  }
]

Outro aspecto importante da validação contínua é a injeção de testes que simulam problemas reais. Na próxima unidade, você irá aprender a adicionar experimentos de caos ao processo de validação.

Verificação de conhecimento

1.

Quantas linhas de base são necessárias?

2.

Uma linha de base define o desempenho que a implantação pode fornecer?

3.

Quando as linhas de base precisam ser avaliadas e atualizadas?