Pediram para fazer um Teste de Performance, quais perguntas devo fazer na reunião de entendimento?
Quando falamos de Teste de Performance, a primeira coisa que nos vem a cabeça é abrir a ferramenta de carga: JMeter, Gatling, K6, etc e começar a implementar o script.
Mas, Teste de Performance assim como qualquer tipo de teste é muito mais do que script e como qualquer atividade, requer planejamento.
E a grande dúvida que paira em nossas cabeças é: quais perguntas devem ser feitas para a área de negócio e/ou técnica?
Nesse artigo, listo as principais perguntas que podem ser feitas durante uma reunião de entendimento de projeto.
Objetivo
Aqui devemos esclarecer a necessidade do teste, a “dor” do cliente, para tentar reproduzir em um ambiente controlado.
- Qual o contexto do Teste de Performance?
- Ele é necessário para suprir uma demanda de produção ou testaremos um novo produto?
Critérios de Aceitação
Usamos o critério de aceitação para verificar os resultados da nossa bateria (execução) de Performance e verificar se o teste passou ou não. Muitas vezes recebemos como contexto que temos um problema em produção e que o sistema deve ser mais eficiente.
Porém ser eficiente é algo subjetivo, e métricas subjetivas não se aplicam a Teste de Performance! Performance trabalha com valores lógicos!
BOA PRÁTICA PARA O SHIFT LEFT -> Fique atento se o critério de aceitação para Teste de Performance faz parte do seu épico.
Alguns exemplos de perguntas e critérios de aceitação
- Qual o tempo de resposta desejado? O catálogo de produtos deve ser exibido em menos de três segundos.
- Devemos considerar como métrica o tempo de resposta 90 percentil? O tempo de resposta para a consulta de saldo deve ser de, no máximo, 6 segundos considerando o 90 percentil.
Para saber mais sobre Percentis, leia o artigo do Júlio de Lima Percentis e sua importância nos testes de performance | by Júlio de Lima | Medium
- Qual o Throughput ou Vazão desejada? O sistema tem de suportar 25 requisições por segundo sem a ocorrência de falhas.
- Há algum recurso relevante a ser monitorado nesse teste? A utilização do processador não deve permanecer acima de 75% durante intervalo de tempo superior a 5% do tempo de duração total do estágio de teste que estiver em execução.
Outros recursos importantes que precisam ser considerados são a memória, disco (I/O) e rede (I/O).
- Qual o número máximo de usuários que o sistema deve suportar? Quantos usuários podem ser executados em uma configuração de hardware específica?
O sistema deve ser capaz de suportar 500 usuários enviando, no total, 25 requisições por segundo com, no máximo, 15% de falhas em todas as requisições executadas durante o Teste de Performance.
- Será tolerável erros nesse teste? Qual a margem aceitável? A taxa de erro deve ser inferior a 15% em todas as requisições executadas durante o Teste de Performance.
- Qual o APDEX a ser alcançado?: APDEX é um índice utilizado para verificar o quão performática a aplicação é.
Definir o Threshold (Tempo ideal de resposta para sua aplicação)
· Satisfatórias -> Até o Threshold (T)
· Toleráveis -> Até 4*T
· Frustradas -> Maior 4*T
Como calcular o APDEX?
Outras métricas relacionadas a negócios, como:
- Qual a expectativas dos usuários para determinado fluxo?
- Há obrigações contratuais a serem obedecidas no teste?
- Há padrões de indústria e conformidade com agências reguladoras a serem obedecidos?
- Há SLA’s?
Sobre a arquitetura
- Há diagramas de arquitetura disponível?
- O que essa aplicação faz?
- Quem acessa essa aplicação? De onde? Como?
- Onde está hospedada? Por quem?
- Quais são as tecnologias envolvidas?
- Quais são as dependências existentes?
Ambiente no qual o Teste de Performance será executado
- Em qual ambiente devemos executar o Teste de Performance?
- Para ambientes não produtivos, como será feito o escalonamento dos recursos temporariamente, para que tenhamos um ambiente similar ao ambiente produtivo?
- Qual será a duração do teste?
- Para ambientes produtivos:
-> -> Como trataremos a questão da LGPD?
-> -> Qual o plano de mitigação e contingência caso ocorra algum problema no ambiente produtivo durante a execução do Teste de Performance?
-> -> Qual o melhor horário para a execução? Quantos usuários serão impactados? Como será feita a comunicação sobre os Testes para os impactados e envolvidos?
-> -> Qual será a duração do teste?
-> -> Quais os riscos de se executar um teste em produção?
- Para integrações com sistemas terceiros:
-> -> Há um ambiente de performance ou não produtivo dedicado no sistema parceiro?
-> -> Quais as atualizações de ambiente necessárias para que o teste ocorra?
-> -> Será necessário algum mock?
Massa de Teste
- Qual o tipo de massa precisaremos para o Teste de Performance?
- Quem será responsável por prover a massa?
- A massa poderá ser reutilizada a cada bateria (execução) de teste?
- O sistema a ser testado contém cache? Como lidar com o mesmo para que não afete no resultado final?
Cenários
- Quais cenários farão parte do script?
- Devo considerar o fluxo de ponta a ponta? Ou podemos fazer pequenas entregas testando a parte crítica do fluxo primeiro?
- Qual o tipo de teste desejado para o cenário: Carga, Volume, Estresse, Endurance, Pico?
Volumetria
- Qual o volume de transações dos últimos 6 meses?
- Há um padrão de volume a ser considerado?
- Há um intervalo de tempo em que esse volume padrão aconteceu?
- Quantos acessos por dia? E ao mesmo tempo?
- Qual o ramp up desejado? Ramp up: Intervalo de tempo durante o qual os usuários virtuais acessam a aplicação.
- Qual o steady state desejado? Steady State: Intervalo de tempo, após o Ramp Up, durante o qual os usuários virtuais realizam operações na aplicação. Não há novos usuários acessando a aplicação durante este intervalo.
- Há think time a ser considerado? Think Time: Tempo de espera entre as requisições do Teste de Performance.
- Como será a distribuição de carga entre os cenários envolvidos?
Monitoramento
- Há alguma ferramenta de APM no ambiente onde ocorrerá o Teste de Performance: Grafana, Datadog, New Relic, Dynatrace?
- Para ambiente cloud: Qual o namespace, serviço e banco de dados a ser monitorado?
- Para ambiente on-premisse: Qual o servidor, endereço IP e sistema operacional a ser monitorado?