what is scalability testing
Introdução ao teste de escalabilidade:
O teste de escalabilidade é uma metodologia de teste não funcional em que o desempenho de um aplicativo é medido em termos de sua capacidade de aumentar ou diminuir o número de solicitações do usuário ou outros atributos de medida de desempenho.
O teste de escalabilidade pode ser executado em nível de hardware, software ou banco de dados.
Os parâmetros usados para este teste diferem de um aplicativo para outro, para uma página da web, pode ser o número de usuários, uso da CPU, uso da rede, enquanto para um servidor da web seria o número de solicitações processadas.
Este tutorial lhe dará uma visão geral completa de Teste de escalabilidade junto com seus atributos e as várias etapas envolvidas na realização do teste com exemplos práticos para permitir que você entenda o conceito de uma maneira melhor.
O que você aprenderá:
melhores desenvolvedores de jogos para trabalhar
- Teste de Escalabilidade Vs Teste de Carga
- Atributos de teste de escalabilidade
- Etapas para testar a escalabilidade de um aplicativo
- Conclusão
- Leitura recomendada
Teste de escalabilidade vs teste de carga
O Teste de Carga mede o aplicativo em teste sob carga máxima na qual o sistema travaria. O principal objetivo do teste de carga é identificar o ponto de pico após o qual os usuários não poderão mais usar o sistema.
Tanto a carga quanto a escalabilidade estão incluídas na metodologia de teste de desempenho.
A escalabilidade difere do Teste de Carga no fato de que o teste de escalabilidade mede o sistema nas cargas mínimas e máximas em todos os níveis, incluindo os níveis de software, hardware e banco de dados. Uma vez que a carga máxima é descoberta, os desenvolvedores precisam responder apropriadamente para garantir que o sistema seja escalonável após uma carga específica.
fila é abstrata
Exemplo: Se o teste de escalabilidade determinar que a carga máxima é de 10.000 usuários, para que o sistema seja escalonável, os desenvolvedores precisam tomar medidas em fatores como diminuir o tempo de resposta após o limite de 10.000 usuários ser atingido ou aumentar o tamanho da RAM para acomodar os dados crescentes do usuário.
O teste de carga envolve colocar uma carga máxima nos aplicativos desenvolvidos de uma vez, enquanto o teste de escalabilidade envolve aumentar gradualmente a carga ao longo de um período de tempo progressivamente.
O teste de carga determina o ponto em que o aplicativo falha, enquanto a escalabilidade tenta identificar o motivo da falha do aplicativo e tomar medidas para resolver o problema.
Resumindo, o Teste de Carga ajuda a identificar os problemas de desempenho, enquanto o teste de escalabilidade ajuda a identificar se o sistema pode escalar para o número crescente de usuários.
Atributos de teste de escalabilidade
Os atributos de teste de escalabilidade definem as medidas de desempenho com base nas quais esse teste será executado.
A seguir estão alguns dos atributos comuns:
1) Tempo de resposta:
- O tempo de resposta é o tempo entre a solicitação do usuário e a resposta do aplicativo. Esse teste é feito para identificar o tempo de resposta do servidor sob carga mínima, carga limite e carga máxima para identificar o ponto em que o aplicativo seria interrompido.
- O tempo de resposta pode aumentar ou diminuir com base na variação da carga do usuário no aplicativo. O ideal é que o tempo de resposta de um aplicativo diminua à medida que a carga do usuário continua aumentando.
- Um aplicativo pode ser considerado escalonável se puder fornecer o mesmo tempo de resposta para vários níveis de carga do usuário.
- No caso de ambientes em cluster em que a carga do aplicativo é distribuída entre vários componentes do servidor, o teste de escalabilidade deve medir até que ponto o balanceador de carga está distribuindo a carga entre vários servidores. Isso garantirá que um servidor não seja sobrecarregado com solicitações enquanto o outro servidor fica ocioso esperando a chegada de uma solicitação.
- O tempo de resposta de cada componente do servidor deve ser medido cuidadosamente se o aplicativo estiver hospedado em um ambiente em cluster e o teste de escalabilidade deve certificar-se de que o tempo de resposta de cada componente do servidor deve ser o mesmo, independentemente da quantidade de carga colocada em cada servidor.
- Exemplo: O tempo de resposta pode ser medido como o tempo em que o usuário insere a URL em um navegador da web até o tempo até que a página da web leva para carregar o conteúdo. Quanto menor o tempo de resposta, maior será o desempenho de um aplicativo.
2) Taxa de transferência:
- A taxa de transferência é a medida de uma série de solicitações processadas em uma unidade de tempo pelo aplicativo.
- O resultado da taxa de transferência pode variar de um aplicativo para outro. Se for um aplicativo da web, o rendimento é medido em termos do número de solicitações do usuário processadas por unidade de tempo e se for um banco de dados. a taxa de transferência é medida em termos de várias consultas processadas em tempo unitário.
- Um aplicativo é considerado escalonável se puder fornecer a mesma taxa de transferência para vários níveis de carga nos aplicativos internos, hardware e banco de dados.
3) Uso da CPU:
- O uso da CPU é uma medida da utilização da CPU para executar uma tarefa por um aplicativo. A utilização da CPU geralmente é medida em termos da unidade MegaHertz.
- Idealmente, quanto mais otimizado for o código do aplicativo, menor será a utilização da CPU observada.
- Para conseguir isso, muitas organizações usam práticas de programação padrão para minimizar a utilização da CPU.
- Exemplo: Removendo o código morto na aplicação e minimizando o uso de Thread. Os métodos de suspensão são uma das melhores práticas de programação para minimizar a utilização da CPU.
4) Uso de memória:
- O uso de memória é uma medida da memória consumida para executar uma tarefa por um aplicativo.
- Idealmente, a memória é medida em termos de bytes (MegaBytes, GigaBytes ou Tera Bytes) que o aplicativo desenvolvido usa para acessar a Memória de Acesso Aleatório (RAM).
- O uso de memória de um aplicativo pode ser minimizado seguindo as melhores práticas de programação.
- Exemplos de melhores práticas de programação seriam não usar loops redundantes, reduzir os acessos ao banco de dados, usar o cache, otimizar o uso de consultas SQL, etc. Um aplicativo é considerado escalável se minimizar o uso da memória para o máximo possível.
- Exemplo: Se o espaço de armazenamento disponível para um número especificado de usuários ficar sem memória, o desenvolvedor será forçado a adicionar armazenamento de banco de dados adicional para compensar a perda de dados.
5) Uso da rede:
- O uso da rede é a quantidade de largura de banda consumida por um aplicativo em teste.
- O objetivo do uso da rede é reduzir o congestionamento da rede. O uso da rede é medido em termos de bytes recebidos por segundo, frames recebidos por segundo, segmentos recebidos e enviados por segundo, etc.
- Técnicas de programação, como o uso de técnicas de compressão, podem ajudar a reduzir o congestionamento e minimizar o uso da rede. Um aplicativo é considerado escalável se puder funcionar com o mínimo de congestionamento de rede e oferecer alto desempenho de aplicativo.
- Exemplo: Em vez de seguir um mecanismo de fila para processar as solicitações do usuário, um desenvolvedor pode escrever o código para processar as solicitações do usuário conforme e quando a solicitação chega a um banco de dados.
Além desses parâmetros, existem alguns outros parâmetros menos usados, como tempo de resposta da solicitação do servidor, tempo de execução da tarefa, tempo de transação, tempo de carregamento da página da Web, tempo para buscar a resposta do banco de dados, tempo de reinicialização, tempo de impressão, tempo de sessão, transição de tela , transações por segundo, acessos por segundo, solicitações por segundo etc.
Os atributos para teste de escalabilidade podem diferir de um aplicativo para outro, pois a medida de desempenho para aplicativos da web pode não ser a mesma de um desktop ou de um aplicativo cliente-servidor.
Etapas para testar a escalabilidade de um aplicativo
A principal vantagem de realizar esse teste em um aplicativo é entender o comportamento do usuário quando a carga máxima é atingida e as maneiras de resolvê-lo.
Além disso, esse teste permite que os testadores identifiquem a degradação do lado do servidor e o tempo de resposta em relação à carga do usuário do aplicativo. Como resultado, esse teste está sendo preferido em várias organizações em todo o mundo.
A seguir está a lista de etapas para testar a escalabilidade de um aplicativo:
copie filmes em dvd para o disco rígido gratuitamente
- Crie cenários de teste repetíveis para cada um dos atributos de teste de escalabilidade.
- Teste o aplicativo para vários níveis de carga, como cargas baixas, médias e altas, e verifique o comportamento de um aplicativo.
- Crie um ambiente de teste que seja estável o suficiente para suportar todo o ciclo de teste de escalabilidade.
- Configure o hardware necessário para realizar este teste.
- Defina um conjunto de usuários virtuais para verificar o comportamento de um aplicativo sob carga de usuário variável.
- Repita os cenários de teste para vários usuários sob condições variadas de aplicativos internos, hardware e alterações de banco de dados.
- No caso de um ambiente em cluster, valide se o balanceador de carga está direcionando as solicitações do usuário a vários servidores para garantir que nenhum servidor seja sobrecarregado por uma série de solicitações.
- Execute os cenários de teste no ambiente de teste.
- Analisar os relatórios gerados e verificar as áreas de melhoria, se houver.
Conclusão
Em poucas palavras,
=> O teste de escalabilidade é uma metodologia de teste não funcional para verificar se um aplicativo pode ser dimensionado para cima ou para baixo para os atributos variáveis. Os atributos usados para este teste variam de um aplicativo para outro.
=> O objetivo principal deste teste é determinar quando um aplicativo começa a degradar em uma carga máxima e tomar as medidas adequadas para garantir que o aplicativo desenvolvido seja escalável o suficiente para acomodar as mudanças nos aplicativos internos, software, hardware e também no banco de dados mudanças no futuro.
=> Se este teste for feito corretamente, os principais erros com relação ao desempenho do software, hardware e banco de dados podem ser descobertos nos aplicativos desenvolvidos.
=> Uma grande desvantagem desse teste seria sua limitação de armazenamento de dados, com limites no tamanho do banco de dados e no espaço do buffer. Além disso, as limitações de largura de banda da rede podem ser um impedimento para o teste de escalabilidade.
=> O processo de teste de escalabilidade difere de uma organização para outra, pois os atributos de teste de escalabilidade de um aplicativo serão diferentes dos outros aplicativos.
Leitura recomendada
- Teste de carga com tutoriais HP LoadRunner
- Teste de desempenho vs teste de carga vs teste de estresse (diferença)
- Diferença entre Desktop, Teste de Servidor Cliente e Teste da Web
- Teste de carga, estresse e desempenho de aplicativos da Web usando WAPT
- Melhores ferramentas de teste de software 2021 (QA Test Automation Tools)
- Guia de teste de segurança de aplicativos da Web
- Teste de aplicativos - Noções básicas de teste de software!
- Instalando seu aplicativo no dispositivo e comece a testar no Eclipse