O que é Teste de Desempenho?

Antes de iniciarmos , gostaria de destacar algumas reflexões importantes em relação a alguns dados:

De acordo com um estudo realizado pela Google em 2017 com milhares de web sites, o tempo médio para carregamento total das páginas em dispositivos móveis foi de 22 segundos. No entanto, a pesquisa também indica que 53% das pessoas deixarão uma página para celular se a mesma levar mais de 3 segundos para carregar.

Fonte: https://think.storage.googleapis.com/docs/mobile-page-speed-new-industry-benchmarks.pdf

 

Desta forma podemos entender como o desempenho de um site impacta diretamente no sucesso do mesmo, fazendo com que empresas comecem a ter um olhar mais dedicado na qualidade de seus produtos não somente em relação à funcionalidade mas também em relação a experiência do usuário e performance. Por tanto, uma área que tem crescido bastante nos últimos anos são os testes de desempenho, sendo um diferencial de habilidade desejada para profissionais de QA.

Para isso, vamos entender hoje o que é teste de desempenho, quais suas categorias e o que analisar

 

TESTE DE DESEMPENHO

Quando se fala em testes de desempenho de software (ou testes de performance) na verdade estamos falando de um conjunto de sub categorias de tipos de testes com o intuito de se avaliar o desempenho da aplicação. Podemos dividir as categorias em duas grandes áreas:

 

TESTES SERVER-SIDE

O intuito destes tipos de testes é analisar o desempenho dos servidores. O foco aqui é avaliar o comportamento do servidor em relação ao volume de usuários.

 

Nesta categoria temos os seguintes tipos de teste:

  • Teste de Carga

O Teste de Carga geralmente é utilizado para identificarmos o comportamento do sistema sob uma carga específica habitual. As principais métricas a serem analisadas e comparadas são:  a quantidade de operações por hora ou o número de transações que o sistema apresenta, comparadas aos valores esperados. Este tipo de teste é ideal para verificar se a aplicação, servidor web ou banco de dados em teste, mantém um bom comportamento durante sua carga habitual de trabalho.

Paralelo a isso, também é utilizado para identificar o limite da aplicação, qual o máximo de processamento que pode suportar trabalhando com cargas acima do normal para quantidade de operações\transações processadas com grande volume. Desta forma obtêm-se valores e métricas essenciais para outros tipos de teste, como teste de stress por exemplo.


Fonte: https://abstracta.us/blog/performance-testing/types-performance-tests/

 É essencial que haja uma definição de métricas que serão coletadas e analisadas no projeto antes dos testes começarem. É preciso conhecer essas métricas em condições normais para efeitos de comparação e análise das métricas quando o processamento validado for acima do normal.

 

  • Teste de Stress

O Teste de Stress é utilizado para verificar o comportamento do ambiente e aplicação durante uma carga extrema acima dos limites suportados. É necessário avaliar se mesmo trabalhando acima do limite, o sistema apresenta valores e métricas satisfatórias dentro do SLA (service level agreement) do projeto.


Fonte: https://abstracta.us/blog/performance-testing/types-performance-tests/

Importante destacar que o Teste de Stress não tem como objetivo encontrar o limite da aplicação, tal limite é obtido através de outros tipos de teste como o Teste de Carga. O principal objetivo deste tipo de teste é avaliar como o sistema comporta após ultrapassar este limite já estabelecido, para isso, é necessário ter conhecimento sobre o limite da aplicação previamente.

 

  • Teste de Pico

O Teste de Pico é utilizado para avaliar como o sistema lida com mudanças bruscas na carga de usuários. Diferente do Teste de Stress, onde o objetivo é avaliar como o sistema comporta após ultrapassar o limite, o Teste de Pico visa avaliar como o sistema comporta no retorno ao valor normal de carga após ultrapassar o limite da aplicação em um curto intervalo de tempo. 


Fonte: https://abstracta.us/blog/performance-testing/types-performance-tests/

 

  • Teste de Longa Duração

O teste de longa duração (Soak testing) ou teste de resistência, consiste em determinar se o sistema consegue suportar uma carga contínua durante longos períodos de tempo. É avaliado se não ocorre degradação na performance durante uma longa utilização contínua. Geralmente neste tipo de teste costuma-se encontrar problemas relacionados a vazamento de memória. 


https://abstracta.us/blog/performance-testing/types-performance-tests/

 

  • Teste de Escalabilidade

O Teste de Escalabilidade tem o objetivo de determinar a eficácia da aplicação diante de alterações na infraestrutura para suportar um aumento na carga do usuário. Isso auxilia no planejamento da adição de capacidade ao sistema levando em consideração o custo-benefício de tais medidas.

 

  • Teste de Volume

O Teste de Volume avalia a quantidade de dados que o sistema pode gerenciar. Diferente do Teste de Carga, o objetivo aqui é verificar a capacidade da aplicação em lidar com um grande volume de dados, seja em conexões de rede ou em acessos a sistemas gerenciadores de banco de dados, além de testes de processamento massivo de informações em memória.

 

TESTES CLIENT-SIDE

Mesmo que uma aplicação suporte milhares de usuários simultâneos e apresente excelentes tempos de resposta, isto não quer dizer que a aplicação será rápida e eficiente para o usuário final. Afinal todos os testes acima descritos lidam apenas com o foco no servidor da aplicação, diversas requisições de vários usuários chegando ao servidor e como o mesmo se comporta. Neste tipo de teste não é avaliado o que ocorre após a chegada de informação do servidor ao navegador do usuário.

 

Para esta necessidade existem os Testes de Desempenho Client-Side onde o objetivo é avaliar o desempenho da aplicação do ponto de vista do usuário. Após o retorno do servidor, o que ocorre no navegador do usuário? Quais são os tempos de renderização de conteúdos na tela? Quanto tempo demora para a página estar totalmente interativa para o usuário?

 

Além destas métricas, é avaliado se boas práticas de desenvolvimento que auxiliam a performance da aplicação estão sendo utilizadas como minificação de javascript, dimensionamento correto de imagens, etc.

Tais testes são divididos nas principais categorias abaixo:

 

  • Teste Desktop

Categoria de Testes onde é avaliado a performance da aplicação sendo utilizada através de um desktop. São medidos os tempos de renderização, codificação de arquivos, execução e validação de javascript, estilos, etc. Além disso são medidos o uso de recursos do desktop do usuário como CPU, Memória entre outros.

 

  • Teste Mobile

Categoria de Testes onde é avaliado a performance da aplicação sendo utilizada através de um dispositivo móvel. São medidos os tempos de renderização, codificação de arquivos, execução e validação de javascript, estilos, etc. Além disso são medidos o uso de recursos do dispositivo do usuário como CPU, Memória entre outros.

 

  • Teste Recursos Limitados

Nesta categoria de testes são executados tanto testes em Desktop ou Mobile utilizando recursos limitados de internet e hardware, como rede 2G em dispositivos móveis, aparelhos antigos, etc

 

 CONCLUSÃO

Podemos observar que os testes server-side e client-side são complementares, cada qual com o foco de análise em um ponto diferente do processo. Apesar disso, ainda não temos a devida atenção para todo o espectro do teste de desempenho. Existe ainda no mercado a incorreta relação de que avaliar o desempenho de uma aplicação se limita a realização de testes de carga ou stress. 

A preocupação com a qualidade do desempenho de uma aplicação deve existir desde o início da criação do mesmo, com criação de Service Level Agreement (SLA), Service Level Objective (SLO), Service Level Indicator (SLI) para que se torne uma prática cada vez mais preventiva e deixe de ser uma ação adotada somente após a ocorrência de incêndios.

 

Recomendações

  • Livro “The Art of Application Performance Testing”. Ian Molyneaux:

https://www.oreilly.com/library/view/the-art-of/9781491900536/

 

  • Certificação CTFl-PT (Performance Testing). Materiais de Estudo:

https://www.bstqb.org.br/sobre-ctfl-pt

 

  • Site: “A Test Developer’s Blog”. Shantonu Sarker:

https://shantonusarker.blogspot.com/p/performance.html

 

  • Guia sobre métricas e teoria a respeito de desempenho em Client-Side:

https://developers.google.com/web/fundamentals/performance/why-performance-matters

 

Autor: Aldrich Bezerra

Analista de Automação de Testes da Base2

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *