Transformação Digital

Testes de carga

Para checar volumes de conexões e requisições que conseguem, simultaneamente, acionar aplicações - tanto em momentos de uso normal quanto nos de pico - realizamos os testes de carga.

Testes de performance são usados para verificar se aplicações conseguem oferecer experiências fluidas aos usuários, independente do dispositivo usado para acessá-la, enquanto ela processa grandes volumes de dados. Dentre eles, há um específico para checar volumes de conexões e requisições que conseguem, simultaneamente, acionar aplicações: são os testes de carga.

Em linhas gerais, eles verificam com qual volume de conexões e solicitações de transferência de dados o sistema consegue lidar, tanto em momentos de uso normal quanto nos de pico. Os testes de carga tornam-se, portanto, fundamentais para softwares que, seja por meio da computação em nuvem usando apenas um provedor ou de uma multicloud, já alcançaram algum nível de escala.

Neste texto vamos explicar com mais detalhes os testes de carga, qual sua importância e como eles ajudam a identificar e mensurar as principais métricas dos testes de performance. Siga conosco!

De que carga estamos falando?

De acordo com o Conselho Internacional de Qualificação em Testes de Software, os testes de carga são um tipo de teste de performance que é conduzido para avaliar o comportamento de um componente ou sistema sob cargas variáveis, geralmente em condições antecipadas de baixo, típico ou alto uso. Ou seja, em sua própria definição está estabelecido que eles podem ser tanto testes unitários quanto de integração.

Entretanto, para deixar mais claro o que será realmente testado, vamos explicar como se compõe a “carga” que será verificada.

Em linhas gerais, há três elementos para caracterizá-la. Quando olhamos para cada um deles, conseguimos analisar uma dimensão da aplicação e, consequentemente, avaliar como está a performance naquela dimensão. Os elementos e suas respectivas dimensões avaliadas são:

ELEMENTO DIMENSÃO O QUE É AVALIADO
Usuários simultâneos Conexões Simula a quantidade de clientes (sejam pessoas ou aplicações) que consegue estabelecer e manter conexões concorrentes com o sistema em um mesmo intervalo de tempo. A intenção é verificar o limite de conexões simultâneas que conseguem ser sustentadas antes de ser iniciado o enfileiramento de processos ou a derrubada de portas de rede.
Requisições Vazão Frequência com a qual a aplicação é requisitada. Dado que as conexões podem gerar uma quantidade de requisições bem diferente – há conexões que solicitam requisições na casa de dezenas enquanto outras podem chegar a fazer milhões de requisições -, é necessário verificar a carga real suportada do ponto de vista de requisições. O indicador mais utilizado para medir a vazão é o RPS – requisições por segundo.
Volume e complexidade dos dados Peso computacional Nas requisições, os dados transacionados podem ser de diferentes tipos. Cada um deles envolve uma quantidade de bytes transferidos. Arquivos extensos e cálculos matemáticos complexos, por exemplo, exigem mais do sistema, assim como a necessidade de realizar muitas operações simultâneas de leitura e escrita em bancos de dados.

Testes de carga: como encontramos as métricas mais importantes dos testes de performance

O olhar sobre as três dimensões permite que identifiquemos as cinco principais métricas dos testes de performance, conforme já apresentamos no texto do blog sobre o tema: usuários simultâneos, vazão, consumo de recursos, tempo de resposta e taxa de erro.

Como já dissemos neste texto, nos testes de carga verificamos um componente ou sistema em condições de baixo, típico ou alto uso. Sendo assim, os testes são realizados para que encontremos resultados nesses três cenários de utilização da aplicação.

As métricas se relacionam. Ou seja, uma maior quantidade de usuários simultâneos pode acarretar um menor tempo de resposta ou uma maior taxa de erro, por exemplo. Em outras palavras, os resultados dos testes de carga apontam quais ações devem ser tomadas para encontrar o equilíbrio fino entre o funcionamento pleno de todas as capacidades do sistema sem deixar cair a qualidade da experiência do usuário.

Nos testes, analisamos as cinco principais métricas de performance sobre os seguintes pontos de vista:

  1. Usuários simultâneos → é a variável de controle, de entrada, do teste. Checa-se como ocorre a degradação do tempo de resposta conforme são adicionados usuários virtuais. Com essa verificação, é possível identificar a capacidade de conexões que conseguem ser mantidas sem gerar concorrência predatória por recursos.
  2. Tempo de resposta → é uma métrica que ajuda a caracterizar as requisições. É cronometrado o intervalo entre o envio da requisição e a devolução, pela aplicação, do último byte de resposta.
  3. Vazão → monitora-se tanto a quantidade quanto o “tamanho” das requisições, ou seja, a quantidade de bytes em cada uma delas. Assim é possível medir o volume de processamento possível por unidade de tempo, à medida que a quantidade de usuários aumenta.
  4. Consumo de recursos → essa métrica é particularmente importante para sistemas que precisam escalar usando computação em nuvem, seja com apenas um provedor ou uma multicloud. Verifica-se o consumo de CPUs, memória RAM, banda de rede de servidores e outros indicadores, conforme altera-se a quantidade de usuários. Em aplicações já em produção, é comum realizar esses testes no escopo da atividade de qualidade como serviço contínuo.
  5. Taxa de erro → Conta-se a proporção de requisições que falharam, inclusive as que estouraram o limite do tempo de resposta, em relação ao total de requisições enviadas. A taxa de erro não deixa de ser um indicador da real vazão da aplicação.

São muitos os benefícios trazidos pelos testes de carga. Na nossa avaliação, há dois mais importantes: o embasamento para planejamento de evolução da aplicação e a segurança necessária para estabelecer os acordos de níveis de serviço, os SLAs.

De posse dos resultados de testes de carga, os times responsáveis pela aplicação conseguem definir com maior assertividade se a evolução do sistema deve se dar por incremento de recursos computacionais ou a partir de ações no código como a conversão ou refatoração de código.

Também é por meio dos resultados dos testes de carga que é possível comprovar se o sistema consegue manter-se estável em diferentes cenários de uso. Esses dados normalmente constam em contrato estabelecido entre o fornecedor e o cliente do software, garantindo segurança jurídica para as partes.

No nosso Modo de Operações por Inteligência Artificial, os testes de carga são realizados tanto na fase de Identificação de Desafios quanto na de Soluções. Se você precisa escalar suas aplicações com segurança, clique aqui e faça contato! Um de nossos especialistas pode te apresentar em detalhes o funcionamento de todas as etapas dos testes de carga.

Artigos relacionados
Transformação Digital
Gestão de mudança
Transformação Digital
Multicloud
Transformação Digital
AI Operating Model, o próximo passo da IA corporativa
Transformação Digital
Testes de performance
Pensamos com ambição.

Executamos com método.

Construímos o que vem depois.
Inmetrics. Business, Engineered.

Brasil

comercial@inmetrics.com.br
Av. Tambore, 267
22º andar - Torre Sul
Tamboré, Barueri - SP
06460-000, Brasil

Chile

comercial@inmetrics.lat
Cerro El Plomo, 5420
Oficina 1503
Las Condes | Santiago, Chile
7560742

Colômbia

comercial@inmetrics.lat
Calle 95 #14-45
Edificio Nueve 5, piso 8
Oficina 801
Bogotá, Colômbia
110221

Descubra mais sobre Inmetrics

Assine agora mesmo para continuar lendo e ter acesso ao arquivo completo.

Continuar lendo