Teste de Performance: Os requisitos de desempenho estão sendo avaliados?

Priscila Campos
4 min readAug 19, 2022

--

Imagem com o elefante em pé sobre a figura de um servidor e uma fita métrica ao lado.
Imagem criada no Canva, design dos artistas @sketchify, rachidluk10 e @pixabay

Visão Geral

Mesmo um sistema que não apresenta erros funcionais, mas demonstra lentidão, instabilidade entre outros problemas de desempenho, a conversão das usuárias e escalabilidade são impactadas.

Esse artigo tem o intuito de: trazer dicas sobre pontos a serem considerados na condução de avaliação dos requisitos cross funcionais para os testes de performance.

Definição

De acordo com a ISO/IEC 2501, o teste de performance (ou desempenho) avalia o tempo de resposta, a disponibilidade de recursos e limite de capacidade de um componente ou sistema ao executar suas funções em determinadas condições e intervalos de tempo.

Por onde começar?

Assim como outros níveis de teste, o teste de performance tem como objetivo imobilizar alguma ameaça para que o custo deste teste seja justificável, então a sugestão é iniciar pela investigação e alinhamento de expectativas.

Exemplo: Verifique com os stakeholders, arquitetos e outras partes interessadas quais os objetivos esperados, número de usuários que vão compor as cargas, recorrência da execução dos testes e ambiente que os testes serão disparados.

Planejamento

O roteiro que vai conduzir a criação dos testes está interligado ao objetivo que o teste pretende alcançar, podendo ser:

  • Teste de performance: criar testes genéricos de performance que não tem como objetivo simplesmente avaliar o resultado como “sucesso” ou “falha”, mas identificar padrão de comportamento e capacidade da aplicação sobre determinada circunstância.
  • Teste de carga: criar testes que disparam cargas crescentes e avaliam a capacidade e utilização dos recursos do sistema.
  • Teste de estresse: criar testes com cargas que estão no limite ou além dos limites de cargas especificados e verificam a capacidade e utilização dos recursos do sistema.
  • Teste de escalabilidade: executar testes de carga para atender requisitos futuros.
  • Teste de pico: executar testes com rajadas de cargas súbitas e verificar se o sistema retorna a um estado estável.
  • Teste de concorrência: realizar testes com cargas simultâneas.
  • Teste de capacidade: executar testes com diferentes quantidade de usuários ou transações e analisar o que é suportado pelo componente ou sistema para que atenda aos objetivos de performance predefinidos.

O planejamento também pode conter os critérios de aceite, dados de teste, configuração do sistema, ambiente de teste, ferramentas, perfis operacionais, riscos, comunicação que será utilizada para divulgação dos resultados e outras informações que tornem os testes reprodutíveis.

Pré condições

Para realizar testes de performance dinâmicos precisamos:

  • modelar as entradas de diferentes usuários(cargas) representativos;
  • que o componente ou sistema a ser testado não apresente defeitos funcionais que inviabilizam a análise da performance.

Execução

Problemas de performance podem ser introduzidos na definição da arquitetura e modelagem do sistema ou a medida que o sistema é construído, então podemos realizar:

  • Testes Estáticos: revisar as especificações dos componentes que vão compor a arquitetura, como por exemplo: armazenamento e consulta de banco de dados, características do componente, arquitetura de rede entre outros.
  • Testes dinâmicos: com alguma ferramenta que realize teste de performance para a camada que o teste será aplicado, executar os testes conforme as expectativas alinhadas e o planejamento de testes. Exemplo de algumas ferramentas: Artillery, K6, Jmeter, Locust.

Falhas comuns

Para cada camada da aplicação que o teste dinâmico é aplicado, diferentes falhas podem ser encontradas e dentre as mais comuns estão:

  • Resposta lenta sob todos os níveis de carga;
  • Resposta lenta sob níveis de carga moderada a pesada;
  • Resposta degradada ao longo do tempo;
  • Tempo de resposta aceitável, mas o tratamento de erros diminui em níveis altos de cargas.

Métricas

O relatório de métricas vai variar de acordo com contexto de negócio, operacional e objetivos de teste, o mesmo deve responder os objetivos que levaram a execução desse tipo de teste e atender a demanda do solicitante, ou seja, a métrica para os stakeholders tende a não ser a mesma esperada pelos arquitetos.

Exemplos:

  • Contexto de negócio: eficiência do processo de negócios, cumprimento de Service Level Agreement (SLA), escopo de uso, concorrência de uso, tempo de uso, etc.
  • Contexto operacional: tempo necessário para inicialização de ambiente, backups, desligamento, reinício, tempo necessário para restaurar dados de um backup, tempo necessário para emitir alertas, etc.
  • Objetivos de teste: tempo de resposta, utilização de recursos, taxa de transferência, tempo de processamento Batch, números de erros, tempo de conclusão, carregamento em segundo plano, etc.

Os requisitos de desempenho também podem ser avaliados com outros requisitos cross funcionais, como a confiabilidade, pois para um determinado contexto de negócio pode ser aceitável uma aplicação ter uma interrupção mensal dado um pico de carga e recuperar após algum tempo ao estado desejado.

É algo incômodo
Olhar para seus próprios problemas e saber
Que ninguém além de você mesmo os criou
Sófocles, Ajax

Referência

--

--

Priscila Campos

Senior Quality Analyst at Thoughtworks | Ribeirão das Neves — MG