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 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. |
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:
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.