Pensar em performance nos dias atuais é indispensável se você quer manter uma aplicação de sucesso na internet sem imprevistos durante os picos de acesso. Vamos mostrar como entender o comportamento da API sob stress utilizando o Gatling como ferramenta.
2. Globalcode – Open4education
@EdlaineZamora
Desenvolvedora de Software na ThoughtWorks
Formada em Informática pela Universidade
Estadual de Maringá
Especializada em Desenvolvimento Web pela
Universidade Estadual de Maringá
Experiência de 6 anos de desenvolvimento de
software
3. Globalcode – Open4education
@ThalitaPinheiro
Deva na ThoughtWorks =)
Formada em Sistemas de Informação pela
Universidade Federal dos Vales do
Jequitinhonha e Mucuri
Especializada em Gestão de Projetos Ágeis
Experiência de 6 anos de desenvolvimento de
software
6. Globalcode – Open4education
Teste de Performance
Alguns conceitos
❖ Carga
➢ Volume de tráfego. Medida em transações, requisições, etc.
❖ Requisição
➢ Requisição http realizada.
❖ Transação
➢ Operação completa no sistema. Ex: buscar um produto.
❖ Tempo de resposta
➢ Tempo decorrido entre a requisição e a resposta.
7. Globalcode – Open4education
Teste de Performance
Alguns conceitos
❖ Profiling
➢ Instrumentação da aplicação para estudo dos métodos e seus tempos de
execução.
❖ Vazão
➢ Taxa de resposta às requisições recebidas.
❖ Gargalo
➢ Tudo o que impede que o sistema apresente maior vazão.
13. Globalcode – Open4education
O que é teste de performance?
Teste de performance é aquele em que submetemos o sistema a
uma avaliação de carga, stress ou desempenho para avaliar se os
resultados estão de acordo com o esperado.
15. Globalcode – Open4education
Testes de Performance
Por que testar?
"De acordo com estudo do Aberdeen Group, cada segundo extra na leitura da página
pode resultar em aproximadamente 7% em perdas nas vendas."
"Estudo da Forrester Research indica que 40% dos compradores esperam cerca de
três segundos antes de abandonar um site."
"A Amazon divulgou um estudo em que afirma o aumento de 1% no faturamento
quando consegue melhorar a performance da loja virtual em 100 milissegundos."
Fonte: www.ecommercenews.com.br
16. Globalcode – Open4education
Testes de Performance
Importância
❖ Disponibilidade
❖ Tempo de resposta
❖ Consistencia de dados
❖ Problemas de concorrência
17. Globalcode – Open4education
Testes de Performance
Page Response Time
❖ Medida de performance que mais importa ao usuário final.
❖ É o tempo entre a requisição de uma página até a sua exibição no navegador.
18. Globalcode – Open4education
Testes de Performance
Page Response Time - Limites
0,1 segundos Limite que o usuário sente que a resposta foi imediata
1 segundo Limite para que o fluxo de pensamento do usuário se mantenha contínuo, mas ele
notará a demora no processamento
10 segundos Limite máximo de espera para manter a atenção do usuário na tela. Ele sente que
poderia ser mais rápido mas supera isso
Após 10 segundos Após 10 segundos ele começará a pensar em outras coisas, tornando difícil recuperar
sua atenção quando o site responder
Fonte: https://www.nngroup.com/articles/website-response-times/
19. Globalcode – Open4education
Estratégias de testes de performance
Teste de carga
Testa o software sob as condições normais de uso.
O teste é iniciado com uma carga baixa e vai aumentando gradativamente
20. Globalcode – Open4education
Estratégias de testes de performance
Teste de desempenho (estabilidade)
Testa se o sistema se mantém funcionando de maneira satisfatória após um
período de uso.
É executado com uma carga constante e mantido por um tempo cronometrado.
21. Globalcode – Open4education
Estratégias de testes de performance
Teste de stress
Testa o software sob condições extremas de uso. Grande volume de transações e
usuários simultâneos, redução de recursos, etc.
❖ Black Friday
❖ Consulta de resultado de vestibular
23. Globalcode – Open4education
Ferramenta Gatling
Características
❖ Grátis e open source
❖ Multiplataforma (JDK8)
❖ Suporta protocolos HTTP/S, JMS e JDBC.
❖ Relatórios HTML lindos <3.
❖ Facilmente integrável com ferramentas de CI
24. Globalcode – Open4education
Ferramenta Gatling
Características
❖ Scripts em Scala (Tests as Code)
❖ Código humanamente legível
❖ Possibilita asserções de validação do retorno
29. Globalcode – Open4education
Demonstração - Ambiente
API
Desenvolvida em NodeJS
Hospedada na plataforma Heroku em:
https://airlineapi.herokuapp.com
Código fonte disponível em:
https://github.com/EdlaineZamora/airlineapi
30. Globalcode – Open4education
Demonstração - Ambiente
API
Comunicação
Buscar recursos
Criar um novo recurso
Atualizar um recurso existente
Remover um recurso
Baseado em HTTP
35. Globalcode – Open4education
7 dicas e sugestões de boas práticas
2. Mantenha a infra-estrutura de testes o mais próximo possível do
ambiente de produção.
36. Globalcode – Open4education
3. Envolva testadores, administradores de banco de dados,
arquiteto de rede, de software e desenvolvedores no processo.
7 dicas e sugestões de boas práticas
37. Globalcode – Open4education
4. Execute o mesmo conjunto de testes várias vezes no mesmo dia
e durante vários dias na semana para garantir que os resultados
são consistentes.
7 dicas e sugestões de boas práticas
38. Globalcode – Open4education
5.Randomize Comportamento:
❖ Usuário reais nunca pensam igual
❖ Considere adicionar alguma aleatorização aos tempos de sono
mínimo / máximo, o número de repetições de chamadas, etc
7 dicas e sugestões de boas práticas
40. Globalcode – Open4education
7 dicas e sugestões de boas práticas
7. Stakeholders não querem relatório com gráficos e tabelas
confusas, eles querem conclusões e sugestões