Testes de performance e os tipos mais utilizados

Matheus K. Ribeiro
Livelo

--

Como funcionam os Testes de Performance?

Existem diversos tipos de teste de performance e formas ideais de serem aplicados. O principal objetivo é entender o desempenho da aplicação, microsserviço ou software durante a realização de uma tarefa.

Para esse entendimento são consideradas diversas métricas como tempo de resposta, requisições processadas por segundo, requisições ao banco de dados, entre outras. Essas métricas são coletadas por simulações criadas com base em cenários projetados ou com dados coletados dos cenários do ambiente de produção.

Tais simulações são realizadas em um ambiente de testes controlado e monitorado, a fim de obter a maior quantidade de dados sobre o comportamento da aplicação durante o cenário do teste.

1. Teste de Carga

Como o nome já indica, o teste de performance do tipo Carga analisa o comportamento do serviço quando submetido a diferentes cargas de usuários e transações. Esse tipo de teste consegue avaliar, por exemplo, como a vazão de um microsserviço se comporta conforme o aumento de usuários simultâneos realizando um determinado fluxo e se tal aumento gera impactos na infraestrutura, lentidão ou indisponibilidade.

Idealmente, esse teste é realizado baseado em dados obtidos em cenários de produção, como o maior pico de consumo nos últimos três meses, por exemplo. Dessa forma é possível comparar se alterações realizadas foram efetivas e que não causarão problemas antes de serem aplicadas.

Apesar de ser o cenário ideal, nem sempre é possível usar dados de produção, como testes realizados para novos microsserviços, por exemplo. Nesses casos é utilizada uma rampa padrão, usada como referência no teste inicial e que ajuda a determinar possíveis mudanças nos usuários simultâneos para as baterias seguintes.

2. Teste de Capacidade

Muitas vezes o teste de Capacidade pode ser confundido com o teste de Carga, já que ambos trabalham com base em cargas de usuários simultâneos. Apesar da semelhança entre eles, o objetivo de um teste de capacidade é identificar os limites daquela aplicação e/ou serviço — o que não é necessariamente atingido com um teste de carga.

Sabendo-se o limite do serviço, é possível planejar otimizações na alocação de recursos dos serviços, assim como planejar mudanças para períodos específicos com maior ou menor consumo — o que chamamos de Capacity Planning.

3. Teste de Stress

Toda aplicação ou microsserviço tem um limite especificado para o seu bom funcionamento. O teste de estresse visa submeter o serviço testado a uma carga igual ou superior a esse limite e observar o seu comportamento, utilizando rampas com diversos picos e formatos diferentes dos outros testes. Dessa forma é testado como o serviço se comporta em situações extremas e — como diria o nome — estressantes.

Como escolher qual teste de performance preciso fazer?

É notável que em diversos momentos a linha entre os três tipos de testes é tênue, porém é possível definir qual o melhor tipo de teste fazendo a avaliação do pedido de realização do teste e alinhamento de objetivos com as squads envolvidas.

Para facilitar a compreensão, também é possível usar a tabela abaixo que, de forma simplificada, compara os três tipos de testes.

Em um cenário ideal são realizados diversos testes de performance, contemplando todos os tipos de execuções. Assim, consegue-se abranger o ciclo completo da aplicação/serviço, tentando prever e mitigar todos os pontos de contenção da mesma, otimizando a utilização de recursos disponíveis e melhorando a experiência final para o consumidor.

Outros tipos de Teste de Performance

1. Teste de Front-End

O teste de front-end é voltado para a performance percebida pelo usuário final, analisando como a experiência dele está sendo afetada.

Esse teste se encaixa como uma subcategoria dos testes de carga, sendo ideal para observar como o serviço — site ou app, por exemplo — se comporta para o usuário, se são identificados erros de carregamento, lentidão nas páginas, etc.

Além das ferramentas de coletas de dados utilizadas normalmente nos testes de carga, como Grafana, Dynatrace e LogDNA, para os testes de front-end também utilizamos o Lighthouse — uma ferramenta open source que auxilia a medir a qualidade de web pages — para coletar dados e agregar mais valor aos resultados obtidos.

2. Teste de Resiliência

Assim como o teste de front-end, os testes de resiliência podem ser considerados uma subcategoria dos testes de carga. Nesse cenário, uma carga constante — não necessariamente igual em um pico, mas maior que a média — é usada durante um longo período de tempo na aplicação e/ou microsserviço.

Nesse cenário são observadas as monitorias e métricas para encontrar possíveis gargalos em períodos específicos de volume elevado de acessos, como semanas promocionais.

Com esse tipo de teste podem ser encontradas limitações como, por exemplo, esgotamento de recursos de infraestrutura e vazamento de memória devido ao longo período de utilização.

3. Teste de Regressão

Os testes de regressão, no cenário de Performance da Livelo, são testes periódicos acionados automaticamente que visam monitorar a saúde do fluxo ou microsserviço ao longo do tempo.

Esses testes têm uma duração menor que os testes de carga comum — que costumam durar 1 hora — com foco nos principais fluxos, independente das squads terem solicitado.

Além da duração, essa modalidade de teste também se difere na carga aplicada, uma vez que sua carga tende a ser mais baixa.

O objetivo desse tipo de teste é ter um levantamento proativo sobre o comportamento dos serviços, conseguindo mostrar em tempo real como as mudanças feitas naquele serviço podem impactá-lo.

Com esses testes, caso seja encontrado algum comportamento anômalo ou algum cenário de melhoria, também é possível criar uma recomendação proativa de algum outro teste de performance que consiga gerar informações aprofundadas sobre os pontos observados. Assim, não há a necessidade de esperar que a squad responsável pelo serviço note algo diferente e solicite um teste.

--

--