Teste de carga de API: Como saber se seu projeto precisa?

Quase todo aplicativo é executado no princípio cliente-servidor. O servidor e o cliente são conectados por meio de uma API, que pode ser testada. Para testar a API, você pode simular vários usuários acessando o aplicativo simultaneamente em diferentes situações.
A resposta é o teste de carga. Com o teste de carga e sabendo como criar um teste de carga de API, você estará pronto para evitar problemas inesperados com o desempenho do aplicativo.
Preparamos um artigo com tudo o que você precisa saber sobre os testes de carga da API

Como executar o teste de carga da API

Durante o teste de carga, os especialistas em QA simulam muitos usuários acessando o aplicativo simultaneamente. O número de usuários pode impactar consideravelmente o comportamento da API.
Consequentemente, os testes de carga da API funcionam enviando solicitações específicas a um endpoint para verificar como o sistema se comporta em condições normais ou de pico de carga.
O teste de carga normalmente ocorre após o primeiro ciclo de teste, seja automatizado ou manual. Nesta fase, o sistema deve ter um bom desempenho geral.
Se o seu projeto tem limitações de orçamento e tempo, sugerimos começar o teste de carga mais perto do final do desenvolvimento, pois nessa época já sabemos onde podem ser encontrados gargalos e como ajustar o desempenho do seu aplicativo.

O que você consegue com o teste de carga?

Desempenho suave e rápido  – Tempos de resposta lentos do servidor levam à perda de usuários, pois as pessoas preferem sites rápidos e o Google também.
Pesquisa conduzida pelo Google indica que 53 por cento dos usuários móveis deixarão uma página de aplicativo da web se demorar mais de três segundos para carregar.
O uso adequado de testes de carga economiza dinheiro, tempo e a reputação do seu aplicativo, garantindo que ele atenda às necessidades da sua empresa desde o início.
Estabilidade – se seu aplicativo parar de responder às solicitações do usuário ou se ocorrerem erros, os usuários sairão de seu aplicativo. Como o desempenho do aplicativo depende da API, é prática comum usar o teste de carga.

Estatísticas abrangentes para medir KPIs

Durante o teste de carga, os especialistas em QA reúnem estatísticas categorizadas sobre os tempos de resposta para descobrir se eles atendem aos requisitos do provedor de API. Por exemplo, alguns provedores exigem para seus servidores de API tempos de resposta de menos de dois segundos por motivos de desempenho.
Essas estatísticas mostram se o aplicativo atende aos KPIs predefinidos: tempos de resposta mínimo, médio e máximo, número de erros, solicitações processadas pelo servidor por segundo e assim por diante.
Com essas informações, você pode descobrir se seu aplicativo é capaz de lidar com a carga esperada em seus servidores de back-end e se é realmente viável.
estatísticas para medir kpisestatísticas para medir kpis

Teste de carga

O teste de carga envolve várias abordagens e ferramentas. Qual abordagem e conjunto de ferramentas de teste escolher depende dos requisitos do projeto. Descreveremos a abordagem mais comumente usada.

1. Planeje cenários para testes de carga

O teste de carga requer planejamento. Durante a primeira fase do planejamento do projeto, o analista de negócios coleta os requisitos não funcionais em relação aos quais as métricas de desempenho serão verificadas. Com base nesses requisitos, preparamos um script de teste e um ou mais cenários de teste.
Como resultado do planejamento, nossos especialistas decidem sobre a abordagem relevante e seus componentes, pois o teste de carga pode ser executado usando duas abordagens.

Teste de longevidade

A primeira abordagem é o teste de longevidade, que verifica se um sistema pode suportar uma carga de trabalho moderada constante por um longo tempo.
A segunda abordagem é o teste de volume, que sujeita um sistema a uma grande carga de trabalho por um tempo limitado. Essas abordagens identificam gargalos, bugs e limitações de componentes.
Como regra, realizamos testes de longevidade para aplicativos corporativos de grande porte, pois eles exigem desempenho de API estável. Por outro lado, usamos teste de volume quando dados pesados ​​são processados ​​diariamente.
O teste de volume é recomendado para aplicativos de compras, pagamento e reserva de ingressos.
Normalmente usamos Gatling ou Apache JMeter para teste de carga.
Gatling
Essa ferramenta nos ajuda a criar rapidamente diferentes cenários de teste de carga de verificação. Conforme o script é executado, Gatling cria um relatório HTML informativo mostrando o tempo de resposta de cada solicitação.

Apache JMeter
Esta ferramenta possui um modo GUI (interface gráfica do usuário) que permite que nossos especialistas façam planos de teste manualmente, selecionem modelos ou gravem o aplicativo a partir de uma sessão do navegador.
Além disso, o modo GUI fornece depuração e a capacidade de examinar os resultados do teste. Se tivermos um plano pronto, usaremos o modo não-GUI para executar um teste de carga a partir da linha de comando. Você pode salvar os resultados do teste em um arquivo HTML, CSV ou XML.
A imagem abaixo mostra
1) Número de Threads (o número de usuários que irão acessar o aplicativo);
2) Período de Ramp-Up (período durante o qual os usuários acessarão o aplicativo);
3) Contagem de Loop (o número de ciclos de ações dos usuários no Grupo de Threads).

2. Teste de carga após a fase de planejamento

Nossos especialistas em QA definem o número de solicitações a serem enviadas, o script de teste e o tempo de execução do teste. Posteriormente, cada solicitação visa a API por um período fixo enquanto a ferramenta de teste observa o desempenho.
Ao realizar o teste de carga, verificamos as métricas de desempenho em relação aos requisitos não funcionais coletados por nosso analista de negócios durante o estágio de planejamento.
Também aplicamos correlação – método utilizado para identificar qual resposta do servidor é dinâmica (capaz de retornar dados diferentes para cada solicitação, o que influencia periodicamente solicitações sucessivas) e qual é estática (não muda).

Como seria a análise?

Nesse caso, nossa equipe analisaria KPIs como tempo de resposta, taxa de transferência, latência e tempo de conexão, bem como as correlações entre esses KPIs para ver como melhorar os recursos do sistema. Assim que as melhorias fossem feitas, faríamos o teste novamente.
Se o sistema, os processos e os bancos de dados não podem atender ao aumento da demanda, usamos servidores adicionais, aumentamos sua potência ou usamos balanceadores de carga para corrigir a situação.
Também podemos recorrer a serviços adicionais que proporcionem a capacidade necessária.

3. Ferramentas de teste de carga de API

Ferramentas de teste especializadas permitem que uma equipe de desenvolvedores determine se o sistema funciona conforme o esperado e quais problemas podem ocorrer em alta carga. Uma ferramenta de teste de carga útil deve ser capaz de:

  • configurar testes de desempenho na cadeia de suprimentos de software;
  • fornecer testes de desempenho de alto nível, encurtando o ciclo de construção / teste;
  • permitindo a colaboração entre desenvolvedores e especialistas em QA.

Usamos Gatling e Apache JMeter para teste de carga, pois sabemos que eles fornecem essa funcionalidade. Vamos examiná-los em detalhes.
Gatling
Gatling é uma ferramenta de teste de desempenho e carga de código aberto. Ele usa a linguagem de programação Scala, o kit de ferramentas Akka e o software Netty como pilha de tecnologia. A seguir estão alguns motivos adicionais pelos quais usamos Gatling:

  • É executado em qualquer sistema – você pode usar vários servidores / máquinas locais, bem como servidores em nuvem para preparar e executar testes.
  • Ele permite que você incorpore testes de carga de forma semelhante ao código-fonte – Isso permite que você armazene seus testes em sistemas de controle de versão que facilitam a colaboração, mantêm um registro de todas as alterações, salvam todo o trabalho de otimização, etc.
  • Ele fornece painéis informativos – não há necessidade de plug-ins extras, pois você pode ver relatórios HTML interativos logo após a execução dos testes.
  • Possui uma arquitetura avançada – Graças à sua arquitetura, Gatling oferece execução de testes de alta qualidade.

Apache JMeter
JMeter é uma ferramenta avançada de teste de carga de código aberto com muitos recursos interessantes. Ele pode imitar uma grande carga em um servidor, fazendo muitas solicitações. O JMeter pode ser usado no lugar do Gatling e tem suas próprias vantagens:
Usabilidade – JMeter é um aplicativo de desktop Java puro e está pronto para uso com suas configurações de teste de carga padrão. Você não precisa ter nenhuma habilidade especial ou conhecimento de domínio para começar.

Capacidade de execução

Capacidade de execução em qualquer sistema operacional – Java é a linguagem mais amplamente usada no mundo, e o JMeter desenvolvido em Java pode ser executado em quase qualquer sistema operacional. Não faz diferença se é Windows, Linux ou macOS.
Relatórios eficazes – você pode visualizar os resultados do teste em gráficos, tabelas e exibição em árvore. JMeter oferece suporte a vários formatos para seus relatórios, como XML, HTML, JSON e qualquer formato de texto.
Controladores lógicos para configurar testes – os controladores lógicos são um recurso exclusivo do JMeter. Eles fornecem excelente flexibilidade para configurar testes na GUI.
Os controladores lógicos personalizam a lógica que o JMeter usa para escolher o momento certo para enviar solicitações. Os controladores lógicos podem alterar a ordem das solicitações, modificá-las e repeti-las, etc.

Сoncluindo observações

O teste de carga da API é freqüentemente justificado. Claro, existem exceções a todas as regras. Se o seu projeto ainda não atraiu um público ou se você já conhece as capacidades do seu servidor e não espera uma onda de novos usuários, não há necessidade de teste de carga. Em todos os outros casos, é altamente recomendável.
Para garantir um teste de carga eficaz, precisamos entender o crescimento previsto do usuário. Para economizar recursos, também é importante não otimizar demais o sistema – por exemplo, disponibilizando-o para milhões de usuários se o número esperado de usuários não for superior a 50.
Se você está pensando em testar a carga da API em seu projeto, entre em com a Codificar. Faremos uma análise aprofundada e forneceremos uma consultoria detalhada.