Perf
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.
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.