Cinco erros comuns ao planejar e executar testes de performance

Os testes de performance tendem a ser uma das últimas etapas da cadeia de desenvolvimento de software. Isso faz com que seja tentador pular etapas, acelerar os testes e realizá-los sem o devido cuidado, pensando no lançamento mais rápido possível.

No entanto, isso pode gerar ainda mais problemas do que se espera. Planejamento incorreto, criação de cenários irreais ou execução de testes em ambientes que não condizem com o ambiente de produção podem causar perda de tempo, dinheiro e recursos. Assim, o tão esperado lançamento pode se tornar um pesadelo.

Nesse artigo iremos explorar alguns erros comuns ao planejar e executar testes de performance que devem ser evitados.

A importância do think time

Um usuário real nunca realiza ações como login, busca, fechamento de pedido, pagamento etc., em questão de segundos. Ele necessita de tempo para ler, escrever, pensar e então realizar a ação seguinte. Para que seja possível simular esse comportamento, utilizamos think times.

Think times são utilizados para simular o comportamento de um usuário real. Ele funciona como um delay entre o fim de uma requisição e o início da próxima. A utilização desse recurso é importante para reduzir comportamentos robóticos durante um teste. Esse tipo de comportamento robotizado não simula uma navegação humana, o que pode causar distorção nos dados.

Além disso, sem think time, realizar o teste de perfomance é como bombardear a aplicação repetidas vezes. Isso pode fazer com que o servidor falhe e forneça dados incoerentes que dificilmente serão observados no dia-a-dia do sistema, mesmo nos momentos de pico. O uso do think time ajuda a aplicação a processar a solicitação feita de maneira adequada, fornecendo resultados próximos aos que podem ser observados num cenário de produção.

Cenários de testes irreais

O uso do think time não é o único recurso capaz de deixar o teste de performance mais próximo do comportamento de um usuário. Aliás, esse recurso de nada serve se não existem cenários de testes mais realistas.

Cenários de teste são descrições das ações que o usuário pode realizar ao utilizar o sistema. Em um e-commerce, por exemplo, um cenário de teste chamado “Navegação e compra” irá descrever a jornada do usuário pelo ambiente. Nesse teste, é feito sua navegação pelas páginas e fluxo de compra do produto, até a finalização do pedido.

Para que o cenário faça sentido, é necessário entender como o usuário se comporta na vida real. Imagine a situação onde um usuário real teve a seguinte navegação dentro de um site:

O cenário descrito acima ilustra os passos executados pelo usuário dentro do ambiente. Esta foi a sua navegação real e natural, e é exatamente isso que se leva em consideração na hora de montar cenários para testes de performance.

O cenário deve estar condizente com um comportamento que o usuário real teria.

Por exemplo, se no cenário de testes mapeado o usuário puder adicionar o produto ao carrinho sem antes ter acessado o produto, isso não irá reproduzir um comportamento real.

É importante ressaltar que no mapeamento de cenários, além de buscar uma proximidade com o ser humano, também é fundamental considerar as regras de negócio. Se dentro do ambiente o usuário pode realizar um pedido sem estar autenticado (login ou cadastro), isso deve ser mapeado para o teste de performance.

Existem recursos de análises de dados que ajudam no mapeamento desses fluxos. Ferramentas como o Google Analytics indicam quais as páginas mais acessadas pelos usuários que devem fazer parte dos cenários de teste.

Atenção ao ambiente de testes

Durante um teste de performance, a aplicação e a maioria de seus componentes são submetidos a uma carga, tendo sua performance colocada à prova. Com isso, é importante que o ambiente onde o teste é realizado seja o mais próximo possível do ambiente produtivo.

A execução de testes em ambiente de desenvolvimento e/ou homologação pode ser um risco se realizados sem planejamento. Antes da execução do teste nesses ambientes, algumas perguntas devem ser respondidas:

  • A infraestrutura desse ambiente condiz com o que será a infraestrutura do ambiente produtivo?
  • A aplicação e suas particularidades estão de acordo com o que será a versão final?
  • Os serviços e dependências que minha aplicação final terá estão englobados nesse ambiente e serão impactados com o teste? Se sim, os responsáveis por esses serviços estão cientes da execução do teste para que se preparem e que não haja surpresas?

Se a resposta para as perguntas acima for “sim”, ótimo, seu ambiente parece adequado para a execução do teste de performance. Caso contrário, ações devem ser tomadas para que o ambiente seja equalizado ou para decidir se a execução do teste será alterada para outro ambiente mais fiel ao produtivo.

Lembre-se: executar um teste de performance em um ambiente diferente do final pode fazer com que os dados adquiridos durante a execução não sejam confiáveis. Isso pode gerar resultados incapazes de serem reproduzidos em produção – assim anulando o que foi capturado durante o teste.

Falta de monitoramento (APM)

Quanto maior o seu negócio, maiores as chances de que sua aplicação seja mais complexa. Com isso, gerenciar e analisar cada uma das tecnologias contidas dentro do seu sistema pode se tornar uma tarefa difícil e é para ajudar nesse problema que surgem as ferramentas de APM.

APM (Application Performance Management) são ferramentas que têm o propósito de monitorar o desempenho das aplicações, fornecendo métricas mais voltadas para a infraestrutura do sistema. São essas ferramentas que irão mapear o estado atual da sua aplicação e indicar quais são os gargalos e suas respectivas origens, facilitando a análise e permitindo que o time tenha mais tempo para trabalhar na solução de um problema, e não mais na busca do mesmo.

Durante testes de performance, cruzar os dados capturados na sua ferramenta de testes com os dados extraídos do APM facilitará o processo de encontrar os gargalos do sistema.

Por exemplo: ao realizar um teste de performance, foi observado um alto tempo de resposta durante a realização do login do usuário. Apesar de ser positiva a identificação desse problema, ainda é muito pouco para entender o que realmente está acontecendo.

Porém, ao utilizar uma ferramenta de APM, foi possível identificar todas as dependências do processo de login. Tais como os microsserviços que consumia, queries que realizava no banco de dados e até mesmo qual era sua linha de código. Com todas essas informações, torna-se mais fácil encontrar o responsável pelo aumento no tempo de resposta e, através disso, trabalhar nas melhorias.

Ferramentas como Dynatrace, Datadog, New Relic e AppDynamics são exemplos de ferramentas APM.

Muito mais do que tempo de resposta

Tempo de resposta é muito importante.

É a métrica que mede o tempo em que uma requisição leva para responder – do momento em que o usuário faz a solicitação até o momento em que recebe um retorno. Contudo, o mundo de performance abrange diversas outras métricas que são tão importantes quanto o tempo de resposta.

O throughput, por exemplo, é o indicador que mede a quantidade de requisições realizadas por unidade de tempo. Esse indicador nos permite observar a vazão da aplicação e como ela se comporta quando submetida a uma carga alta de usuários. 

A taxa de erros também é importante, já que indica se o teste está tendo sucesso ou não. Através desse indicador, é possível identificar gargalos e seus respectivos impactos.

Importante não esquecer de analisar outros exemplos de métricas e indicadores. Por exemplo, largura de banda, latência, percentil do tempo de resposta, consumo de CPU, consumo de memória, etc.

Leia mais: quais são as métricas de performance que você deveria acompanhar?

Vimos que os testes de performance têm uma abrangência muito grande. Por isso, é fundamental analisar cada ponto da aplicação, atentando-se para a evolução do desempenho do ambiente.

O mundo da performance é enorme e existem muitos pontos a se considerar para realizar um teste de performance eficaz. Aqui na Sofist, temos um time especializado em testes de carga e stress que pode apoiar você e o seu negócio a identificar e solucionar problemas de desempenho na sua aplicação. Já ajudamos grandes nomes do mercado varejista a encontrar gargalos e enfrentar temporadas de altos acessos, com sucesso. Saiba mais!

Leave a Reply