Teste de Performance e a sua importância
Com o Teste de Performance posso avaliar a capacidade de resposta, robustez, disponibilidade, confiabilidade e escalabilidade de uma aplicação, conforme a quantidade de conexões simultâneas, avaliando seu desempenho em alta carga de trabalho e considerando seu comportamento em circunstâncias normais.
É um tipo de teste não funcional, que em particular, o objetivo de tais experiências pode ser o de garantir que o software não apresente problemas ou indisponibilidade em condições de insuficiência dos recursos computacionais (como memória, processamento ou espaço em disco), quando trabalhando em alta concorrência ou sofrendo algum ataque de negação de serviço.
O objetivo do teste de performance não é encontrar erros, mas eliminar gargalos de desempenho. O foco dele é verificar o comportamento baseado em três fatores:
- Velocidade - determina se o aplicativo responde rapidamente
- Escalabilidade - determina a carga máxima do usuário que o aplicativo pode suportar.
- Estabilidade - determina se o aplicativo é estável sob cargas variáveis
Mas por que se deve fazer esse tipo de teste? Logo abaixo seguem alguns benefícios de realizar os testes de performance:
- Melhoria da qualidade do ponto de vista do usuário;
- Redução do custo de mudanças;
- Redução dos custos de sistema;
- Aumento dos lucros;
- Identificação antecipada dos defeitos mais críticos da aplicação como arquitetura do sistema;
- Satisfação do usuário final;
- Clareza na utilização dos recursos;
- Uma pesquisa recente realizada pela Akamai, juntamente com a Forrester Consulting, concluiu que 40% dos consumidores não esperam mais do que 3 segundos pelo carregamento de uma página em um site. Além disso, 51% apontam que a principal causa para abandonarem um carrinho de compras é a lentidão do sistema do site. Um atraso de 2 segundos no tempo de carregamento durante uma transação, resulta em taxas de abandono de até 87%.
Tipos de Teste de Perfomance
Existem alguns tipos de Teste de Performance, onde cada um tem seu objetivo e suas particularidades, hoje em dia, esses são os mais conhecidos:
- Teste de Carga (Load Testing): É geralmente realizado para identificar o comportamento do sistema sob uma carga específica esperada. O que pode ser uma quantidade esperada de usuários simultâneos, uma quantidade de operações por hora ou um determinado número de transações no sistema em teste.
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. - Teste de Estresse (Stress Testing): É realizado para verificar o comportamento do ambiente e software durante uma carga extrema. Também para determinar se o sistema em teste irá realizar suficientes operações acima do máximo esperado.
- Teste de Resistência (Endurance Testing): Também conhecido como Soak Testing ou teste de longa duração, ele consiste em determinar se o sistema em teste pode suportar uma carga contínua durante longos períodos de tempo. Determina se o software em teste irá se comportar adequadamente na utilização de memória durante um longo período de utilização, por exemplo. Outro ponto importante deste tipo de teste é verificar se não ocorre degradação na performance após 4 ou 8 horas de utilização contínua. Visando garantir que atenda os períodos normais de produção em que o sistema será utilizado.
- Teste de Pico (Spike Testing): Testa a reação do software a grandes picos repentinos na carga gerada pelos usuários.
- Teste de Volume (Volume Testing): Em Testes de volume, grande parte dos dados é preenchida em um banco de dados e o comportamento geral do sistema de software é monitorado. O objetivo é verificar o desempenho do aplicativo de software em vários volumes de banco de dados.
Teste de carga x teste de estresse
Pesquisando por este assunto, observei que muita gente ainda se confunde quando se fala de Teste de Carga e Teste de Estresse, por isso trouxe uma pequena comparação só para deixar isso um pouco mais claro.
O Teste de carga analisa as condições normais do seu aplicativo ou site, respondendo a perguntas como:
- Com que rapidez ele é carregado quando um usuário visita seu site?
- Com que rapidez carregará quando 15 pessoas estiverem no seu site de uma só vez?
O teste de carga é usado para garantir que o software funcione conforme o esperado em circunstâncias normais.
- Já o Teste de estresse desafia os limites de seu site para ver quanto de tráfego é necessário para diminuir o desempenho ou o interromper completamente.
- Ao simular 10.000 usuários, por exemplo, um site provavelmente terá um desempenho diferente sob essa pressão do que no uso diário. Embora o teste de estresse abranja ambientes de testes improváveis é importante analisar riscos e pontos de ruptura.
Problemas comuns de teste de performance
Ao realizar o teste de performance, são notados alguns problemas comuns como por exemplo:
- Longo tempo de carregamento
- Pouco tempo de resposta
- Escalabilidade ruim
- Gargalo
- Alguns gargalos de desempenho comuns são:
1- Utilização da CPU
2- Utilização de memória
3- Utilização da rede
4- Limitações do Sistema Operacional
5- Uso de disco
Exemplos de Casos de Teste
Também é interessante notar como os casos de testes para esse tipo de teste são escritos, seguem alguns exemplos:
- Verificar se o tempo de resposta não é superior a 4 segundos quando 1000 usuários acessam o site simultaneamente
- Verificar se o tempo de resposta do aplicativo sob carga está dentro de um intervalo aceitável quando a conectividade da rede estiver lenta
- Verificar o número máximo de usuários com os quais o aplicativo pode lidar antes de travar
- Verificar o tempo de execução do banco de dados quando 500 registros forem lidos / gravados simultaneamente
- Verificar o uso da CPU e da memória do aplicativo e do servidor de banco de dados sob condições de pico de carregamento
- Verificar o tempo de resposta da aplicação em condições de carga baixa, normal, moderada e pesada
Ferramentas de Teste de Performance
Existem diversas ferramentas pagas e gratuitas para realizar testes de performance, através de uma pesquisa realizada esse ano para exibir as 15 melhores ferramentas, citarei algumas das mais conhecidas:
- WebLOAD
- LoadNinja
- SmartMeter.io
- LoadView
- LoadUI NG Pro
- Apache JMeter
- LoadRunner
- Appvance
- NeoLoad
- LoadComplete
3 Dicas Estratégicas
Não menos importante, gostaria de deixar um vídeo desse excelente profissional que acompanho diariamente sobre diversos temas da área de Testes de Software, onde o mesmo cita 3 dicas estratégicas para o planejamento dos testes de performance:
Em resumo, as três dicas estratégicas são as seguintes:
- Analisar a utilização da aplicação pelos seus clientes
- Identificar os fluxos que os clientes utilizam e
- Saber o que você quer descobrir.
Concluímos então que o uso dos testes de performance é algo que pode ajudar tanto na análise de como seu sistema se comporta atualmente e principalmente como vai se comportar diante dos usuários.
Sabemos que hoje em dia, caso uma página ou o próprio sistema demore um determinado tempo para carregar, o número de usuários que não irão usar mais esse site vai subir drasticamente, resultando diretamente no lucro da empresa.
Fontes utilizadas para pesquisa:
https://vooozer.com/blog/seo/teste-performance-de-site/)
http://tryqa.com/what-is-performance-testing-in-software/
https://www.youtube.com/watch?v=yJLtJONIG10
http://www.matera.com/blog/post/introducao-a-testes-de-performance
https://www.guru99.com/performance-testing.html
https://www.softwaretestinghelp.com/performance-testing-tools-load-testing-tools/
https://www.devmedia.com.br/testes-de-desempenho-carga-e-stress/26546