Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rafaelpontezup/e827a4bd1482f5063fb4cf4b84feb4ee to your computer and use it in GitHub Desktop.
Save rafaelpontezup/e827a4bd1482f5063fb4cf4b84feb4ee to your computer and use it in GitHub Desktop.
Perguntas sobre testes de carga e estresse

Perf

1. Explique o conceito de teste de carga e estresse?

Teste carga signigica verificar como uma aplicação ou sistema se comporta sob uma determinada carga de trabalho (workload) esperada, que pode ser uma carga pequena, moderada ou grande. Além disso, essa carga é aplicada durante algum intervalo de tempo, como minutos ou horas, para validar a estabilidade do sistema e detectar possíveis problemas no uso de recursos, como memória, CPU, disco ou conexões com um banco de dados por exemplo. É importante entender que um teste de carga não ultrapassa a capacidade esperada ou projetada para uma aplicação ou sistema.

Enquanto teste de estresse está relacionado a verificar como uma aplicação ou sistema se comporta quando aplicamos uma carga de trabalho (workload) muito alta e intensa, geralmente uma carga superior a esperada ou especificada nos requisitos. A ideia aqui é submeter a aplicação além da sua capacidade projetada a fim de detectar problemas ou gargalos no uso de recursos ou componentes internos. O objetivo é descobrir como o sistema se comporta sob pressão extrema, como picos de tráfego, uso excessivo de recursos, falhas de hardware ou condições anormais.

2. Quais são as principais métricas utilizadas para avaliar o desempenho de uma aplicação durante um teste de carga?

Geralmente numa aplicação web, incluindo APIs REST, as principais métricas que coletamos e avaliamos são: response time (tempo de resposta), throughput (quantidade de operações por unidade de tempo) e error rate (taxa de erros). Tanto é que existe um método bastante conhecido como "RED Method", que basicamente recomenda avaliarmos estas 3 métricas para aplicações e serviços orientados a requisições (request-based services). Para aplicações não orientadas a requisições, como batch processing ou serviços de streaming por exemplo, costuma-se também coletar e avaliar outras métricas como CPU, memória ou rede.

3. Quais são as melhores práticas para realizar testes de carga em aplicações que expõem APIs REST?

Existem diversos práticas importantes na hora de realizar testes de carga, como definir os casos de uso a se validar e as expectativas da carga de trabalho (workload) esperada. Também é importante definir quais métricas são relevantes para o teste, afinal, serão elas que ajudarão a identificar problemas e gargalos de performance (aqui o "RED Method" pode ser adotado). Outro pronto é rodar os testes de carga contra uma aplicação em produção ou com ambiente parecido ao ambiente da produção, como um ambiente de homologação, dessa forma teremos números próximos da realidade do sistema. E não menos importante, aplicar os testes com uma massa de dados realista sempre que possível.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment