Definir testes de carga com base nos principais fluxos de usuários

Concluído

O teste de carga é uma parte importante da validação contínua. Para começar, é necessário identificar os fluxos do aplicativo. Nesta unidade, você aprende sobre os fluxos de usuário e sistema, por que eles são importantes e os critérios de design para os testes.

O que são fluxos de aplicativo?

Um fluxo é composto de interações do aplicativo necessárias para concluir uma tarefa.

  • Fluxo de usuário

    Esses fluxos indicam como os usuários interagem com o aplicativo. No cenário da Contoso Shoes, o processo de check-out para comprar itens é um exemplo de fluxo de usuário. Ele conta com os seguintes componentes que participam do gerenciamento de estoque:

    • Aplicativo Web de front-end
    • Lógica de check-out no Azure Functions
    • Banco de dados de back-end no Azure Cosmos DB

    De uma perspectiva de missão crítica, esses componentes precisam ser altamente disponíveis e resilientes a falhas. Por exemplo, a página da Web de front-end precisa ser carregada rapidamente porque a organização espera um grande número de usuários simultâneos.

  • Fluxo do sistema

    Esses fluxos normalmente não são voltados ao usuário, mas uma interrupção ou degradação nos componentes do fluxo do sistema pode afetar a experiência do usuário. Por exemplo, um fluxo de sistema pode ser uma atividade assíncrona que coleta pedidos de um banco de dados e gera etiquetas de remessa.

Observação

A maioria dos aplicativos tem diversos fluxos. Cada fluxo pode interagir com diversos componentes da arquitetura. Além disso, um componente pode aparecer em mais de um fluxo. É importante entender quais fluxos são afetados quando um componente falha.

Definir um teste de carga e os respectivos valores limite

Um teste de carga simula o tráfego real para testar o desempenho do aplicativo. No entanto, o objetivo não é gerar uma grande carga que desestabilize o sistema. Isso pode ser feito por meio de testes de estresse.

Um teste de carga pode ajudar a identificar o desempenho, os limites de desempenho, a utilização de recursos e o comportamento de dimensionamento ideal dos componentes de um fluxo de usuário. Seus testes de carga devem refletir cada fluxo de usuário e fluxo do sistema relevante. Um bom design requer conhecimento do aplicativo. Comece fazendo perguntas como as seguintes:

  • Quais chamadas de API precisam ser feitas?
  • Qual é a sequência de chamadas de API?
  • Quais dados de teste devem ser usados com as chamadas de API?

Com base nas respostas:

  1. Identifique os principais cenários e as dependências, e defina metas para o uso esperado, a disponibilidade, o desempenho e a escalabilidade.

  2. Defina um conjunto de valores limite mensuráveis para quantificar o desempenho esperado dos principais cenários. Por exemplo, para um componente de aplicativo, é possível considerar valores limite para o número esperado de credenciais de usuário, solicitações por segundo de uma API e operações por segundo de um processo em segundo plano.

  3. Use os valores limite para definir um teste de carga que gere um tráfego realista a fim de testar o desempenho do aplicativo e validar as operações de dimensionamento esperadas e as atividades relacionadas. Use esses valores limite a fim de desenvolver um modelo de integridade para o aplicativo que abranja tanto o teste quanto a produção.

    No exemplo do fluxo do processo de check-out, é possível definir um limite da duração média do carregamento da página em cada etapa para menos de 500 milissegundos e dar suporte a até 100 usuários simultâneos.

Agora que todos os valores de limite estão definidos, você pode implementar o teste de carga. Este módulo usa o Teste de Carga do Azure.

Embora seja possível configurar e implantar o Teste de Carga do Azure por meio do portal do Azure, uma abordagem programática é altamente recomendada. Use APIs para implantar, configurar e executar os testes de maneira automatizada. Essa abordagem é discutida na próxima unidade.

Verificação de conhecimento

1.

Todos os fluxos de usuário e do sistema são igualmente importantes?

2.

A interrupção de um componente sempre resulta em degradação do serviço?

3.

Um teste de carga pode ajudar a avaliar o desempenho esperado de um fluxo de usuário?