Visão Geral: Testes de Performance
Definição: Teste de Performance é normalmente executado para ajudar a identificar gargalos do sistema, estabelecer uma baseline para futuras análises/testes, determinar a conformidade com requisitos e metas de performance, e/ou coleta de outros dados relacionados ao desempenho para assim ajudar os stakeholders a tomar decisões relacionados com a qualidade total da aplicação que está sendo testada. Além disso, os resultados do Teste de Performance e análises podem ajudar você a estimar a configuração do hardware necessária para suportar a aplicação quando você liberar para o uso em produção.
Porquê devemos executar?
- Identificar e quantificar o risco dos serviços/aplicações;
- Definir configurações mínimas para rodar o sistema;
- Determinar tempos de respostas de uma forma que conseguimos “aferir”, são os chamados throughputs;
- Identificar os possíveis gargalos (bottlenecks) da aplicação;
- Gestão de configuração, comprar as diversas plataformas de hardware e Sistemas Operacionais.
E quais são os benefícios?
- Melhoria da qualidade da aplicação para o usuário final;
- Aumento dos lucros, por estar prevendo falhas e corrigindo-as, antes do produto entrar em produção.
Porquê é difícil de executar?
- Teste Complexo, exige expertise na área;
- Devem ser iniciados assim que os requisitos forem estabelecidos;
- Requer ferramentas de automação, e uma boa infraestrutura de hardware;
- Primordial um ambiente propício, com banda, configuração do sistema, acessos concorrentes, para que dessa forma os resultados sejam mais reais possíveis;
- Não se deve realizar estes tipos de testes em produção.
O que podemos testar?
- Carga (Load): Identifica os níveis máximos, os quais um sistema/aplicação pode realizar com sucesso em termos de carga de trabalho(workload) e número de usuários virtuais(Virtual Users).
- Stress: É realizado para submeter o software a situações extremas. Basicamente, o teste de estresse baseia-se em testar os limites do software e avaliar seu comportamento. Assim, avalia-se até quando o software pode ser exigido e quais as falhas (se existirem) decorrentes do teste.
- Capacidade: Responsáveis por medir até aonde o seu sistema/aplicação é capaz de atuar sem falhas com dada “carga normal” até que o tempo de resposta seja inaceitável.
Quais as diferenças entre Testes de Performance x Testes Funcionais?
Performance — Não testa o front, testa apenas os requisitos não funcionais Funcional — Testa o Front, bem como usabilidade e funcionalidades
Performance — Testa a escalabilidade da aplicação e monitora o uso dos recursos de hardware
Funcional — Não testa a escalabilidade da aplicação e monitora o uso dos recursos de hardware
Performance — Projetado para determinar como uma aplicação / sistema irá realizar ao longo do tempo
Funcional — Não pode determinar como uma aplicação / sistema irá realizar ao longo do tempo
Performance — Requer uma aplicação totalmente funcional para que os cenários sejam executados adequadamente
Funcional — Não requer uma aplicação totalmente funcional para que os cenários sejam executados adequadamente
Performance Tuning(Otimização da Performance)
Em resumo, é a ação de realizar os testes de performance de forma completa, revelando assim características do sistema/aplicação, para que haja intervenção quando necessária nos pontos em que são encontrados bottlenecks críticos, que venham comprometer a disponibilidade do sistema, independente de como e de que forma as requisições são submetidas.
Referências
- Qual a diferença entre testes de carga, stress e performance?
- Teste de desempenho: Conceitos, Objetivos e Aplicação.
- Priscila Guarienti, Maicon Bernardino, Avelino F. Zorzo e Flávio M. Oliveira. Uma Abordagem de Análise do Tempo de Resposta para Teste de Desempenho em Aplicações Web. Disponível em: <http://www.sbrc2014.ufsc.br/anais/files/wtf/ST1-2.pdf> Acesso em: 16 de maio de 2018.