Globalcode – Open4education
Metralhando sua API
Trilha – Testes
Edlaine & Thalita
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
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
Globalcode – Open4education
Agenda
❖ Teste de Performance
❖ Ferramenta Gatling
❖ Demonstração
➢ Ambiente
➢ Mão na massa
❖ Boas Práticas
Globalcode – Open4education
Teste de Performance
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.
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.
Globalcode – Open4education
Teste de Performance
Temos uma API
Globalcode – Open4education
Teste de Performance
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.
Globalcode – Open4education
Testes de Performance
Por que testar?
A performance fará você perder clientes para o seu concorrente!
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
Globalcode – Open4education
Testes de Performance
Importância
❖ Disponibilidade
❖ Tempo de resposta
❖ Consistencia de dados
❖ Problemas de concorrência
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.
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/
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
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.
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
Globalcode – Open4education
Ferramenta Gatling
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
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
Globalcode – Open4education
Ferramenta Gatling
Ferramenta nova que vem ganhando popularidade
Globalcode – Open4education
Demonstração
Globalcode – Open4education
Demonstração - Ambiente
Scripts de Teste
Código fonte disponível em:
https://github.com/EdlaineZamora/gatling
Globalcode – Open4education
Demonstração - Ambiente
Banco de dados
Hospedado na plataforma mLab em:
ds139072.mlab.com:39072/airlinedb
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
Globalcode – Open4education
Demonstração - Ambiente
API
Comunicação
Buscar recursos
Criar um novo recurso
Atualizar um recurso existente
Remover um recurso
Baseado em HTTP
Globalcode – Open4education
Demonstração - Ambiente
API
Funcionalidades
Globalcode – Open4education
Demonstração - Mão na Massa
Globalcode – Open4education
Boas Práticas
Globalcode – Open4education
7 dicas e sugestões de boas práticas
1. Mantenha seu banco de dados controlado.
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.
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
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
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
Globalcode – Open4education
7 dicas e sugestões de boas práticas
6. Mantenha seus scripts o mais legível possível
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
Globalcode – Open4education
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua API
TDC Floripa 2018 - Metralhando sua API

TDC Floripa 2018 - Metralhando sua API