O que é teste de escalabilidade? Aprenda com o exemplo
⚡ Resumo Inteligente
Os testes de escalabilidade medem o comportamento de uma aplicação quando a carga de usuários, o volume de dados ou a taxa de transações aumentam ou diminuem, revelando o ponto exato em que o desempenho para de escalar e identificando o gargalo responsável.
O que é teste de escalabilidade?
Teste de escalabilidade O teste de escalabilidade é um método de teste não funcional que mede o desempenho de um sistema ou rede quando o número de solicitações de usuários aumenta ou diminui. O objetivo do teste de escalabilidade é garantir que o sistema possa lidar com um aumento projetado no tráfego de usuários, no volume de dados e na frequência de transações. Ele testa a capacidade do sistema de atender à crescente demanda.
O teste de escalabilidade é um subtipo de teste de performanceAssim, concentra-se no comportamento de uma aplicação quando implantada em um sistema maior ou executada sob carga excessiva. Engenharia de SoftwareOs testes de escalabilidade medem o ponto em que uma aplicação para de escalar e identificam o motivo disso.
Por que realizar testes de escalabilidade?
Problemas de capacidade raramente aparecem durante testes funcionais. Eles surgem no dia de maior movimento do ano, quando uma campanha de marketing é lançada ou quando um conjunto de dados que cresceu silenciosamente por dois anos finalmente torna cada consulta lenta. Os testes de escalabilidade expõem esses limites em um ambiente controlado. Especificamente, eles ajudam você a:
- Determine como a aplicação se comporta à medida que a carga de trabalho aumenta e onde essa curva se estabiliza.
- Determine o limite de usuários simultâneos para o aplicativo web antes que os tempos de resposta se tornem inaceitáveis.
- Determine a degradação do lado do cliente e a experiência do usuário final sob carga, como a renderização lenta da tela.
- Determine a robustez e a degradação do lado do servidor, incluindo saturação da CPU, vazamentos de memória e esgotamento do pool de conexões.
A relação é mais fácil de visualizar como uma curva: a taxa de transferência aumenta juntamente com a carga adicional até que um recurso se sature, após o que usuários extras apenas alongam a fila.
Tipos de Testes de Escalabilidade
A escalabilidade não é uma propriedade única, portanto, um plano de testes geralmente abrange mais de uma dimensão. Os quatro tipos abaixo são os que a maioria das equipes mede, e os dois primeiros definem o formato do próprio ambiente de testes.
| Formato | O que é escalado? | O que o teste comprova |
|---|---|---|
| Escalabilidade vertical (aumentar a escala) | CPU, memória ou armazenamento adicionados a um único servidor | Quanta carga extra uma máquina atualizada absorve e qual é o limite máximo para um único nó? |
| Escalabilidade horizontal (escala externa) | Servidores, contêineres ou nós adicionais atrás de um balanceador de carga | Se a taxa de transferência aumenta aproximadamente em proporção aos nós adicionados, ou se os recursos compartilhados a limitam. |
| Escalabilidade funcional | Novos recursos, módulos ou serviços | Se a funcionalidade adicional pode ser absorvida sem degradar as transações existentes. |
| Escalabilidade administrativa | Usuários, inquilinos, equipes ou ambientes a serem gerenciados | Resta saber se os processos de integração, permissões e monitoramento continuarão viáveis à medida que a organização cresce. |
A escalabilidade vertical é mais simples porque a arquitetura raramente muda, mas uma única máquina sempre tem um limite. A escalabilidade horizontal remove esse limite e melhora a tolerância a falhas, ao custo de latência de rede, consistência de dados e sobrecarga de coordenação — tudo isso o teste deve medir, em vez de presumir.
O que testar em testes de escalabilidade
A escalabilidade é avaliada por meio de medições, não por impressões. Registre os seguintes atributos em cada etapa de carregamento para que a tendência, e não apenas o número final, fique visível.
| Atributo | O que isso te diz |
|---|---|
| O tempo de resposta | Tempo entre uma solicitação do usuário e a resposta do sistema; esse tempo deve permanecer constante à medida que a concorrência aumenta. |
| Transição de tela | A rapidez com que uma página ou visualização dá lugar à seguinte sob carga. |
| Produtividade | Volume de solicitações processadas por unidade de tempo; um patamar marca o limite de escalabilidade. |
| Medições de tempo | Tempo de sessão, tempo de reinicialização, tempo de impressão, tempo de transação e tempo de execução da tarefa. |
| Desempenho em relação ao número de usuários | Como cada métrica se comporta à medida que usuários simultâneos são adicionados em incrementos. |
| Tarifas de solicitação | Requisições por segundo, transações por segundo e acessos por segundo. |
| Uso de rede | Largura de banda consumida e latência de pacotes entre camadas |
| Uso de CPU e memória | Custo de recursos por transação; um valor que aumenta constantemente geralmente indica um vazamento. |
| Contadores de servidor web | Requisições e respostas por segundo, profundidade da fila e conexões rejeitadas. |
| Desempenho sob carga | Comportamento combinado quando todas as métricas são lidas em conjunto no pico. |
Estratégia de teste para testes de escalabilidade
A estratégia de teste para Teste de Escalabilidade varia dependendo do tipo de aplicação que está sendo testada. Se uma aplicação acessa um banco de dadosOs parâmetros de teste incluirão o tamanho do banco de dados em relação ao número de usuários, e assim por diante.
Pré-requisitos para testes de escalabilidade
- Capacidade de distribuição de carga — Verifique se a ferramenta de teste de carga permite que a carga seja gerada a partir de várias máquinas e controlada a partir de um ponto central.
- Sistema Operacional — Verificar o quê sistemas operacionais Os agentes de geração de carga e o mestre de teste de carga são executados em segundo plano.
- Subcontratante — Verifique qual o tipo de CPU necessário para o agente de usuário virtual e o servidor mestre de teste de carga.
- Memória — Verifique quanta memória seria suficiente para o agente de usuário virtual e o servidor de teste de carga.
- Ambiente de teste — Verifique se o ambiente de teste espelha a produção de forma suficientemente precisa para que os resultados sejam transferíveis.
Como fazer testes de escalabilidade
- Defina um processo repetível para executar testes de escalabilidade ao longo do ciclo de vida da aplicação.
- Determine os critérios de escalabilidade
- Listar as ferramentas de software necessárias para executar o teste de carga
- Defina o ambiente de teste e configure o hardware necessário para executar testes de escalabilidade
- Planeje os cenários de teste, bem como os testes de escalabilidade.
- Crie e verifique o script do usuário virtual.
- Crie e verifique os cenários de teste de carga
- Execute os testes
- Avalie os resultados
- Gere os relatórios necessários.
Plano de teste de escalabilidade
Antes de criar os testes propriamente ditos, elabore um plano de testes detalhado. Esta etapa é fundamental para garantir que os testes estejam em conformidade com os requisitos da aplicação.
A seguir estão os atributos para criar um bem definido Plano de teste para testes de escalabilidade.
- Etapas para scriptsO roteiro de teste deve conter etapas detalhadas que determinem as ações exatas que um usuário executaria.
- Dados de tempo de execuçãoO plano de testes deve determinar todos os dados de tempo de execução necessários para interagir com o aplicativo.
- Testes baseados em dadosSe os scripts precisarem de dados variáveis em tempo de execução, você precisa entender todos os campos que exigem esses dados.
Exemplo de teste de escalabilidade
Considere uma loja online que espera 2,000 compradores simultâneos durante uma promoção sazonal. A equipe define primeiro um critério de aprovação: a transação de finalização da compra deve ser concluída em menos de três segundos para 95% dos usuários, com uma taxa de erro inferior a 1%.
O teste então executa o mesmo script de navegação-busca-carrinho-finalização de compra com 250, 500, 1,000, 1,500 e 2,000 usuários virtuais. O tempo de resposta se mantém próximo a dois segundos até 1,000 usuários, sobe para 2.8 segundos com 1,500 e chega a nove segundos com 2,000, enquanto o uso da CPU do banco de dados fica em 98%. O limite de escalabilidade é, portanto, de aproximadamente 1,500 usuários, e o gargalo está na camada de banco de dados — não nos servidores de aplicação que a equipe havia planejado adicionar.
Ferramentas de teste de escalabilidade
Os testes de escalabilidade exigem uma ferramenta capaz de gerar carga em várias máquinas simultaneamente e reportar os resultados de forma centralizada. A escolha geralmente leva em consideração a linguagem de programação principal da equipe e os protocolos em teste.
| ferramenta | Scripting | Melhor adequado para |
|---|---|---|
| Apache JMeter | Planos de teste com interface gráfica e XML, Java baseado | Ampla cobertura de protocolos, incluindo JDBC, JMS, LDAP e SOAP. |
| Grafana k6 | JavaRoteiro ou TypeScript | Testes de API e microsserviços integrados a um pipeline de CI/CD |
| Gatling | Java, Kotlin ou Scala DSL | Alto número de usuários virtuais por injetor com relatórios HTML detalhados. |
| Gafanhoto | Avião Python | Python equipes que precisam estender o cliente além do HTTP |
| LoadRunner | Scripts semelhantes a C gravados no VuGen | Grandes parques empresariais com aplicações legadas e comerciais. |
Executadores hospedados na nuvem, como BlazeMeterLoadView e Gatling Enterprise utilizam várias dessas plataformas e são opções a serem consideradas quando um teste exige dezenas de milhares de usuários virtuais ou tráfego de múltiplas regiões geográficas. Uma análise mais abrangente da categoria está disponível no guia para ferramentas de teste de desempenho.
Desafios e melhores práticas em testes de escalabilidade
Resultados de escalabilidade extremamente decepcionantes trace voltamos à configuração de teste em vez da aplicação. Esses são os problemas que se repetem e os hábitos que os impedem.
Desafios comuns
- Ambientes subdimensionados — Um ambiente de teste com metade da memória de produção reporta um gargalo que não existe em produção.
- Modelos de carga de trabalho irrealistas — Scripts sem tempo de espera ou variação de dados acessam caches que usuários reais não acessariam.
- Resultados ruidosos — O dimensionamento automático, a coleta de lixo e o hardware compartilhado na nuvem fazem com que duas execuções idênticas apresentem resultados diferentes.
- Observabilidade fina — Sem métricas do lado do servidor, um resultado lento indica que algo deu errado, mas não o quê.
- Custo — Gerar uma concorrência muito alta exige sua própria frota de geradores de carga, o que pode facilmente levar a um orçamento insuficiente.
Melhores práticas
- Defina os critérios de aprovação, como um percentil de tempo de resposta e um limite máximo de taxa de erro, antes da primeira execução.
- Aumente a carga em etapas planejadas e mantenha cada etapa por tempo suficiente para que o sistema se estabilize.
- Varie os dados de teste por usuário virtual para que o armazenamento em cache não manipule os resultados.
- Colete métricas de aplicativos, bancos de dados e infraestrutura, juntamente com os números do lado do cliente.
- Armazene os scripts de teste em um sistema de controle de versão e execute uma breve verificação de escalabilidade em cada build, e depois uma verificação completa antes do lançamento.
- Compare as tendências entre diferentes versões, em vez de avaliar um único relatório isoladamente.
Testes de escalabilidade versus testes de carga
Os dois conceitos são frequentemente confundidos porque ambos aplicam carga. A diferença reside na pergunta que cada um responde: o teste de escalabilidade questiona o quanto o sistema pode crescer, enquanto o teste de capacidade de carga avalia a capacidade de expansão. teste de carga Pergunta se consegue suportar a carga já prevista.
| Base | Teste de escalabilidade | Teste de carga |
|---|---|---|
| Foco | Ela se concentra no desempenho de seus sites, softwares, hardwares e aplicativos quando são feitas alterações no tamanho ou volume do sistema para atender a uma necessidade crescente. | O teste de carga concentra-se em testar uma aplicação sob cargas pesadas, para determinar em que ponto o tempo de resposta do sistema falha. |
| Padrão de carregamento | A carga é aumentada em etapas, e recursos podem ser adicionados entre as etapas. | A carga é mantida em um pico esperado por um período fixo de duração. |
| Pergunta respondida | Até onde esse sistema pode crescer e quais são os seus limites? | Este sistema cumpre hoje as metas acordadas? |
| Saída típica | Um limite de escalabilidade, um gargalo e um plano de capacidade. | Aprovação ou reprovação em relação às metas de tempo de resposta e taxa de transferência |
Ambos ficam embaixo do testes não funcionais guarda-chuva ao lado testes de estresse, teste de pico, teste de resistência e teste de volumeE uma estratégia de desempenho madura geralmente executa várias delas nos mesmos scripts.

