Teste de Carga e a sua importância na qualidade do software

Os testes de carga simulam um grande número de usuários e transações simultâneas no software, a partir daí é possível determinar a qualidade desse software.
  • Por Redação Techpost
  • @redacao
  • 22 dezembro, 2021
  • 8 min de leitura
Testes de carga e os testes black box e white box.
Esse tipo de teste é usado de acordo com o produto - software - e as suas necessidades, verificando o limite de dados processados por um sistema até que ele não consiga mais processar esses dados, descobrindo assim o seu limite e carga máxima.
Ao desenvolver um software, sempre aparecem as perguntas: ”Quantos usuários isso aguenta? Será que dá conta? Qual ambiente preciso para rodar isso?”.
Os testes de carga existem exatamente para responder a isso, mas podem ir além, determinando também se a infraestrutura atual é suficiente para executar aquele aplicativo, e a sua sustentabilidade com o usuário forçando-o ao máximo, além da capacidade operacional de um aplicativo.
Também é possível conferir o número de usuários simultâneos que um app pode suportar, podendo ser escalonado para permitir um número maior de usuários ao mesmo tempo.

Os tipos de Teste de software

Os testes de software se dividem em dois tipos, os testes funcionais - conhecidos como Black Box - e os testes estruturais - conhecidos como White Box.
Os funcionais (Black Box) garantem que os requisitos funcionem conforme o especificado: testes de regressão, requisitos, controle, usabilidade, aceitação e integração. Os testes funcionais verificam se o que foi implantado é realmente o que foi especificado.
Já os estruturais (White Box) têm o objetivo de testar o código-fonte, cada linha de código, e os fluxos básicos. São eles: desempenho, stress, conformidade, contingência, segurança e, finalmente ,o de carga, que estamos apresentando neste texto. Esse teste existe para garantir que o software esteja bem estruturado internamente e funcionando corretamente.
Quando as questões sobre o software envolvem dúvidas sobre a quantidade de usuários que a aplicação suporta simultaneamente ou sobre a infraestrutura necessária para rodar a aplicação, é necessário realizar um teste de carga.

Então o que é de fato um Teste de Carga?

A princípio, o Teste de Carga surgiu para suprir as necessidades de aplicações com muitas interações, usuários e dados, ou seja, muita carga.
Podemos pensar no seguinte cenário: Supondo que uma loja online tenha em média 1000 usuários por dia, e esses usuários navegam no site, pesquisam produtos, fazem compras, enfim, interagem muito. Agora imagina como isso acontece durante a Black Friday, quando o número de usuários aumenta consideravelmente - em cenários é como esse é preciso garantir que sistema seja capaz de suportar todos esses usuários, sem afetar o desempenho.
Ainda pensando em um cenário de Black Friday, se o site demora mais de 1 minuto para responder ao usuário ou pior, se a api quebra, o prejuízo para essa loja será enorme. Todos esses transtornos podem ser evitados através do Teste de Carga que vai mapear todos esses pontos, analisar os gargalos e em seguida disponibilizar os ajustes necessários. Pode-se dizer que ele está relacionado com o desempenho do software, e deve ser feito antes de chegar a produção.
Assim é possível analisar e identificar fatores como capacidade de resposta, limite da capacidade, e ainda encontrar o limitante que pode ser a codificação ou o hardware. No entanto, ele não se propõe a encontrar problemas funcionais, já que é um teste estrutural.
Ao fazer testes em um site, é necessário pensar de forma escalonada, visando sempre a experiência do usuário, seja ele um ou 100 mil, acessando sua página ao mesmo tempo.
Nesse ponto, o papel do Quality Analyst (QA) na construção de um software, se mostra de extrema importância, pois é ele quem executará esse tipo de teste e garantir a qualidade da aplicação.

A importância do Teste de Carga

Como foi visto anteriormente, usando esse método, coloca-se carga - as solicitações do usuário - e verifica-se a resposta, depois é só verificar e analisar o comportamento do sistema sob essa carga inicialmente definida.
Assim, é possível encontrar a capacidade operacional máxima; se a estrutura atual é suficiente; a sustentabilidade da aplicação para pico de carga do usuário; número de usuários simultâneos que um aplicativo pode suportar e escalabilidade para permitir que mais usuários o acessem.
Dessa forma é possível evitar lentidão e até mesmo o desligamento do sistema durante uma carga elevada.
Outros pontos importantes também são analisados:
  • Longo tempo de carregamento - o teste avisa quanto tempo leva para carregar a página nos níveis de tráfego normal, de pico e também muito elevado. 
  • Tempo de resposta ruim - quanto tempo demora para responder às solicitações do usuário,  exemplo de 1 minuto para carregar a página.
  • Escalabilidade pobre - conforme o número de usuários aumenta, a aplicação deve conseguir processar esse grande número de solicitações sem diminuir o desempenho. O teste ajuda a ver se a aplicação mede essa escala quando a carga aumenta.
  • Gargalos - pode ser utilização da CPU, memória, rede, software, disco, configuração do hardware.
Empresas como Magalu, Ebay, Allianz e outras, adotam o teste de carga como parte de seus processos de desenvolvimento. Já a Laborit, empresa investidora do Techpost, só o utliza em projetos pontuais, como conta Isabelli Batista, Quality Analyst da Lab.

Não usamos o teste de carga em todos os produtos, mas em alguns projetos ele faz a diferença. No Bold BI, que usamos no consultor mais e no portal mais, por exemplo, foi fundamental, já fizemos teste em grande escala para simular as cargas que seriam futuramente inseridas.

- Isabelli Batista. Software Quality Analyst na Laborit
O papel do QA - Quality Analyst - na construção de um software envolve também a realização desse tipo de teste, além de outras responsabilidades, que juntas garantem a qualidade da aplicação.
Já em relação às métricas, são muitas, mas podemos listar aqui três, que servem para estimar cada aspecto da aplicação e medir o sucesso da carga: latência, porcentagem de erros e utilização da CPU.
A latência mede a quantidade de tempo que leva para enviar informações de um ponto a outro. Já a porcentagem de erros, como o próprio nome diz, mede a porcentagem de solicitações com erros em relação a todas as solicitações da aplicação, e, por fim, a utilização da CPU que é a soma do trabalho gerenciado pela CPU.
Photo by Laborit. Isabelli Batista Software Quality Analyst

O teste de carga ajuda os desenvolvedores a encontrar os principais gargalos quando possui um tráfego elevado em suas aplicações. É um teste que devemos fazer pensando sempre na quantidade de usuários em simultâneo, na capacidade da API e se o desempenho do site vai diminuir - não pensar nesses cenários é um grande risco. Seja por serem muitos dados ou muitos usuários, nossa aplicação tem que conseguir atender a todos.

- Isabelli Batista. Software Quality Analyst na Laborit
É importante analisar, será mesmo que essa empresa tem que fazer um teste de carga? É um teste de volume? Ou de estresse? Muitas empresas o procuram para verificar se a aplicação suporta o volume de acessos que foi planejado.
Dentro do teste de carga existem outras categorias, mas vamos citar aqui as mais utilizadas, que são: volume, pico e estresse.
O de volume é muito usado pelos cientistas de dados e basicamente é alimentado com volumes de dados com o objetivo de analisar como a aplicação responde a eles, também é muito usado para Big Data.
Já o de pico se concentra em pequenas explosões de volume, com ele aumenta a taxa de transferência e assim analisa-se a resposta.
Por outro lado, o de estresse é realizado sob condições extremas com o intuito de encontrar o seu limite, quando ele falha., além de analisar se essas falham são provenientes da falta de dados, falta de memória ou outro motivo, ele mostra os limites do sistema e o que é “quebrado” primeiro, usado em sites de vendas e principalmente em datas comerciais.

Um pouco da prática

É importante reforçar que o teste de carga deve ser feito em ambientes de homologação, antes de estar em produção, pois dependendo do tamanho da carga colocada, a aplicação pode cair.

-
Para quem tem curiosidade de como são feitos esses testes, indico dois sites que podem ser usados: JPetStore e Blaze Demo.
Mas lembre-se: Antes de tudo é necessário definir o objetivo do teste, configurar o ambiente e criar os cenários, depois é só executar e por fim analisar os resultados. Com isso é possível avaliar, por exemplo:
  • Número de usuários que o sistema deveria suportar por cenário;
  • Número de usuários que o sistema deveria suportar por cenário;
  • Número de usuários que o sistema deveria suportar por cenário;
  • Número de usuários que o sistema deveria suportar por cenário;
  • Número de usuários que o sistema deveria suportar por cenário;
Isabelli Batista. Software Quality Analyst na Laborit
Existem várias ferramentas disponíveis para execução do Teste, mas qual usar vai depender do seu orçamento, do projeto e do negócio. É possível realizá-lo em sistemas automatizados e até manualmente, no entanto, isso custaria muitos usuários e não produziria relatórios e métricas tão precisas quanto um sistema automatizado pode gerar.
Abaixo estão algumas das ferramentas mais utilizadas para a realização do Teste de Carga:
Loadium: pode facilmente gravar, navegar, fazer upload, editar e executar. Compatível com Apache JMeter. Execução de testes sem aplicativos de script de teste. Gravando todas as solicitações HTTP / S feitas pelo navegador.
Jmeter: é gratuito, 100% Java, Open Source. Disponibiliza diversos tipos de requisições além de controladores lógicos e controles condicionais para serem utilizados na construção de planos de teste.
K6: é 100% JavaScript, Open Source, Gratuito. Com ele voce pode testar APIs, Microserviços, sites entre outros.
Só é possível construir produtos que as pessoas amam, quando se compreende a profundidade de cada projeto, colocando o foco na experiência do usuário e na qualidade do produto. Por isso os testes de software são tão importantes, pois ajudam a garantir que o que foi desenvolvido está atendo às expectativas, de todos os pontos de vista.
*Texto escrito com a colaboração de Isabelli Batista. Software Quality Analyst na Laborit

Inscreva-se para a inovação

Receba as últimas notícias sobre inovação direto na sua caixa de e-mail.
Seus dados estão protegidos conosco. Conheça nossaPolítica de Privacidade
Feito por humanos comem SP, Brasil © 2021 Techpost, Techpost Logo e Laborit Ltda e Laborit logo são marcas registradas.
Olá! Leu até aqui? Você se preocupa com os mínimos detalhes, mesmo. A gente também. Por isso o time Techpost/Laborit está sempre trabalhando para fazer a plataforma digital de trabalho perfeita para você ;).
O Techpost, a Laborit e Lab são marcas proprietárias que operam o site https://techpost.com.br, onde você pode encontrar informações sobre nossos produtos e serviços e as últimas novidades do mundo da tecnologia. Estes Termos e Condições do Site descrevem os direitos e obrigações de um usuário ou visitante não registrado do site (“usuário” ou “você”) em relação ao uso do Site.
Ao acessar ou usar o Site de qualquer forma, incluindo como um visitante não registrado, você concorda em obedecer a estes Termos do Site e à nossa Política de Privacidade, que está disponível no Site.
Estes Termos do site se aplicam apenas ao seu uso do site e do conteúdo nele disponibilizado ou por meio dele, como um usuário ou visitante não registrado do. Se você usar ou acessar qualquer um de nossos serviços baseados na web de acesso restrito (ou seja, aqueles que exigem um login), a nossa plataforma, produtos, programa de referência ou outros serviços que fornecemos, o uso de tal espaço, serviços ou programa está sujeito aos termos e condições que você recebeu e aceitou quando se inscreveu nesse espaço, serviços ou programa.
De vez em quando, podemos fazer modificações, exclusões ou acréscimos ao Site ou a estes Termos. Seu uso continuado do Site após a publicação de quaisquer alterações aos Termos constitui aceitação dessas alterações.
Coletamos informações sobre seus dispositivos e sua localização, e seu uso de nossos serviços, incluindo por meio de cookies, pixels, web beacons, registros e outras tecnologias da Internet.
Você pode ler mais sobre como utilizamos as Informações Pessoais que são coletadas clicando no link conheça nossa Política de Privacidade.
Referências a “você” nesta Política, “você” significa qualquer pessoa que use nossos sites, aplicativos ou outros serviços. Se você é um funcionário ou candidato, a Política de Privacidade do Techpost e da Laborit para Dados Pessoais de um funcionário ou um Candidato, explica como usamos as Informações Pessoais no contexto de nossa relação empregatícia com você.
Se você é um funcionário ou candidato que usa nossos serviços, esta Política explica como coletamos, usamos e divulgamos suas Informações Pessoais no contexto de seu uso de nossos Serviços.